Le azioni conversazionali ti consentono di estendere l'Assistente Google con le tue interfacce di conversazione che forniscono agli utenti l'accesso ai tuoi prodotti e servizi. Le azioni sfruttano il potente motore di comprensione del linguaggio naturale (NLU) dell'assistente per elaborare e comprendere l'input di linguaggio naturale ed eseguire attività basate su questi input.
Panoramica
Un'azione conversazionale è un oggetto semplice che definisce un punto di ingresso (chiamato) in una conversazione:
- Una chiamata definisce il modo in cui gli utenti dicono all'assistente di voler avviare una conversazione con una delle tue azioni. La chiamata di una Azione è definita da un singolo intent che viene abbinato quando gli utenti richiedono l'Azione.
- Una conversazione definisce il modo in cui gli utenti interagiscono con un'azione dopo che viene richiamata. Puoi creare conversazioni con intent, tipi, scene e messaggi.
- Inoltre, le azioni possono delegare il lavoro aggiuntivo a fulfillment, che sono servizi web che comunicano con le azioni tramite webhook. Ciò ti consente di eseguire la convalida dei dati, chiamare altri servizi web, eseguire la logica di business e altro ancora.
Puoi raggruppare una o più azioni, in base ai casi d'uso importanti per i tuoi utenti, in un container logico chiamato progetto Actions. Il progetto Actions contiene l'intero modello di chiamata (la raccolta di tutte le chiamate), che consente agli utenti di iniziare da punti logici nel modello di conversazione (tutte le cose che gli utenti possono dire e tutti i modi possibili con cui rispondi agli utenti).
Chiamata
La chiamata è associata a un nome visualizzato che rappresenta un brand, un nome o un utente tipo che consente agli utenti di chiedere all'assistente di richiamare le tue azioni. Gli utenti possono utilizzare questo nome visualizzato da solo (chiamato principale) o in combinazione con frasi facoltative di link diretto per richiamare le azioni.
Ad esempio, gli utenti possono pronunciare le seguenti frasi per richiamare tre diverse azioni in un progetto con il nome visualizzato "Facts su Google":
- "Hey Google, parla con Facts su Google"
- "Hey Google, parla con Facts su Google per ottenere informazioni sull'azienda"
- "Hey Google, parla con Facts su Google per ottenere informazioni sulla storia"
La prima chiamata nell'esempio è la chiamata principale. Questa chiamata è associata a un intent di sistema speciale denominato actions.intent.MAIN
. La seconda e la terza chiamata sono chiamate di link diretto che consentono di specificare frasi aggiuntive che consentono agli utenti di richiedere funzionalità specifiche. Queste chiamate corrispondono agli intent utente che hai
classificato come globali. Ogni chiamata in questo esempio fornisce un punto di ingresso
in una conversazione e corrisponde a una singola azione.
La Figura 2 descrive un tipico flusso di chiamata principale:
- Quando gli utenti richiedono un'Azione, in genere chiedono all'assistente di farlo con il tuo nome visualizzato.
- L'assistente associa la richiesta dell'utente all'intent corrispondente
che corrisponde alla richiesta. In questo caso, è
actions.intent.MAIN
. - L'Azione riceve una notifica relativa alla corrispondenza dell'intent e risponde con la richiesta corrispondente per avviare una conversazione con l'utente.
Dialogo
La conversazione definisce il modo in cui gli utenti interagiscono con un'azione dopo che è stata richiamata. Per creare queste interazioni, definisci l'input utente valido per la conversazione, la logica per l'elaborazione dell'input e i prompt corrispondenti con cui rispondere all'utente. La figura e la spiegazione seguenti mostrano come funziona un tipico turno di conversazione con i componenti di basso livello di una conversazione: intent, tipi, scene e messaggi.
La figura 3 descrive un tipico turno di conversazione:
- Quando gli utenti dicono qualcosa, la NLU dell'assistente abbina l'input a un intent appropriato. Un intent viene abbinato se il modello linguistico per quell'intent può corrispondere esattamente o esattamente all'input dell'utente. Puoi definire il modello linguistico specificando frasi di addestramento o esempi di cose che gli utenti potrebbero voler dire. L'assistente prende queste frasi di addestramento e le espande per creare il modello linguistico dell'intent.
- Quando l'NLU dell'assistente corrisponde a un intent, può estrarre i parametri necessari dall'input. A questi parametri sono associati dei tipi, come una data o un numero. Puoi annotare parti specifiche delle frasi di addestramento di un intent per specificare quali parametri vuoi estrarre.
- Una scena elabora quindi l'intent corrispondente. Puoi pensare alle scene come agli esecutori logici di un'Azione, che svolgono il lavoro pesante e svolgono la logica necessaria per portare avanti una conversazione. Le scene vengono eseguite in un loop, fornendo un ciclo di vita dell'esecuzione flessibile che ti consente di eseguire operazioni come convalidare i parametri di intent, completare gli slot, inviare prompt all'utente e altro ancora.
- Al termine dell'esecuzione di una scena, in genere viene inviata agli utenti una richiesta per continuare la conversazione o, se opportuno, può terminare la conversazione.
Evasione dell'ordine
Durante la chiamata o una conversazione, l'Azione può attivare un webhook che informa un servizio di fulfillment per eseguire alcune attività.
La Figura 4 descrive come utilizzare il fulfillment per generare prompt, un modo comune per utilizzare il fulfillment:
- In punti specifici dell'esecuzione dell'Azione, può attivare un webhook che invia una richiesta a un gestore di webhook registrato (il servizio di fulfillment) con un payload JSON.
- Il fulfillment elabora la richiesta, ad esempio chiamando un'API REST per eseguire alcune ricerche di dati o convalidando alcuni dati dal payload JSON. Un modo molto comune per utilizzare il fulfillment è generare un prompt dinamico in fase di runtime, in modo che le conversazioni siano più personalizzate in base all'utente corrente.
- Il fulfillment restituisce una risposta all'Azione contenente un payload JSON. Può utilizzare i dati del payload per continuare l'esecuzione e rispondere all'utente.