1. Panoramica
La piattaforma per sviluppatori dell'Assistente Google ti consente di creare software per estendere la funzionalità dell'Assistente Google, un assistente personale virtuale, su oltre 1 miliardo di dispositivi, tra cui smart speaker, smartphone, auto, TV, cuffie e altro ancora. Gli utenti interagiscono con l'assistente per svolgere attività come acquistare generi alimentari o prenotare una corsa. In qualità di sviluppatore, puoi utilizzare la piattaforma per sviluppatori dell'assistente per creare e gestire facilmente esperienze conversazionali efficaci e piacevoli tra gli utenti e il tuo servizio di evasione ordini 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 Crea azioni per l'Assistente Google utilizzando Actions SDK (livello 1). Ti consigliamo vivamente di completare il codelab di livello 1 prima di iniziare questo.
L'azione che crei in questo codelab dice agli utenti la loro fortuna per la loro missione nella terra mitica di Gryffinberg, in base all'aiuto 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 conversazionali.
- Risponde con domande aggiuntive per proseguire la conversazione.
- Crea un ciclo di gioco in modo che un utente possa interagire di nuovo con l'azione dopo aver ricevuto una fortuna.
Prima di iniziare a creare, puoi interagire con l'azione live sul tuo dispositivo con l'Assistente Google dicendo "Hey Google, parla con Fato e Fortuna". Il percorso predefinito di questa azione per un utente di ritorno è il seguente:


