1. Panoramica
La piattaforma per sviluppatori Assistente Google ti consente di creare software per estendere la funzionalità dell'Assistente Google, un assistente personale virtuale, su più di un miliardo di dispositivi, tra cui smart speaker, telefoni, auto, TV, cuffie e altro ancora. Gli utenti interagiscono con l'assistente nella conversazione per svolgere attività, ad esempio fare la spesa o prenotare una corsa. In qualità di sviluppatore, puoi utilizzare la piattaforma per sviluppatori dell'assistente per creare e gestire facilmente esperienze di conversazione piacevoli ed efficaci tra gli utenti e il tuo servizio di distribuzione di terze parti.
Questo codelab tratta concetti di livello intermedio per lo sviluppo con l'Assistente Google e si basa sull'azione creata nel codelab Build Actions for Google Assistant using Actions SDK (Livello 1). Ti consigliamo vivamente di completare il codelab del livello 1 prima di iniziare questo.
L'azione creata in questo codelab indica agli utenti la loro fortuna per la loro ricerca in una terra mistica, Gryffinberg, in base agli aiuti che scelgono.
Cosa creerai
In questo codelab, creerai un'azione conversazionale sofisticata con le seguenti funzioni:
- Raccoglie i dati dell'utente e, a seconda del valore, modifica i prompt di conversazione.
- Risponde con domande aggiuntive per proseguire la conversazione.
- Crea un ciclo di gioco in modo che l'utente possa interagire nuovamente con l'azione dopo aver ricevuto una fortuna.
Prima di iniziare a creare, puoi interagire con l'Azione dal vivo sul tuo dispositivo con l'Assistente Google integrato dicendo "Hey Google, parla con Fate e Fortune". Il percorso predefinito di questa azione per un utente di ritorno è simile alla seguente interazione:
Cosa imparerai a fare
- Come utilizzare gli slot per raccogliere i dati dall'utente
- Come utilizzare le condizioni per aggiungere logica a una scena
- Come aggiungere un ciclo di gioco
- Come aggiungere un percorso di supporto
Che cosa ti serve
I prerequisiti di questo codelab includono quanto segue:
- Un IDE/editor di testo a tua scelta.
- Un terminale per eseguire i comandi della shell con NodeJS, npm e git installato.
- Un browser web, ad esempio Google Chrome.
- Un progetto Actions del codelab livello 1 completato.
Sebbene non sia obbligatoria, ti consigliamo vivamente di acquisire familiarità con JavaScript (ES6) per comprendere il codice di completamento di questo codelab.
(Facoltativo) Ottieni il codice campione
Facoltativamente, puoi ottenere il codice completo del progetto di livello 1 dal repository GitHub del codelab di Actions Builder, livello 1, in modo da poter seguire questo codelab. Puoi anche visualizzare il codice del progetto completo del livello 2 in questo repository GitHub.
2. Continua a creare un'interfaccia di conversazione
Nel primo codelab, hai creato una semplice azione conversazionale con una singola scena, Start
.
In questo codelab, estendi la conversazione dell'azione. Nelle sezioni seguenti, configurerai l'azione in modo da:
- Passa a una nuova scena
Fortune
quando l'utente vuole ascoltare il destino - Chiedi all'utente quale ausilio vuole scegliere per il suo percorso.
- Ottieni una fortuna personalizzata in base alla scelta dell'utente
Esegui la transizione a Fortune
scena e creane una
In questa sezione:
- Rimuovi il prompt esistente dalla scena
Start
, che risponde all'utente e termina la conversazione - Definisci la transizione dalla scena
Start
alla scenaFortune
- Crea la scena
Fortune
Per modificare la scena Start
e aggiungere una transizione alla scena Fortune
, segui questi passaggi:
- Apri il progetto Actions dal codelab del livello 1 nell'editor di testo.
- Apri il file
custom/scenes/Start.yaml
. - Aggiorna
handler
per l'intentyes
in modo che il codice corrisponda allo snippet seguente:
Start.yaml
intentEvents: - intent: "yes" transitionToScene: Fortune - handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: I understand, stranger. Best of luck on your quest! Farewell. intent: "no" transitionToScene: actions.scene.END_CONVERSATION
- Salva il file.
Per creare una nuova scena chiamata Fortune
, segui questi passaggi:
- Accedi al progetto Azioni di livello 1 del codelab nel terminale.
- Crea un nuovo file denominato
Fortune.yaml
nella directoryscenes
:
touch custom/scenes/Fortune.yaml
Modificherai questo file nella sezione successiva.
Definisci la logica di conversazione per Fortune
scena
In questo codelab, configurerai la scena Fortune
per chiedere all'utente "Cosa scegli di aiutarti nella tua missione, come un drago, un traduttore o una bussola?". Puoi utilizzare una funzionalità chiamata compilazione degli slot per raccogliere le informazioni necessarie dall'utente prima di procedere.
L'Azione prevede tre ausili: un drago, un traduttore e una bussola. Per configurare l'Azione in modo da identificare queste tre opzioni nell'input di un utente, devi creare un nuovo tipo.
Puoi usare i tipi all'interno della fase di riempimento degli slot di una scena per definire le informazioni che vuoi ricevere dall'utente. Quando il motore NLU rileva una corrispondenza di slot nell'input dell'utente, estrae lo slot come parametro digitato, in modo da poter eseguire la logica in una scena.
Crea tipo available_options
In questa sezione puoi creare un nuovo tipo chiamato available_options
, che specifica le tre opzioni che l'utente può scegliere (drago, traduttore e bussola) in risposta al prompt. Definisci anche alcuni sinonimi di queste opzioni nel caso in cui un utente dica qualcosa di simile. In una sezione successiva, aggiungerai il tipo available_options
a un'area per specificare che vuoi che l'utente scelga.
Per creare il tipo available_options
:
- Crea una nuova directory denominata
types
:
mkdir custom/types
- Crea un nuovo file denominato
available_options.yaml
nella directorytypes
:
touch custom/types/available_options.yaml
- Apri
custom/types/available_options.yaml
nell'editor di testo.
I tipi sono configurati come coppie chiave/valore di informazioni, dove la chiave è il nome del tipo e i valori sono sinonimi per quella chiave. Quando definisci la chiave, questa viene aggiunta automaticamente come valore. Con l'SDK Actions, la chiave viene rappresentata come entities
e i valori come synonyms
.
Per aggiungere le tre opzioni che l'utente può scegliere, segui questi passaggi:
- Aggiungi i seguenti
entities
esynonyms
nel fileavailable_options.yaml
:
available_options.yaml
synonym: entities: dragon: synonyms: - dragon - hydra - lizard translator: synonyms: - translator - communicator - machine - decoder - translate compass: synonyms: - compass - direction - guide - navigator matchType: EXACT_MATCH
- Salva il file.
L'Azione ora comprende che i available_options
sono un drago, un traduttore e una bussola e sa anche riconoscere alcuni sinonimi corrispondenti.
Configura il riempimento degli slot
Il passaggio successivo consiste nel configurare gli slot per compilare la scena Fortune
. Per configurare la logica di riempimento degli slot:
- Apri
custom/scenes/Fortune.yaml
nell'editor di testo. - Aggiungi i seguenti dati di
slots
al fileFortune.yaml
:
Fortune.yaml
slots: - commitBehavior: writeSessionParam: chosenOptions name: chosenOptions promptSettings: initialPrompt: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: What do you choose to help you on your quest, a dragon, a translator, or a compass? suggestions: - title: Dragon - title: Translator - title: Compass required: true type: name: available_options
- Salva il file.
Hai aggiunto il tipo available_options
allo slot, che indica all'azione le informazioni che devi raccogliere dall'utente (la sua scelta di aiuto) prima di procedere. Hai anche configurato un prompt all'interno dello slot, che viene aggiunto alla coda dei prompt quando l'utente raggiunge la fase di riempimento dello slot della scena.
Quando assegni il nome all'area chosenOptions
, il campo writeSessionsParam
viene aggiornato con lo stesso nome ($session.params.chosenOptions
). Puoi accedere a questo parametro con lo stesso nome nel prompt e nel tuo fulfillment tramite la libreria client.
Aggiungi condizione
Ora che hai aggiunto uno spazio che richiede la scelta dell'aiuto da parte dell'utente, puoi aggiungere una condizione per verificare che i dati dello slot siano stati ottenuti prima che l'utente possa continuare la conversazione.
In questa sezione, aggiungerai la condizione scene.slots.status == "FINAL"
, che verifica il completamento degli slot. Una volta riempiti tutti gli slot, la condizione aggiunge un prompt (You picked $session.params.chosenOptions.
) alla coda dei prompt.
Per configurare la condizione scene.slots.status == "FINAL"
:
- Apri
custom/scenes/Fortune.yaml
nell'editor di testo. - Aggiungi i dati
conditionalEvents
all'inizio del fileFortune.yaml
:
Fortune.yaml
conditionalEvents: - condition: scene.slots.status == "FINAL" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: You picked $session.params.chosenOptions.
- Salva il file.
Testa l'azione nel simulatore
A questo punto, hai definito le opzioni che l'utente deve selezionare per riempire l'area. Dopo aver ottenuto queste informazioni dall'utente, l'azione dovrebbe fornire un prompt con riferimento all'opzione specifica scelta.
Per testare l'azione:
- Nel terminale, esegui questo comando:
gactions deploy preview
Dovresti ricevere un output simile al seguente:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Copia l'URL fornito e incollalo in un browser.
- Fai clic o digita
Talk to my test app
nel campo Immissione e premi Invio. - Digita
Yes
nel campo Input e premi Invio. In alternativa, puoi fare clic sul chip di suggerimento Sì.
- Fai clic, digita o di'
dragon
. Dovresti visualizzare il messaggio "Hai scelto il drago".
Nella sezione successiva personalizzerai le richieste per ciascun aiuto che l'utente può selezionare.
Personalizza i prompt utilizzando le condizioni
In questa sezione, aggiungerai condizioni per ogni opzione che l'utente può scegliere e un prompt personalizzato per ogni condizione.
Personalizza la fortuna di dragon
Per aggiornare la condizione e personalizzare la richiesta quando un utente sceglie "drago", segui questi passaggi:
- Apri
custom/scenes/Fortune.yaml
nell'editor di testo. - Sostituisci i dati di
conditionalEvents
con il seguente snippet nel fileFortune.yaml
:
Fortune.yaml
conditionalEvents: - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: The people of Gryffinberg will be awestruck by the beauty and power of the ancient dragon. Much to your dismay, the townspeople fall into dispute over who will receive the honor of riding the dragon first. You return home from your quest without everlasting glory or a dragon.
- Salva il file.
Ora, quando un utente dice "drago" o qualcosa di simile, l'azione fornisce una fortuna in base a quella selezione. Successivamente, aggiungerai le due selezioni rimanenti.
Personalizza i risultati di translator
e compass
Per aggiungere le condizioni e personalizzare le richieste che verranno visualizzate quando un utente pronuncia "traduttore" o "bussola", procedi nel seguente modo:
- Nel file
custom/scenes/Fortune.yaml
, aggiungi le altre due condizioni nella condizionedragon
:
Fortune.yaml
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: With the help of the translator, the rival factions in Gryffinberg are finally able to communicate with each other and resolve their disputes. You will complete your quest to restore peace in the town. The translator will be used on many other journeys across the earth. After its work is done, it retires honorably to a premier location in the Gryffinberg History Museum. - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: The compass will help you find the mystical and ancient Library of Gryffinberg. Among its infinite stacks of dusty books, you find one entitled "Wisdom of the Ages". By the time you've read the 50,000-page tome, the townspeople have forgotten their problems. You will write a second edition of "Wisdom of the Ages", but have limited commercial success.
- Salva il file.
Testa l'azione nel simulatore
A questo punto, l'Azione dovrebbe fornire una fortuna personalizzata per l'utente in base all'opzione selezionata.
Per testare l'azione:
- Nel terminale, esegui questo comando:
gactions deploy preview
Dovresti ricevere un output simile al seguente:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Copia l'URL fornito e incollalo in un browser.
- Digita
Talk to my test app
nel campo Input e premi Invio. - Digita Sì nel campo Immissione e premi Invio. In alternativa, fai clic sul chip di suggerimento Sì.
- Fai clic, digita o di'
Translator
.
Dovresti ricevere la fortuna appropriata per il "traduttore" .
3. Aggiungi ciclo di gioco
In questa sezione, configurerai l'Azione in modo che l'utente possa selezionare un'altra opzione e ascoltare un destino diverso dopo aver effettuato una selezione. Questa modifica è simile al messaggio "Vuoi giocare di nuovo?" alla fine di una partita. Per creare questo loop, puoi riutilizzare gli intent yes
e no
creati in precedenza e aggiungerli a una nuova scena chiamata Again
.
Crea scena Again
In questa sezione creerai una nuova scena Again
e aggiungerai un prompt per chiedere all'utente se vuole selezionare un'opzione diversa.
Per creare e configurare la scena Again
, segui questi passaggi:
- Crea un nuovo file denominato
Again.yaml
nella directoryscenes
:
touch custom/scenes/Again.yaml
- Apri
custom/scenes/Again.yaml
nell'editor di testo. - Aggiungi i seguenti dati di
onEnter
aAgain.yaml
:
Again.yaml
onEnter: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: That is what I see for you. Would you like to choose a different option and explore another future? suggestions: - title: "Yes" - title: "No"
- Salva il file.
Aggiungi transizione da Fortune
a Again
scena
Quando l'utente riceve la fortuna, la conversazione deve passare alla nuova scena Again
.
Per aggiungere una transizione dalla scena Fortune
alla scena Again
:
- Apri
custom/scenes/Fortune.yaml
nell'editor di testo. - Aggiungi
transitionToScene: Again
a ogni condizione, come mostrato nello snippet seguente:
Fortune.yaml
conditionalEvents: - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: The people of Gryffinberg will be awestruck by the beauty and power of the ancient dragon. Much to your dismay, the townspeople fall into dispute over who will receive the honor of riding the dragon first. You return home from your quest without everlasting glory or a dragon. transitionToScene: Again - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: With the help of the translator, the rival factions in Gryffinberg are finally able to communicate with each other and resolve their disputes. You will complete your quest to restore peace in the town. The translator will be used on many other journeys across the earth. After its work is done, it retires honorably to a premier location in the Gryffinberg History Museum. transitionToScene: Again - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: The compass will help you find the mystical and ancient Library of Gryffinberg. Among its infinite stacks of dusty books, you find one entitled "Wisdom of the Ages". By the time you've read the 50,000-page tome, the townspeople have forgotten their problems. You will write a second edition of "Wisdom of the Ages", but have limited commercial success. transitionToScene: Again
- Salva il file.
Testa l'azione nel simulatore
A questo punto, l'Azione dovrebbe fornire la seguente richiesta all'utente dopo che ha ricevuto il suo destino: "Questo è ciò che vedo per te. Vorresti scegliere un'opzione diversa ed esplorare un altro futuro?"
Per testare l'azione:
- Nel terminale, esegui questo comando:
gactions deploy preview
Dovresti ricevere un output simile al seguente:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Copia l'URL fornito e incollalo in un browser.
- Digita
Talk to my test app
nel campo Input e premi Invio. - Digita
Yes
nel campo Input e premi Invio. In alternativa, fai clic sul chip di suggerimento Sì. - Fai clic, digita o di'
dragon
.
Dovresti ricevere la fortuna per l'opzione drago e il prompt Again
.
Aggiungi intent e transizione a Again
scena
In questa sezione, aggiungerai gli intent yes
e no
alla scena Again
in modo che l'azione capisca se l'utente vuole scegliere o meno una nuova opzione. Aggiungi anche le transizioni appropriate per gli intent yes
e no
. L'intent yes
passa alla scena Fortune
, mentre l'intent no
passa alla scena di sistema End conversation
.
Per aggiungere intent e transizioni alla scena Again
:
- Apri
custom/scenes/Again.yaml
nell'editor di testo. - Aggiungi i dati
intentEvents
all'inizio del fileAgain.yaml
, sopraOnEnter
:
Again.yaml
intentEvents: - intent: "yes" transitionToScene: Fortune - handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell. intent: "no" transitionToScene: actions.scene.END_CONVERSATION
- Salva il file.
Testa l'azione nel simulatore
Ora l'Azione dovrebbe capire se l'utente vuole scegliere una nuova opzione o terminare la conversazione.
Per testare l'intent yes
:
- Nel terminale, esegui questo comando:
gactions deploy preview
Dovresti ricevere un output simile al seguente:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Copia l'URL fornito e incollalo in un browser.
- Digita
Talk to my test app
nel campo Input e premi Invio. - Digita
Yes
nel campo Input e premi Invio. In alternativa, fai clic sul chip di suggerimento Sì. - Fai clic, digita o pronuncia una delle opzioni.
- Digita
Yes
nel campo di immissione e premi Invio.
Dovresti visualizzare il messaggio "Cosa scegli di aiutarti nella tua missione: un drago, un traduttore o una bussola?".
Per testare l'intent no
:
- Fai clic, digita o pronuncia una delle opzioni.
- Digita
No
nel campo di immissione e premi Invio.
Dovresti ricevere il messaggio End conversation
: "Mi fa piacere che la tua scelta sia soddisfacente. Buona fortuna per la tua missione. Addio."
4. Aggiungi un percorso di supporto
Hai creato il percorso principale che la maggior parte degli utenti intraprende nell'azione. Tuttavia, l'utente potrebbe rispondere al prompt dalla scena di Fortune
, "Cosa scegli di aiutarti nella tua missione, come un drago, un traduttore o una bussola?", con una scelta che non è una delle opzioni fornite.
In questa sezione, configurerai l'Azione in modo da capire quando un utente dice "magico", "denaro", "cavallo" o "telefono" e chiedergli nuovamente di selezionare una delle tre opzioni originali quando sceglie una di queste opzioni. Per configurare questa logica, devi creare un nuovo type
che contenga queste altre scelte e un nuovo intent, other_option
, che viene abbinato quando un utente dice una di queste opzioni. Devi anche annotare le frasi di addestramento nell'intent other_option
per identificare ed estrarre i parametri dell'intent.
Quando il motore di elaborazione del linguaggio naturale dell'assistente rileva una corrispondenza di parametri nell'input dell'utente, estrae il valore come parametro digitato in modo da poter eseguire la logica in una scena. In questo codelab, configurerai l'azione per estrarre l'aiuto scelto dall'utente e farai riferimento a quella scelta in un prompt.
Crea tipo unavailable_options
Ora puoi creare un tipo unavailable_options
che contiene una serie di opzioni diverse in modo che l'Azione possa identificare quei dati nell'input di un utente.
Per creare il tipo unavailable_options
:
- Crea un nuovo file denominato
unavailable_options.yaml
nella directorytypes
:
touch custom/types/unavailable_options.yaml
- Apri
custom/types/unavailable_options.yaml
nell'editor di testo. - Aggiungi i seguenti dati di
synonyms
al fileunavailable_options.yaml
:
unavailable_options.yaml
synonym: entities: money: synonyms: - money - cash - gold horse: synonyms: - horse - stallion - steed magic: synonyms: - magic - enchanted - spells phone: synonyms: - phone - cell - apps matchType: EXACT_MATCH
- Salva il file.
Crea intent other_option
In seguito, dovrai creare un intent denominato other_option
e aggiungere frasi di addestramento che includono le opzioni nel tipo unavailable_options
. Questo intent viene trovato quando l'utente seleziona una scelta contenuta nel tipo unavailable_options
.
Per creare e configurare l'intent other_option
:
- Crea un nuovo file denominato
other_option.yaml
nella directoryintents
:
touch custom/intents/other_option.yaml
- Apri
custom/intents/other_option.yaml
nell'editor di testo. - Aggiungi i seguenti dati
parameters
etrainingPhrases
al fileother_option.yaml
:
other_option.yaml
parameters: - name: chosenUnavailableOption type: name: unavailable_options trainingPhrases: - I want to use ($chosenUnavailableOption 'spells' auto=true) - I really really want to use a ($chosenUnavailableOption 'phone' auto=true) - ($chosenUnavailableOption 'magic' auto=true)! - ($chosenUnavailableOption 'cash' auto=true) - I want to ride a ($chosenUnavailableOption 'horse' auto=true)
Qui puoi annotare manualmente le frasi di addestramento con le opzioni non disponibili specificate nella sezione precedente. Il parametro di intent, chosenUnavailableOption
, ti consente di estrarre il nome dell'opzione e di utilizzarla in un prompt, come ad esempio nella sezione seguente.
- Salva il file.
Aggiungi l'intent other_option
a Fortune
scena
Ora hai un intent, other_option
, che può gestire un utente che specifica un'opzione che non è una delle opzioni originali. In questa sezione, aggiungerai l'intent other_option
alla scena Fortune
. Il parametro intent consente di personalizzare la richiesta in base all'input dell'utente.
Per aggiungere l'intent other_option
alla scena Fortune
, segui questi passaggi:
- Apri
custom/scenes/Fortune.yaml
nell'editor di testo. - Aggiungi i seguenti dati
intentEvents
tra i daticonditionalEvents
e i datislots
:
Fortune.yaml
intentEvents: - handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: I have seen the future and a $intent.params.chosenUnavailableOption.original will not aid you on your journey. intent: other_option
- Salva il file.
L'espressione $intent.params.chosenUnavailableOption
si riferisce all'oggetto del parametro intent, mentre $intent.params.chosenUnavailableOption.original
al valore dell'oggetto. La proprietà original
fa riferimento all'input non elaborato specificato dall'utente.
Quando un utente pronuncia un'opzione elencata nel tipo unavailable_options
durante la scena Fortune
, l'intent other_option
viene abbinato e aggiunge un prompt alla coda dei prompt. Poiché non è specificata alcuna transizione, il loop di esecuzione della scena continua rivalutando la fase delle condizioni. Lo slot chosenOptions
aggiunge quindi il proprio prompt alla coda dei prompt e la coda dei prompt viene consegnata all'utente.
Testa l'azione nel simulatore
Ora l'azione dovrebbe rispondere correttamente quando un utente seleziona una delle opzioni elencate nel tipo unavailable_options
e specificare l'aiuto selezionato dall'utente. L'Azione dovrebbe quindi chiedere nuovamente all'utente di scegliere una delle scelte originali (un drago, un traduttore o una bussola).
Per testare l'azione nel simulatore:
- Nel terminale, esegui questo comando:
gactions deploy preview
Dovresti ricevere un output simile al seguente:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Copia l'URL fornito e incollalo in un browser.
- Digita
Talk to my test app
nel campo Input e premi Invio. - Digita
Yes
nel campo Input e premi Invio. In alternativa, fai clic sul chip di suggerimento Sì. - Digita
magic
nel campo Input e premi Invio.
Potresti notare che la richiesta non suona correttamente quando l'utente sceglie "magico" per via della lettera "a" l'articolo posizionato prima. Il problema verrà risolto nelle sezioni seguenti.
Aggiungi gestore unavailable_options
Per inserire la lettera "a" prima delle scelte appropriate dal tipo unavailable_options
, puoi configurare un gestore di eventi nella logica di completamento per verificare se l'opzione scelta dall'utente richiede una "a" prima. Innanzitutto, devi configurare l'Azione in modo da chiamare il gestore dalla scena Fortune
.
Per aggiungere il gestore unavailable_options
alla scena Fortune
, segui questi passaggi:
- Apri
custom/scenes/Fortune.yaml
nell'editor di testo. - Aggiorna il file
Fortune.yaml
con i seguenti datiintentEvents
:
Fortune.yaml
intentEvents: - handler: webhookHandler: unavailable_options intent: other_option
- Salva il file.
Aggiornamento e deployment del fulfillment
Ora che hai configurato l'Azione in modo da chiamare il gestore di eventi unavailable_options
, puoi aggiornare il gestore nel tuo fulfillment ed eseguirne il deployment.
Per aggiornare l'evasione degli ordini:
- Apri
webhooks/ActionsOnGoogleFulfillment/index.js
nell'editor di testo. - Aggiungi il seguente codice a
index.js
sotto il gestoregreeting
:
index.js
app.handle('unavailable_options', conv => {
const option = conv.intent.params.chosenUnavailableOption.original;
const optionKey = conv.intent.params.chosenUnavailableOption.resolved;
let message = 'I have seen the future and ';
if(optionsNeedA.has(optionKey)){
message = message + 'a ';
}
message = message + `${option} will not aid you on your journey. `;
conv.add(message);
});
- Aggiungi il seguente codice sotto
const app = conversation({debug:true});
:
index.js
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
- Salva il file.
comprendi il codice
Il gestore unavailable_options
esegue le seguenti operazioni:
- Recupera i dati
option
dall'oggettoconv
e assegnaoption
alla proprietàoriginal
, che rappresenta l'input non elaborato dell'utente - Assegna
optionKey
alla proprietàresolved
, che è la chiave per il tipounavailable_options
- Controlla se
optionKey
è una delle opzioni che richiede una "a"; Se lo è, crea il messaggio aggiungendo la lettera "a" - Aggiunge il messaggio tramite
conv.add(message)
Aggiorna gestori
Per consentire all'azione di usare unavailable_options
, aggiungi il gestore unavailable_options
a webhooks/ActionsOnGoogleFulfillment.yaml
.
- Aggiungi il nome del gestore
unavailable_options
aActionsOnGoogleFulfillment.yaml
:
ActionsOnGoogleFulfillment.yaml
handlers: - name: greeting - name: unavailable_options inlineCloudFunction: executeFunction: ActionsOnGoogleFulfillment
- Salva il file.
Testa l'azione nel simulatore
Ora l'Azione dovrebbe modificare la richiesta a seconda che la scelta dell'utente nel tipo unavailable_options
richieda o meno una "a" precedente.
Per testare l'azione:
- Nel terminale, esegui questo comando:
gactions deploy preview
Dovresti ricevere un output simile al seguente:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Copia l'URL fornito e incollalo in un browser.
- Fai clic o digita
Talk to my test app
nel campo Immissione e premi Invio. - Digita
Yes
nel campo Input e premi Invio. In alternativa, fai clic sul chip di suggerimento Sì. - Digita
magic
nel campo Input e premi Invio. Digitahorse
nel campo Input e premi Invio.
L'azione deve aggiungere la lettera "a" prima del "cavallo" e costruisci il prompt senza la lettera "a" articolo per il "magico" scelta.
5. Visualizza azione nella console di Actions
L'SDK Actions è compatibile con un IDE basato sul web chiamato Azioni Builder integrato nella console di Actions. Puoi eseguire il push del tuo file system locale alla bozza dell'azione nella console con il comando gactions push
. La console di Actions fornisce una rappresentazione visiva della configurazione dell'Azione. Visualizzare l'azione mappata visivamente può essere utile durante lo sviluppo e non influisce sulla versione dell'azione pubblicata per il test.
Per eseguire il push del progetto Actions e visualizzarlo nella console Actions, segui questi passaggi:
- Nel terminale, esegui questo comando per eseguire il push del progetto alla console Actions:
gactions push
Dovresti ricevere un output simile al seguente:
✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
- Copia l'URL fornito e incollalo in un browser.
- Nella console di Actions, fai clic su Develop nella barra di navigazione in alto.
- Fai clic sulla freccia menu a discesa accanto a Scene e fai clic su Avvia. Dovresti vedere una rappresentazione visiva della scena
Start
dell'azione, come mostrato nello screenshot seguente:
Pulisci il progetto [consigliato]
Per evitare possibili addebiti, ti consigliamo di rimuovere i progetti che non intendi utilizzare. Per eliminare i progetti creati in questo codelab:
- Per eliminare il progetto Cloud e le risorse, completa i passaggi elencati nella sezione Arresto (eliminazione) dei progetti.
- (Facoltativo) Per rimuovere immediatamente il progetto dalla console di Actions, completa i passaggi elencati nella sezione Eliminare un progetto. Se non completi questo passaggio, il progetto verrà rimosso automaticamente dopo circa 30 giorni.
6. Complimenti!
Ora conosci le competenze intermedie necessarie per creare Actions per l'Assistente Google con l'SDK Actions.
Argomenti trattati
- Come sviluppare azioni conversazionali utilizzando la libreria di fulfillment Node.js
- Come utilizzare gli slot per raccogliere i dati dagli utenti
- Come utilizzare le condizioni per aggiungere logica alla scena
- Come aggiungere un ciclo di gioco
- Come aggiungere un percorso di supporto
Scopri di più
Puoi esplorare queste risorse per scoprire come creare Azioni per l'Assistente Google:
- Documentazione per lo sviluppo di Actions for Google Assistant
- Pagina GitHub di Actions on Google per codice campione e librerie
- La community di Reddit ufficiale per gli sviluppatori che lavorano con l'Assistente Google
- Linee guida per la progettazione delle conversazioni per conoscere le best practice e le linee guida relative alle azioni conversazionali
Seguici su Twitter @ActionsOnGoogle per non perderti i nostri ultimi annunci e twitta a #AoGDevs per condividere ciò che hai realizzato.
Sondaggio di opinione
Prima di andare, compila un breve sondaggio sulla tua esperienza.