In combinazione con gli intent, le scene sono l'altro elemento di base principale del modello di conversazione. Le scene rappresentano singoli stati della conversazione e il loro scopo principale è organizzare la conversazione in blocchi logici, eseguire attività e restituire richieste agli utenti.
Ecco alcune funzionalità delle scene:
- Esecuzione in loop: le scene vengono eseguite all'interno di un loop finché non soddisfano i criteri di transizione da te definiti. In questo modo puoi creare flussi logici di controllo in modo molto più efficiente all'interno di una singola scena.
- Separazione dei dialoghi: in combinazione con gli intent, le scene ti consentono di raggruppare le finestre di dialogo in blocchi logici, offrendoti modi semplici per creare coppie di richieste dell'utente e di risposta all'azione.
- Ambito della corrispondenza di intent: poiché può essere attiva una sola scena alla volta, puoi limitare la corrispondenza di intent a scene di tua scelta e fare in modo che corrispondano solo quando queste scene sono attive.
- Riempimento slot: puoi utilizzare il riempimento degli slot all'interno di una scena per raccogliere più parti dell'input utente digitato, senza dover creare più intent.
- Condizioni nella scena: puoi controllare lo spazio di archiviazione di slot, sessioni, utenti e home per eseguire una logica condizionale semplice senza attivare un webhook.
Puoi definire le scene come parte del tuo modello di conversazione come scena personalizzata. La logica di conversazione dell'assistente include anche scene di sistema che forniscono funzionalità standard per la conversazione.
Scene personalizzate
Una scena personalizzata è un componente di base della logica conversazionale che fa parte del modello di conversazione dell'Azione. Le scene personalizzate hanno fasi che definiscono come e quando inizia, chiamate Attivazione, l'elaborazione conversazionale che esegue, chiamata Ciclo di vita di esecuzione, e il modo in cui termina la scena, chiamata Transizione:
- Attivazione: prima di poter eseguire una scena, devi attivarla tramite una corrispondenza di intent o una transizione globale.
- Esecuzione: quando una scena è attiva, viene eseguita in un ciclo di vita ben definito che ti consente di eseguire una serie di attività come il riempimento degli slot, il controllo condizionale, la generazione di prompt e l'attivazione di eventi webhook.
- Transizione: quando una scena soddisfa i criteri da te definiti, ad esempio l'abbinamento di un intent o il completamento del riempimento degli slot, puoi passare a un'altra scena per applicare ancora più logica. In alternativa, puoi passare alla scena di sistema Termina conversazione, che termina la conversazione con l'utente.
Attivazione
Prima di poter essere eseguita, una scena deve essere attiva. Può essere attiva una sola scena alla volta. Puoi attivare le scene nei seguenti modi:
- Chiamata: quando l'input utente corrisponde al modello linguistico di un intent globale, puoi attivare una scena per elaborare la chiamata.
- Transizione da una scena statica: quando una scena soddisfa i criteri di transizione, puoi definire una transizione a un'altra scena.
- Transizione dinamica di una scena: all'interno di un gestore di webhook puoi passare in modo programmatico a un'altra scena.
Ciclo di vita di esecuzione
Quando una scena è attiva, viene eseguita all'interno di un ciclo di vita ben definito che si ripete finché la scena non soddisfa i criteri di transizione che hai impostato. Il ciclo di vita dell'esecuzione di una scena è separato in fasi facoltative che vengono eseguite nel seguente ordine:
All'attivazione: questa fase viene eseguita una sola volta quando viene attivata una scena. Puoi attivare un webhook o chiedere all'utente di eseguire una configurazione una tantum della scena.
Condizioni - Le condizioni consentono di valutare determinati criteri prima di avanzare le fasi del ciclo di vita, attivare un webhook o inviare richieste. In questa fase è possibile definire criteri di transizione per uscire dal ciclo di esecuzione.
Riempimento slot: una scena può chiedere automaticamente agli utenti fino a quando non raccoglie tutti gli slot richiesti (dati digitati). Una scena richiede un singolo slot ogni volta nel ciclo di esecuzione. Se mancano slot, il ciclo di vita della scena torna alla fase di riempimento degli slot e visualizza la richiesta del successivo slot richiesto. In questa fase puoi definire criteri di transizione per uscire dal ciclo di esecuzione.
Prompt: l'assistente fornisce la coda dei prompt all'utente e cancella la coda. La coda dei prompt è la raccolta unita di prompt aggregati dall'ultima volta in cui questa fase ha cancellato la coda.
Input: l'assistente consuma e restituisce l'input utente nella scena, così puoi elaborarlo, ad esempio la corrispondenza di intent (intent globali o intent utente all'interno di una scena), la prosecuzione del riempimento degli slot (se non è completa) o la gestione di nessuna corrispondenza o nessun errore di input. Questa fase può definire criteri di transizione per uscire dal loop di esecuzione. Se non viene eseguita la transizione, il ciclo di esecuzione torna alla fase delle condizioni.
Le seguenti sezioni descrivono in modo più dettagliato ogni fase del ciclo di vita.
Alla ricezione
L'invio è l'unica fase che non viene eseguita nel loop di esecuzione di una scena. Esegue l'inizializzazione una tantum della scena nel seguente ordine:
- Se il runtime dell'assistente è in grado di riempire qualsiasi slot di un intent corrispondente in precedenza, lo fa ora per preparare la scena per la fase di riempimento degli slot. Ad esempio, alcuni input utente potrebbero corrispondere a un intent e fornire un'area. La corrispondenza di intent attiva una scena e può occupare un'area annuncio in una scena se i nomi degli slot corrispondono.
- Se è abilitato, un webhook attiva un evento in modo sincrono e attende che il servizio web restituisca una risposta.
- Quando il runtime riceve una risposta webhook, risolve tutti i riferimenti ai parametri nei prompt e seleziona un candidato della richiesta in base alla piattaforma utente, quindi seleziona una variante da inviare all'utente in un secondo momento.
- Se la risposta webhook contiene un prompt, la aggiunge alla coda dei prompt. Se esiste anche un prompt statico, il prompt webhook viene prima unito nella coda del prompt, seguito dal prompt statico.
- Se la risposta webhook contiene una transizione, può farlo ora. In caso contrario, la scena prosegue fino alla fase di riempimento dell'area annuncio.
Condizioni
Le condizioni consentono di controllare i dati relativi a sessioni, utenti o slot se una condizione è vera. Ad esempio, puoi verificare se tutti gli slot sono riempiti e impostarlo come criterio per passare a un'altra scena ed elaborare gli slot.
- Il runtime dell'assistente valuta ogni condizione nell'ordine in cui sono specificate. La prima condizione che valuta
true
esegue il gestore associato e interrompe la valutazione delle condizioni. - Se esegui la compilazione delle aree annuncio, viene aggiunta automaticamente una condizione
else if scene.slots.status = "FINAL"
all'elenco di condizioni. Questa condizione facoltativa controlla che il riempimento degli slot sia completo e può attivare un webhook o aggiungere prompt alla coda di messaggi.
Dopo la valutazione della condizione, se la scena non definisce una transizione, continua il riempimento degli slot.
Riempimento slot
In questa fase viene aggiunto un prompt di area annuncio per una singola area annuncio non compilata e obbligatoria. Se non definisci alcuno slot nella scena, questa fase non produce alcun effetto.
- Il runtime dell'assistente seleziona il primo slot vuoto e aggiunge il prompt corrispondente alla coda dei prompt. Poiché i loop di esecuzione della scena, gli slot aggiuntivi vuoti vengono gestiti in un secondo momento, quando il loop di esecuzione torna a questa fase.
- Lo slot attuale e attivo può avere prompt di gestione degli errori che sostituiscono quelli definiti nella fase di input della scena.
- Quando l'utente riempie un'area, puoi convalidarla in un servizio web attivando un webhook.
Prompt
Il runtime dell'assistente fornisce la coda dei prompt all'utente, cancella la coda e utilizza l'input utente.
Input
Il runtime dell'assistente cerca di abbinare l'input a un intent o a un'area:
- Nel caso di una corrispondenza di intent dell'utente, la scena esegue il gestore di intent associato (intent utente o sistema). Il gestore di intent di una scena ha la precedenza su qualsiasi intent globale. Se non hai definito una transizione, l'esecuzione della scena esegue il loop della fase delle condizioni.
- In caso di corrispondenza di slot, la scena torna alla fase di riempimento degli slot.
Nel caso di una corrispondenza di intent di sistema (ad esempio, nessun input o nessuna corrispondenza), puoi aggiungere prompt alla coda dei prompt, attivare un webhook o una transizione. Nel caso in cui siano state definite più richieste di nessuna corrispondenza, il runtime dell'assistente sceglie la più pertinente, nel seguente ordine: compilazione dello slot, scena, poi richieste globali di nessuna corrispondenza. Nessuna corrispondenza consecutiva genera un evento corrispondente:
no_match_1
no_match_2
no_match_final
Ogni livello di nessuna corrispondenza (riempimento di slot, scena e globale) può attivare eventi webhook. Per impostazione predefinita, la terza e ultima corrispondenza "nessuna corrispondenza" termina la conversazione.
Transizione
Le transizioni possono avvenire nelle seguenti fasi:
- Condizioni: puoi passare a un'altra scena in base alle condizioni da te definite. Una condizione comune da verificare è il completamento del riempimento dell'area annuncio.
- Input (corrispondenza dell'intent dell'utente): se un intent corrisponde, può attivare una transizione a un'altra scena.
- Input (corrispondenza dell'intent di sistema): puoi attivare webhook durante qualsiasi evento di corrispondenza dell'intent di sistema. In caso di mancata corrispondenza o nessun evento di input, la scena, per impostazione predefinita, passa alla scena Termina conversazione dopo tre occorrenze.
Scene di sistema
Le scene di sistema ti consentono di utilizzare la logica di conversazione integrata fornita dall'assistente, che ti permette di aggiungere flussi di conversazione standard all'esperienza utente. Ad esempio, la scena del sistema di collegamento degli account consente all'assistente momentaneamente di occuparsi della procedura di collegamento degli account, restituendo le informazioni necessarie per collegare effettivamente gli account dell'utente. Le scene di sistema non seguono il ciclo di vita delle scene standard.
Il seguente elenco descrive le scene di sistema supportate e il relativo utilizzo:
- Termina conversazione: consente di chiudere il microfono e terminare la conversazione con l'utente. L'assistente riprende il controllo dell'esperienza utente dopo l'esecuzione di questa scena.
- Collegamento dell'account: guida l'utente attraverso un flusso di collegamento degli account e fornisce alle Azioni le informazioni richieste per collegare l'account dell'utente sui tuoi server di backend con l'Account Google dell'utente. Consulta la documentazione relativa al collegamento degli account per ulteriori informazioni su come utilizzare questa scena.
- Aggiornamenti giornalieri: guida l'utente attraverso un flusso di conferma per aggiungere le tue azioni agli aggiornamenti giornalieri dell'utente. Consulta la documentazione sugli aggiornamenti giornalieri per ulteriori informazioni su come utilizzare questa scena.
- Notifiche: guida l'utente attraverso un flusso di conferma per ricevere le notifiche dalle tue Azioni. Consulta la documentazione relativa alle notifiche push per ulteriori informazioni su come utilizzare questa scena.