Obiettivi didattici
- Come utilizzare gli slot per raccogliere 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 per questo codelab includono quanto segue:
- Un IDE/editor di testo a tua scelta.
- Un terminale per eseguire comandi shell con NodeJS, npm e git installati.
- Un browser web, ad esempio Google Chrome.
- Un progetto Actions codelab di livello 1 completato.
Per comprendere il codice di fulfillment di questo codelab, è consigliabile, anche se non obbligatorio, avere familiarità con JavaScript (ES6).
(Facoltativo) Ottieni il codice campione
Se vuoi, puoi scaricare il codice completo del progetto di livello 1 dal repository GitHub del codelab di Actions Builder di livello 1, in modo da poter seguire questo codelab. Puoi anche visualizzare il codice completo del progetto di livello 2 in questo repository GitHub.
2. Continua a creare l'interfaccia conversazionale
Nel primo codelab, hai creato una semplice Azione conversazionale con una sola scena, Start.
In questo codelab, estendi la conversazione dell'azione. Nelle sezioni seguenti, configurerai l'azione in modo che:
- Passa a una nuova scena di
Fortunequando l'utente vuole conoscere la sua fortuna - Chiedi all'utente quale ausilio vuole scegliere per il suo viaggio
- Fornire un messaggio personalizzato in base alla scelta dell'utente
Transizione alla scena Fortune e creazione
In questa sezione, imparerai a:
- Rimuovi il prompt esistente dalla scena
Start, che risponde all'utente e termina la conversazione - Definisci la transizione dalla scena
Startalla scenaFortune - Crea la scena
Fortune
Per modificare la scena Start e aggiungere una transizione alla scena Fortune:
- Apri il progetto Azioni dal codelab di livello 1 nell'editor di testo.
- Apri il file
custom/scenes/Start.yaml. - Aggiorna
handlerper l'intentyesin modo che il codice corrisponda allo snippet riportato di seguito:
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:
- Vai al progetto codelab Azioni di livello 1 nel terminale.
- Crea un nuovo file denominato
Fortune.yamlnella directoryscenes:
touch custom/scenes/Fortune.yaml
Modificherai questo file nella sezione successiva.
Definisci la logica conversazionale per la scena Fortune
In questo codelab, configurerai la scena Fortune per chiedere all'utente: "Cosa scegli per aiutarti nella tua missione: un drago, un traduttore o una bussola?" Puoi utilizzare una funzionalità chiamata riempimento degli slot per raccogliere le informazioni necessarie dall'utente prima di procedere.
La tua Azione fornisce fortune per tre aiuti: un drago, un traduttore e una bussola. Per configurare l'azione in modo che identifichi queste tre opzioni nell'input di un utente, devi creare un nuovo tipo.
Puoi utilizzare i tipi nella fase di compilazione degli slot di una scena per definire le informazioni che vuoi ottenere 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 con esso in una scena.
Crea tipo available_options
In questa sezione, crei un nuovo tipo chiamato available_options, che specifica le tre opzioni che gli utenti possono scegliere (drago, traduttore e bussola) in risposta al prompt. Definisci anche alcuni sinonimi per queste opzioni nel caso in cui un utente dica qualcosa di simile. In una sezione successiva, aggiungerai il tipo available_options a uno slot per specificare che vuoi ottenere la scelta dell'utente.
Per creare il tipo available_options, segui questi passaggi:
- Crea una nuova directory denominata
types:
mkdir custom/types
- Crea un nuovo file denominato
available_options.yamlnella directorytypes:
touch custom/types/available_options.yaml
- Apri
custom/types/available_options.yamlnell'editor di testo.
I tipi sono configurati come coppie chiave-valore di informazioni, in cui la chiave è il nome del tipo e i valori sono sinonimi di quella chiave. Quando definisci la chiave, questa viene aggiunta automaticamente come valore. Con l'SDK Actions, le chiavi sono rappresentate come entities e i valori come synonyms.
Per aggiungere le tre opzioni che l'utente può scegliere, segui questi passaggi:
- Aggiungi i seguenti
entitiesesynonymsnel 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 available_options sono drago, traduttore e bussola e può anche riconoscere alcuni sinonimi corrispondenti.
Configurare il riempimento degli slot
Successivamente, devi configurare il riempimento degli slot nella scena Fortune. Per configurare la logica di compilazione degli slot:
- Apri
custom/scenes/Fortune.yamlnell'editor di testo. - Aggiungi i seguenti dati
slotsal 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.
Ora hai aggiunto il tipo available_options allo slot, che indica all'azione le informazioni da 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 compilazione dello slot della scena.
Quando assegni al segmento il nome chosenOptions, il campo writeSessionsParam viene aggiornato con lo stesso nome ($session.params.chosenOptions). Puoi accedere a questo parametro con questo nome nel prompt e nell'evasione tramite la libreria client.
Aggiungi condizione
Ora che hai aggiunto uno slot che richiede la scelta dell'ausilio 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, aggiungi la condizione scene.slots.status == "FINAL", che verifica che il riempimento degli slot sia completato. 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.yamlnell'editor di testo. - Aggiungi i dati
conditionalEventsall'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.
Testare l'azione nel simulatore
A questo punto, hai definito le opzioni che l'utente deve selezionare per compilare lo spazio. Dopo aver ottenuto queste informazioni dall'utente, l'azione deve fornire un prompt che faccia riferimento all'opzione specifica che ha scelto.
Per testare l'azione, segui questi passaggi:
- 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 appnel campo Input e premi Invio. - Digita
Yesnel campo Input e premi Invio. In alternativa, puoi fare clic sul chip di suggerimento Sì.

- Fai clic, digita o pronuncia
dragon. Dovresti visualizzare il messaggio "Hai scelto il drago".
Nella sezione successiva, personalizza i prompt per ogni aiuto che l'utente può selezionare.
Personalizzare i prompt utilizzando le condizioni
In questa sezione, aggiungi le condizioni per ogni opzione che l'utente può scegliere e un prompt personalizzato per ogni condizione.
Personalizzare il messaggio dragon
Per aggiornare la condizione e personalizzare il prompt quando un utente sceglie "drago":
- Apri
custom/scenes/Fortune.yamlnell'editor di testo. - Sostituisci i dati
conditionalEventscon 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, la tua Azione fornisce una fortuna in base a questa selezione. Poi aggiungi le altre due selezioni.
Personalizzare i translator e i compass
Per aggiungere le condizioni e personalizzare i prompt per quando un utente dice "traduttore" o "bussola", segui questi passaggi:
- Nel file
custom/scenes/Fortune.yaml, aggiungi le altre due condizioni sotto la 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.
Testare l'azione nel simulatore
A questo punto, l'azione deve fornire all'utente un messaggio personalizzato in base all'opzione selezionata.
Per testare l'azione, segui questi passaggi:
- 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 appnel campo Input e premi Invio. - Digita Sì nel campo Input e premi Invio. In alternativa, fai clic sul chip di suggerimento Sì.
- Fai clic, digita o pronuncia
Translator.

