L'API Live consente interazioni vocali e video bidirezionali a bassa latenza con Gemini. Utilizzando l'API Live, puoi offrire agli utenti finali l'esperienza di conversazioni vocali naturali e simili a quelle umane, nonché la possibilità di interrompere le risposte del modello utilizzando i comandi vocali. L'API Live può elaborare input di testo, audio e video e fornire output di testo e audio.
Per saperne di più sull'API Live, consulta la pagina API Live.
Funzionalità
L'API Live include le seguenti funzionalità principali:
- Multimodalità: il modello può vedere, sentire e parlare.
- Interazione in tempo reale a bassa latenza: il modello può fornire risposte rapide.
- Memoria della sessione: il modello conserva la memoria di tutte le interazioni all'interno di una singola sessione, ricordando le informazioni sentite o viste in precedenza.
- Supporto della chiamata di funzioni, dell'esecuzione di codice e della ricerca come strumento: puoi integrare il modello con servizi e origini dati esterni.
L'API Live è progettata per la comunicazione server-server.
Per le app web e mobile, ti consigliamo di utilizzare l'integrazione dei nostri partner su Daily.
Modelli supportati
- Gemini 2.5 Flash con audio nativo dell'API Live
Anteprima - Gemini 2.0 Flash con API Live
Anteprima - Gemini 2.5 Flash
Inizia
Per provare l'API live, vai a Vertex AI Studio, quindi fai clic su Avvia sessione.
L'API Live è un'API stateful che utilizza WebSockets.
Questa sezione mostra un esempio di come utilizzare l'API Live per la generazione di testo, utilizzando Python 3.9+.
Python
Installa
pip install --upgrade google-genai
Per saperne di più, consulta la documentazione di riferimento dell'SDK.
Imposta le variabili di ambiente per utilizzare l'SDK Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Guida all'integrazione
Questa sezione descrive il funzionamento dell'integrazione con l'API Live.
Sessioni
Una connessione WebSocket stabilisce una sessione tra il client e il server Gemini.
Dopo che un client avvia una nuova connessione, la sessione può scambiare messaggi con il server per:
- Invia testo, audio o video al server Gemini.
- Ricevere richieste di audio, testo o chiamate di funzioni dal server Gemini.
La configurazione della sessione viene inviata nel primo messaggio dopo la connessione. Una configurazione della sessione include il modello, i parametri di generazione, le istruzioni di sistema e gli strumenti.
Vedi la seguente configurazione di esempio:
{
"model": string,
"generationConfig": {
"candidateCount": integer,
"maxOutputTokens": integer,
"temperature": number,
"topP": number,
"topK": integer,
"presencePenalty": number,
"frequencyPenalty": number,
"responseModalities": [string],
"speechConfig": object
},
"systemInstruction": string,
"tools": [object]
}
Per maggiori informazioni, consulta BidiGenerateContentSetup.
Inviare messaggi
I messaggi sono oggetti in formato JSON scambiati tramite la connessione WebSocket.
Per inviare un messaggio, il client deve inviare un oggetto JSON tramite una connessione WebSocket aperta. L'oggetto JSON deve contenere esattamente uno dei campi del seguente insieme di oggetti:
{
"setup": BidiGenerateContentSetup,
"clientContent": BidiGenerateContentClientContent,
"realtimeInput": BidiGenerateContentRealtimeInput,
"toolResponse": BidiGenerateContentToolResponse
}
Messaggi dei clienti supportati
Consulta i messaggi del client supportati nella tabella seguente:
Messaggio | Descrizione |
---|---|
BidiGenerateContentSetup |
Configurazione della sessione da inviare nel primo messaggio |
BidiGenerateContentClientContent |
Aggiornamento incrementale dei contenuti della conversazione corrente inviato dal client |
BidiGenerateContentRealtimeInput |
Input audio o video in tempo reale |
BidiGenerateContentToolResponse |
Risposta a un ToolCallMessage ricevuto dal server |
Ricevere messaggi
Per ricevere messaggi da Gemini, ascolta l'evento WebSocket "message", quindi analizza il risultato in base alla definizione dei messaggi del server supportati.
Vedi quanto segue:
ws.addEventListener("message", async (evt) => { if (evt.data instanceof Blob) { // Process the received data (audio, video, etc.) } else { // Process JSON response } });
I messaggi del server avranno esattamente uno dei campi del seguente set di oggetti:
{
"setupComplete": BidiGenerateContentSetupComplete,
"serverContent": BidiGenerateContentServerContent,
"toolCall": BidiGenerateContentToolCall,
"toolCallCancellation": BidiGenerateContentToolCallCancellation
"usageMetadata": UsageMetadata
"goAway": GoAway
"sessionResumptionUpdate": SessionResumptionUpdate
"inputTranscription": BidiGenerateContentTranscription
"outputTranscription": BidiGenerateContentTranscription
}
Messaggi del server supportati
Consulta i messaggi del server supportati nella tabella seguente:
Messaggio | Descrizione |
---|---|
BidiGenerateContentSetupComplete |
Un messaggio BidiGenerateContentSetup dal cliente, inviato al termine della configurazione |
BidiGenerateContentServerContent |
Contenuti generati dal modello in risposta a un messaggio del cliente |
BidiGenerateContentToolCall |
Richiesta al client di eseguire le chiamate di funzione e restituire le risposte con gli ID corrispondenti |
BidiGenerateContentToolCallCancellation |
Inviato quando una chiamata di funzione viene annullata perché l'utente interrompe l'output del modello |
UsageMetadata |
Un report del numero di token utilizzati finora dalla sessione |
GoAway |
Un segnale che indica che la connessione attuale verrà interrotta a breve |
SessionResumptionUpdate |
Un checkpoint della sessione, che può essere ripreso |
BidiGenerateContentTranscription |
Una trascrizione del discorso dell'utente o del modello |
Aggiornamenti incrementali dei contenuti
Utilizza gli aggiornamenti incrementali per inviare l'input di testo, stabilire il contesto della sessione o ripristinarlo. Per i contesti brevi, puoi inviare interazioni turn-by-turn per rappresentare la sequenza esatta di eventi. Per contesti più lunghi, è consigliabile fornire un riepilogo di un singolo messaggio per liberare la finestra contestuale per le interazioni successive.
Vedi il seguente messaggio di contesto di esempio:
{ "clientContent": { "turns": [ { "parts":[ { "text": "" } ], "role":"user" }, { "parts":[ { "text": "" } ], "role":"model" } ], "turnComplete": true } }
Tieni presente che, sebbene le parti dei contenuti possano essere di tipo functionResponse
,
BidiGenerateContentClientContent
non deve essere utilizzato per fornire una risposta
alle chiamate di funzioni emesse dal modello. BidiGenerateContentToolResponse
deve essere utilizzato invece. BidiGenerateContentClientContent
deve essere utilizzato solo per stabilire il contesto precedente o fornire l'input di testo alla conversazione.
Streaming di audio e video
Esecuzione del codice
Per scoprire di più sull'esecuzione del codice, consulta Esecuzione del codice.
Chiamata di funzione
Tutte le funzioni devono essere dichiarate all'inizio della sessione inviando le definizioni degli strumenti
come parte del messaggio BidiGenerateContentSetup
.
Definisci le funzioni utilizzando JSON, in particolare con un sottoinsieme selezionato del formato dello schema OpenAPI. Una singola dichiarazione di funzione può includere i seguenti parametri:
name (stringa): l'identificatore univoco della funzione all'interno della chiamata API.
description (stringa): una spiegazione completa dello scopo e delle funzionalità della funzione.
parametri (oggetto): definisce i dati di input richiesti dalla funzione.
type (stringa): specifica il tipo di dati complessivo, ad esempio object.
properties (oggetto): elenca i singoli parametri, ciascuno con:
- type (stringa): il tipo di dati del parametro, ad esempio stringa, numero intero, booleano.
- description (stringa): una spiegazione chiara dello scopo del parametro e del formato previsto.
required (array): un array di stringhe che elenca i nomi dei parametri obbligatori per il funzionamento della funzione.
Per esempi di codice di una dichiarazione di funzione che utilizza i comandi curl, vedi Chiamata di funzione con l'API Gemini. Per esempi di come creare dichiarazioni di funzioni utilizzando gli SDK dell'API Gemini, consulta l'esercitazione Chiamata di funzione.
Da un singolo prompt, il modello può generare più chiamate di funzione e il codice necessario per concatenare i relativi output. Questo codice viene eseguito in un ambiente sandbox, generando i successivi messaggi BidiGenerateContentToolCall
. L'esecuzione viene sospesa finché non sono disponibili i risultati di ogni chiamata di funzione, il che garantisce l'elaborazione sequenziale.
Il cliente deve rispondere con BidiGenerateContentToolResponse
.
Per saperne di più, consulta Introduzione alla chiamata di funzioni.
Formati audio
Consulta l'elenco dei formati audio supportati.
Istruzioni di sistema
Puoi fornire istruzioni di sistema per controllare meglio l'output del modello e specificare il tono e il sentimento delle risposte audio.
Le istruzioni di sistema vengono aggiunte al prompt prima dell'inizio dell'interazione e rimangono attive per l'intera sessione.
Le istruzioni di sistema possono essere impostate solo all'inizio di una sessione, subito dopo la connessione iniziale. Per fornire ulteriori input al modello durante la sessione, utilizza gli aggiornamenti incrementali dei contenuti.
Interruzioni
Gli utenti possono interrompere l'output del modello in qualsiasi momento. Quando
il rilevamento dell'attività vocale (VAD) rileva un'interruzione, la generazione
in corso viene annullata e scartata. Nella cronologia della sessione vengono conservate solo le informazioni già inviate al cliente. Il server quindi
invia un messaggio BidiGenerateContentServerContent
per segnalare l'interruzione.
Inoltre, il server Gemini scarta tutte le chiamate di funzione in attesa
e invia un messaggio BidiGenerateContentServerContent
con gli
ID delle chiamate annullate.
Voci
Per specificare una voce, imposta voiceName
all'interno dell'oggetto speechConfig
,
nell'ambito della configurazione della sessione.
Vedi la seguente rappresentazione JSON di un oggetto speechConfig
:
{ "voiceConfig": { "prebuiltVoiceConfig": { "voiceName": "VOICE_NAME" } } }
Per visualizzare l'elenco delle voci supportate, consulta Modificare le impostazioni di voce e lingua.
Limitazioni
Quando pianifichi il tuo progetto, tieni presente le seguenti limitazioni dell'API Live e di Gemini 2.0.
Autenticazione client
L'API Live fornisce solo l'autenticazione da server a server e non è consigliata per l'utilizzo diretto da parte del client. L'input del client deve essere instradato tramite un server delle applicazioni intermedio per l'autenticazione sicura con l'API Live.
Durata massima della sessione
La durata massima predefinita di una sessione di conversazione è di 10 minuti. Per maggiori informazioni, consulta Durata della sessione.
Rilevamento dell'attività vocale (VAD)
Per impostazione predefinita, il modello esegue automaticamente il rilevamento dell'attività vocale (VAD) su
un flusso di input audio continuo. VAD può essere configurato con il campo
RealtimeInputConfig.AutomaticActivityDetection
del messaggio di configurazione.
Quando il flusso audio viene messo in pausa per più di un secondo (ad esempio,
quando l'utente disattiva il microfono), viene inviato un evento AudioStreamEnd
per svuotare l'audio memorizzato nella cache. Il client può riprendere l'invio
dei dati audio in qualsiasi momento.
In alternativa, il VAD automatico può essere disattivato impostando
RealtimeInputConfig.AutomaticActivityDetection.disabled
su true
nel messaggio
di configurazione. In questa configurazione, il client è responsabile del rilevamento della voce dell'utente e dell'invio dei messaggi ActivityStart
e ActivityEnd
al momento opportuno. Un AudioStreamEnd
non viene inviato in
questa configurazione. Invece, qualsiasi interruzione dello stream viene contrassegnata da
un messaggio ActivityEnd
.
Limitazioni aggiuntive
L'endpointing manuale non è supportato.
Gli input e gli output audio influiscono negativamente sulla capacità del modello di utilizzare la chiamata di funzioni.
Conteggio token
Il conteggio dei token non è supportato.
Limiti di frequenza
Si applicano i seguenti limiti di frequenza:
- 5000 sessioni simultanee per chiave API
- 4 milioni di token al minuto
Messaggi ed eventi
BidiGenerateContentClientContent
Aggiornamento incrementale della conversazione corrente inviata dal client. Tutti i contenuti qui vengono aggiunti in modo incondizionato alla cronologia delle conversazioni e utilizzati come parte del prompt per il modello per generare contenuti.
Un messaggio qui interromperà qualsiasi generazione di modelli in corso.
Campi | |
---|---|
turns[] |
Facoltativo. I contenuti aggiunti alla conversazione corrente con il modello. Per le query a singolo turno, si tratta di una singola istanza. Per le query multi-turno, questo è un campo ripetuto che contiene la cronologia della conversazione e l'ultima richiesta. |
turn_complete |
Facoltativo. Se true, indica che la generazione di contenuti del server deve iniziare con il prompt attualmente accumulato. In caso contrario, il server attenderà altri messaggi prima di iniziare la generazione. |
BidiGenerateContentRealtimeInput
Input dell'utente inviati in tempo reale.
Questo è diverso da ClientContentUpdate
per alcuni aspetti:
- Possono essere inviati continuamente senza interruzioni alla generazione del modello.
- Se è necessario combinare i dati intercalati tra
ClientContentUpdate
eRealtimeUpdate
, il server tenta di ottimizzare la risposta migliore, ma non ci sono garanzie. - La fine del turno non è specificata in modo esplicito, ma deriva dall'attività dell'utente (ad esempio, la fine del discorso).
- Ancora prima della fine del turno, i dati vengono elaborati in modo incrementale per ottimizzare l'inizio della risposta del modello.
- Viene sempre considerato l'input dell'utente (non può essere utilizzato per popolare la cronologia delle conversazioni).
Campi | |
---|---|
media_chunks[] |
Facoltativo. Dati in linea in byte per l'input multimediale. |
activity_start |
Facoltativo. Indica l'inizio dell'attività utente. Può essere inviato solo se il rilevamento automatico (ovvero lato server) dell'attività è disattivato. |
activity_end |
Facoltativo. Indica la fine dell'attività utente. Può essere inviato solo se il rilevamento automatico (ovvero lato server) dell'attività è disattivato. |
ActivityEnd
Questo tipo non contiene campi.
Indica la fine dell'attività utente.
ActivityStart
Questo tipo non contiene campi.
È necessario impostare un solo campo alla volta in questo messaggio. Indica l'inizio dell'attività utente.
BidiGenerateContentServerContent
Aggiornamento incrementale del server generato dal modello in risposta ai messaggi del client.
I contenuti vengono generati il più rapidamente possibile e non in tempo reale. I client possono scegliere di memorizzarlo nel buffer e riprodurlo in tempo reale.
Campi | |
---|---|
turn_complete |
Solo output. Se true, indica che la generazione del modello è terminata. La generazione inizierà solo in risposta a ulteriori messaggi del client. Può essere impostato insieme a |
interrupted |
Solo output. Se true, indica che un messaggio del client ha interrotto la generazione del modello corrente. Se il client riproduce i contenuti in tempo reale, questo è un buon segnale per interrompere e svuotare la coda corrente. Se il client riproduce i contenuti in tempo reale, questo è un buon segnale per interrompere e svuotare la coda di riproduzione corrente. |
generation_complete |
Solo output. Se true, indica che la generazione del modello è terminata. Quando il modello viene interrotto durante la generazione, non viene visualizzato il messaggio "generation_complete" nel turno interrotto, ma viene visualizzato il messaggio "interrupted > turn_complete". Quando il modello presuppone la riproduzione in tempo reale, si verifica un ritardo tra generation_complete e turn_complete causato dall'attesa del modello per il completamento della riproduzione. |
grounding_metadata |
Solo output. I metadati specificano le fonti utilizzate per basare i contenuti generati. |
input_transcription |
Facoltativo. Inserisci la trascrizione. La trascrizione è indipendente dal turno del modello, il che significa che non implica alcun ordine tra la trascrizione e il turno del modello. |
output_transcription |
Facoltativo. Trascrizione dell'output. La trascrizione è indipendente dal turno del modello, il che significa che non implica alcun ordine tra la trascrizione e il turno del modello. |
model_turn |
Solo output. I contenuti generati dal modello nell'ambito della conversazione corrente con l'utente. |
Trascrizione
Messaggio di trascrizione audio.
Campi | |
---|---|
text |
Facoltativo. Testo della trascrizione. |
finished |
Facoltativo. Il valore booleano indica la fine della trascrizione. |
BidiGenerateContentSetup
Messaggio da inviare nel primo e unico messaggio del cliente. Contiene la configurazione che verrà applicata per la durata della sessione di streaming.
I client devono attendere un messaggio BidiGenerateContentSetupComplete
prima di inviare altri messaggi.
Campi | |
---|---|
model |
Obbligatorio. Il nome completo del modello dell'editore. Formato del modello publisher: |
generation_config |
Facoltativo. Configurazione della generazione. I seguenti campi non sono supportati:
|
system_instruction |
Facoltativo. L'utente ha fornito istruzioni di sistema per il modello. Nota: nei componenti deve essere utilizzato solo testo e i contenuti di ogni componente saranno in un paragrafo separato. |
tools[] |
Facoltativo. Un elenco di Un |
session_resumption |
Facoltativo. Configura il meccanismo di ripresa della sessione. Se inclusi, il server invierà periodicamente messaggi |
context_window_compression |
Facoltativo. Configura il meccanismo di compressione della finestra contestuale. Se incluso, il server comprimerà la finestra contestuale per adattarla alla lunghezza specificata. |
realtime_input_config |
Facoltativo. Configura la gestione dell'input in tempo reale. |
input_audio_transcription |
Facoltativo. La trascrizione dell'input è allineata alla lingua dell'audio di input. |
output_audio_transcription |
Facoltativo. La trascrizione dell'output è allineata al codice lingua specificato per l'audio di output. |
AudioTranscriptionConfig
Questo tipo non contiene campi.
La configurazione della trascrizione audio.
BidiGenerateContentSetupComplete
Questo tipo non contiene campi.
Inviato in risposta a un messaggio BidiGenerateContentSetup
del cliente.
BidiGenerateContentToolCall
Richiedi al cliente di eseguire function_calls
e restituire le risposte con i id
corrispondenti.
Campi | |
---|---|
function_calls[] |
Solo output. La chiamata di funzione da eseguire. |
BidiGenerateContentToolCallCancellation
Notifica al cliente che un ToolCallMessage
emesso in precedenza con i id
specificati non avrebbe dovuto essere eseguito e deve essere annullato. Se si sono verificati effetti collaterali a seguito di queste chiamate di strumenti, i client potrebbero tentare di annullarle. Questo messaggio viene visualizzato solo nei casi in cui i client interrompono i turni del server.
Campi | |
---|---|
ids[] |
Solo output. Gli ID delle chiamate di strumenti da annullare. |
BidiGenerateContentToolResponse
Risposta generata dal client a un ToolCall
ricevuto dal server. I singoli oggetti FunctionResponse
vengono associati ai rispettivi oggetti FunctionCall
tramite il campo id
.
Tieni presente che nelle API GenerateContent unarie e di streaming lato server la chiamata di funzione avviene scambiando le parti Content
, mentre nelle API GenerateContent bidirezionali la chiamata di funzione avviene tramite questo insieme dedicato di messaggi.
Campi | |
---|---|
function_responses[] |
Facoltativo. La risposta alle chiamate di funzione. |
RealtimeInputConfig
Configura il comportamento di input in tempo reale in BidiGenerateContent
.
Campi | |
---|---|
automatic_activity_detection |
Facoltativo. Se non viene impostato, il rilevamento automatico dell'attività è abilitato per impostazione predefinita. Se il rilevamento vocale automatico è disattivato, il client deve inviare segnali di attività. |
activity_handling |
Facoltativo. Definisce l'effetto dell'attività. |
turn_coverage |
Facoltativo. Definisce quale input è incluso nel turno dell'utente. |
ActivityHandling
I diversi modi di gestire l'attività utente.
Enum | |
---|---|
ACTIVITY_HANDLING_UNSPECIFIED |
Se non specificato, il comportamento predefinito è START_OF_ACTIVITY_INTERRUPTS . |
START_OF_ACTIVITY_INTERRUPTS |
Se il valore è true, l'inizio dell'attività interromperà la risposta del modello (anche chiamata "interruzione"). La risposta corrente del modello verrà interrotta nel momento dell'interruzione. Questo è il comportamento standard. |
NO_INTERRUPTION |
La risposta del modello non verrà interrotta. |
AutomaticActivityDetection
Configura il rilevamento automatico dell'attività.
Campi | |
---|---|
start_of_speech_sensitivity |
Facoltativo. Determina la probabilità di rilevamento del parlato. |
end_of_speech_sensitivity |
Facoltativo. Determina la probabilità che il discorso rilevato sia terminato. |
prefix_padding_ms |
Facoltativo. La durata richiesta del parlato rilevato prima dell'inizio del parlato viene confermata. Più basso è questo valore, più sensibile è il rilevamento dell'inizio del discorso e più breve può essere il discorso riconosciuto. Tuttavia, ciò aumenta anche la probabilità di falsi positivi. |
silence_duration_ms |
Facoltativo. La durata richiesta del silenzio (o non parlato) rilevato prima che venga eseguito il commit della fine del discorso. Maggiore è questo valore, più lunghi possono essere i silenzi nel discorso senza interrompere l'attività dell'utente, ma ciò aumenterà la latenza del modello. |
disabled |
Facoltativo. Se questa impostazione è attiva, l'input vocale e di testo rilevato viene conteggiato come attività. Se disattivato, il client deve inviare indicatori di attività. |
EndSensitivity
Fine della sensibilità vocale.
Enum | |
---|---|
END_SENSITIVITY_UNSPECIFIED |
Il valore predefinito è END_SENSITIVITY_LOW. |
END_SENSITIVITY_HIGH |
Il rilevamento automatico termina più spesso il discorso. |
END_SENSITIVITY_LOW |
Il rilevamento automatico termina il discorso meno spesso. |
StartSensitivity
Inizio della sensibilità vocale.
Enum | |
---|---|
START_SENSITIVITY_UNSPECIFIED |
Il valore predefinito è START_SENSITIVITY_LOW. |
START_SENSITIVITY_HIGH |
Il rilevamento automatico rileverà l'inizio del discorso più spesso. |
START_SENSITIVITY_LOW |
Il rilevamento automatico rileverà l'inizio della conversazione meno spesso. |
TurnCoverage
Opzioni relative all'input incluso nel turno dell'utente.
Enum | |
---|---|
TURN_COVERAGE_UNSPECIFIED |
Se non specificato, il comportamento predefinito è TURN_INCLUDES_ALL_INPUT . |
TURN_INCLUDES_ONLY_ACTIVITY |
Il turno dell'utente include solo l'attività dall'ultimo turno, escludendo l'inattività (ad es. il silenzio nel flusso audio). |
TURN_INCLUDES_ALL_INPUT |
Il turno dell'utente include tutti gli input in tempo reale dall'ultimo turno, inclusa l'inattività (ad es. silenzio nel flusso audio). Questo è il comportamento standard. |
UsageMetadata
Metadati sull'utilizzo dei contenuti memorizzati nella cache.
Campi | |
---|---|
total_token_count |
Numero totale di token utilizzati dai contenuti memorizzati nella cache. |
text_count |
Numero di caratteri di testo. |
image_count |
Numero di immagini. |
video_duration_seconds |
Durata del video in secondi. |
audio_duration_seconds |
Durata dell'audio in secondi. |
GoAway
A breve il server non sarà in grado di servire il client.
Campi | |
---|---|
time_left |
Il tempo rimanente prima che la connessione venga terminata come INTERROTTA. Il tempo minimo restituito qui è specificato in modo diverso insieme ai limiti di frequenza per un determinato modello. |
SessionResumptionUpdate
Aggiornamento dello stato di ripresa della sessione.
Inviato solo se è stato impostato BidiGenerateContentSetup.session_resumption
.
Campi | |
---|---|
new_handle |
Nuovo handle che rappresenta lo stato che può essere ripristinato. Vuoto se |
resumable |
True se la sessione può essere ripresa a questo punto. Potrebbe non essere possibile riprendere la sessione in alcuni punti. In questo caso, inviamo l'aggiornamento con new_handle vuoto e resumable=false. Un esempio di questo caso potrebbe essere un modello che esegue chiamate di funzioni o che genera semplicemente. La ripresa della sessione (utilizzando il token della sessione precedente) in questo stato comporterà una perdita di dati. |
last_consumed_client_message_index |
Indice dell'ultimo messaggio inviato dal client incluso nello stato rappresentato da questo SessionResumptionToken. Inviato solo quando è impostato La presenza di questo indice consente agli utenti di riconnettersi in modo trasparente ed evitare il problema di perdere parte dell'input audio/video in tempo reale. Se il client vuole disconnettersi temporaneamente (ad esempio a seguito della ricezione di GoAway), può farlo senza perdere lo stato memorizzando nel buffer i messaggi inviati dall'ultimo Non verrà utilizzato per il "ripristino dello stato" in un secondo momento. In questi casi, è probabile che i frame audio e video parziali non siano necessari. |
Passaggi successivi
- Scopri di più sulla chiamata di funzioni.
- Per esempi, consulta il riferimento alla chiamata di funzione.