Dovresti ricevere la fortuna appropriata per l'opzione "Traduttore".
3. Aggiungere un ciclo di gioco
In questa sezione, configura l'azione in modo che l'utente possa selezionare un'altra opzione e ascoltare un'altra fortuna dopo aver effettuato una selezione. Questa modifica è simile al messaggio "Vuoi giocare di nuovo?" alla fine di una partita. Per creare questo ciclo, puoi riutilizzare gli intent yes e no creati in precedenza e aggiungerli a una nuova scena denominata Again.
Crea scena Again
In questa sezione, crea una nuova scena Again e aggiungi un prompt che chiede all'utente se vuole selezionare un'opzione diversa.
Per creare e configurare la scena Again:
- Crea un nuovo file denominato
Again.yamlnella directoryscenes:
touch custom/scenes/Again.yaml
- Apri
custom/scenes/Again.yamlnell'editor di testo. - Aggiungi i seguenti dati
onEnteraAgain.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 dalla scena Fortune alla scena Again
Dopo aver ricevuto la profezia, la conversazione deve passare alla nuova scena Again.
Per aggiungere una transizione dalla scena Fortune alla scena Again:
- Apri
custom/scenes/Fortune.yamlnell'editor di testo. - Aggiungi
transitionToScene: Againa 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.
Testare l'azione nel simulatore
A questo punto, l'azione deve fornire il seguente prompt all'utente dopo che ha ricevuto la sua fortuna: "Questo è ciò che vedo per te. Vuoi scegliere un'altra opzione ed esplorare un altro futuro?"
Per testare l'azione, segui questi passaggi:
- 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 appnel campo Input e premi Invio. - Digita
Yesnel campo Input e premi Invio. In alternativa, fai clic sul chip di suggerimento Sì. - Fai clic, digita o pronuncia
dragon.

Dovresti ricevere la fortuna per l'opzione del drago e il prompt Again.
Aggiungere intent e passare alla scena Again
In questa sezione, aggiungi gli intent yes e no alla scena Again in modo che l'azione comprenda se l'utente vuole scegliere una nuova opzione o meno. 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.yamlnell'editor di testo. - Aggiungi i dati
intentEventsnella parte superiore 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.
Testare l'azione nel simulatore
L'azione ora dovrebbe capire se l'utente vuole scegliere una nuova opzione o terminare la conversazione.
Per testare l'intent yes, segui questi passaggi:
- 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 appnel campo Input e premi Invio. - Digita
Yesnel campo Input e premi Invio. In alternativa, fai clic sul chip di suggerimento Sì. - Fai clic, digita o pronuncia una delle opzioni.
- Digita
Yesnel campo Input e premi Invio.

Dovresti ricevere il prompt "Cosa scegli per aiutarti nella tua missione: un drago, un traduttore o una bussola?"
Per testare l'intent no, segui questi passaggi:
- Fai clic, digita o pronuncia una delle opzioni.
- Digita
Nonel campo di input e premi Invio.
Dovresti ricevere il prompt End conversation: "Mi fa piacere che tu sia soddisfatto della tua scelta. In bocca al lupo per la tua missione. Addio."
4. Aggiungere un percorso di supporto
Ora hai creato il percorso principale seguito dalla maggior parte degli utenti nella tua Azione. Tuttavia, l'utente potrebbe rispondere alla domanda della scena Fortune: "Cosa scegli per aiutarti nella tua missione: un drago, un traduttore o una bussola?" con una scelta che non è una delle opzioni fornite.
In questa sezione, configura l'azione in modo che comprenda quando un utente dice "magia", "soldi", "cavallo" o "telefono" e che inviti nuovamente l'utente a scegliere una delle tre opzioni originali quando ne seleziona una di queste. 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 all'interno dell'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, configuri l'azione in modo da estrarre l'aiuto scelto dall'utente e fare riferimento a questa 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 i dati nell'input di un utente.
Per creare il tipo unavailable_options, segui questi passaggi:
- Crea un nuovo file denominato
unavailable_options.yamlnella directorytypes:
touch custom/types/unavailable_options.yaml
- Apri
custom/types/unavailable_options.yamlnell'editor di testo. - Aggiungi i seguenti dati
synonymsal 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
Successivamente, crea un intent chiamato other_option e aggiungi frasi di addestramento che includono le opzioni del tipo unavailable_options. Questo intent viene abbinato 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.yamlnella directoryintents:
touch custom/intents/other_option.yaml
- Apri
custom/intents/other_option.yamlnell'editor di testo. - Aggiungi i seguenti dati
parametersetrainingPhrasesal 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 annoti 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 vedrai nella sezione successiva.
- Salva il file.
Aggiungi l'intento other_option alla scena Fortune
Ora hai un intent, other_option, in grado di gestire un utente che specifica un'opzione diversa da quelle originali. In questa sezione, aggiungi l'intent other_option alla scena Fortune. Utilizzi il parametro intent per personalizzare il prompt in base all'input dell'utente.
Per aggiungere l'intent other_option alla scena Fortune:
- Apri
custom/scenes/Fortune.yamlnell'editor di testo. - Aggiungi i seguenti dati
intentEventstra i daticonditionalEventseslots:
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 parametro intent, mentre $intent.params.chosenUnavailableOption.original si riferisce al valore di quell'oggetto. La proprietà original si riferisce all'input non elaborato specificato dall'utente.
Quando un utente pronuncia un'opzione elencata nel tipo unavailable_options durante la scena Fortune, viene abbinato l'intent other_option e viene aggiunto un prompt alla coda dei prompt. Poiché non è stata specificata alcuna transizione, il ciclo di esecuzione della scena continua rivalutando la fase delle condizioni. Lo slot chosenOptions aggiunge quindi il suo prompt alla coda dei prompt, che viene inviata all'utente.
Testare l'azione nel simulatore
Ora l'azione dovrebbe rispondere in modo appropriato quando un utente seleziona una delle opzioni elencate nel tipo unavailable_options e specificare l'ausilio selezionato. L'azione dovrebbe quindi chiedere nuovamente all'utente di scegliere una delle opzioni 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 appnel campo Input e premi Invio. - Digita
Yesnel campo Input e premi Invio. In alternativa, fai clic sul chip di suggerimento Sì. - Digita
magicnel campo Input e premi Invio.

Potresti notare che il prompt non suona correttamente quando l'utente sceglie "magia" a causa dell'articolo "un" che lo precede. Affronterai questo problema nelle sezioni seguenti.
Aggiungi l'unavailable_options handler
Per inserire l'articolo "un" prima delle scelte appropriate del tipo unavailable_options, puoi configurare un gestore di eventi nella logica di evasione per verificare se l'opzione scelta dall'utente richiede l'articolo "un" prima. Innanzitutto, devi configurare l'azione per chiamare l'handler dalla scena Fortune.
Per aggiungere il gestore unavailable_options alla scena Fortune:
- Apri
custom/scenes/Fortune.yamlnell'editor di testo. - Aggiorna il file
Fortune.yamlcon i seguenti datiintentEvents:
Fortune.yaml
intentEvents:
- handler:
webhookHandler: unavailable_options
intent: other_option
- Salva il file.
Aggiorna e implementa l'evasione
Ora che hai configurato l'azione per chiamare il gestore di eventi unavailable_options, puoi aggiornarlo nell'intent e implementarlo.
Per aggiornare l'evasione, segui questi passaggi:
- Apri
webhooks/ActionsOnGoogleFulfillment/index.jsnell'editor di testo. - Aggiungi il seguente codice a
index.jssotto 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
optiondall'oggettoconve li assegna alla proprietàoriginal, che è l'input non elaborato dell'utente.option - Assegna
optionKeyalla proprietàresolved, che è la chiave per il tipounavailable_options - Controlla se
optionKeyè una delle opzioni che richiede l'articolo "un"; in caso affermativo, crea il messaggio con l'articolo "un" aggiunto - Aggiunge il messaggio tramite
conv.add(message)
Aggiorna gestori
Per consentire all'azione di utilizzare unavailable_options, aggiungi il gestore unavailable_options a webhooks/ActionsOnGoogleFulfillment.yaml.
- Aggiungi il nome del gestore
unavailable_optionsaActionsOnGoogleFulfillment.yaml:
ActionsOnGoogleFulfillment.yaml
handlers: - name: greeting - name: unavailable_options inlineCloudFunction: executeFunction: ActionsOnGoogleFulfillment
- Salva il file.
Testare l'azione nel simulatore
L'azione ora dovrebbe modificare la richiesta in base al fatto che la scelta dell'utente dal tipo unavailable_options richieda l'articolo "un" prima.
Per testare l'azione, segui questi passaggi:
- 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 appnel campo Input e premi Invio. - Digita
Yesnel campo Input e premi Invio. In alternativa, fai clic sul chip di suggerimento Sì. - Digita
magicnel campo Input e premi Invio. Poi digitahorsenel campo Input e premi Invio.

L'azione deve aggiungere l'articolo "un" prima della scelta "cavallo", mentre deve costruire il prompt senza l'articolo "un" per la scelta "magico".
5. Visualizzare l'azione nella console di Actions
L'SDK Actions è interoperabile con un IDE basato sul web chiamato Actions Builder, integrato nella console Actions. Puoi eseguire il push del file system locale nella bozza dell'azione nella console con il comando gactions push. La console Azioni fornisce una rappresentazione visiva della configurazione dell'azione. Visualizzare la tua Azione in modo schematico può essere utile durante lo sviluppo e non influisce sulla versione dell'Azione utilizzata per i test.
Per eseguire il push del progetto Azioni e visualizzarlo nella console Azioni:
- Nel terminale, esegui questo comando per eseguire il push del progetto nella console Azioni:
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 Sviluppa nella barra di navigazione in alto.
- Fai clic sulla Freccia menu a discesa accanto a Scene e poi su Avvia. Dovresti visualizzare una rappresentazione visiva della scena
Startdell'azione, come mostrato nello screenshot seguente:

Pulire il progetto [consigliato]
Per evitare possibili addebiti, ti consigliamo di rimuovere i progetti che non intendi utilizzare. Per eliminare i progetti che hai creato in questo codelab:
- Per eliminare il progetto Cloud e le risorse, completa i passaggi elencati nella sezione Chiusura (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 tuo progetto verrà rimosso automaticamente dopo circa 30 giorni.
6. Complimenti!
Ora conosci le competenze intermedie necessarie per creare azioni 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 dati dall'utente
- 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 Azioni per l'Assistente Google
- Pagina GitHub di Azioni su Google per esempi di codice e librerie
- La community Reddit ufficiale per gli sviluppatori che lavorano con l'Assistente Google
- Linee guida per la progettazione di conversazioni per best practice e linee guida relative alle Azioni conversazionali
Seguici su Twitter @ActionsOnGoogle per rimanere aggiornato sui nostri ultimi annunci e twitta con l'hashtag #AoGDevs per condividere ciò che hai creato.
Sondaggio di opinione
Prima di andare, compila un breve sondaggio sulla tua esperienza.