Creare Actions per l'Assistente Google utilizzando l'SDK Actions (livello 2)

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:

dd6f5c61296b8b50.png

eba043f546aa8c51.png

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:

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 Fortune quando 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 Start alla scena Fortune
  • Crea la scena Fortune

Per modificare la scena Start e aggiungere una transizione alla scena Fortune:

  1. Apri il progetto Azioni dal codelab di livello 1 nell'editor di testo.
  2. Apri il file custom/scenes/Start.yaml.
  3. Aggiorna handler per l'intent yes in 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
  1. Salva il file.

Per creare una nuova scena chiamata Fortune:

  1. Vai al progetto codelab Azioni di livello 1 nel terminale.
  2. Crea un nuovo file denominato Fortune.yaml nella directory scenes:
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:

  1. Crea una nuova directory denominata types:
mkdir custom/types
  1. Crea un nuovo file denominato available_options.yaml nella directory types:
touch custom/types/available_options.yaml
  1. Apri custom/types/available_options.yaml nell'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:

  1. Aggiungi i seguenti entities e synonyms nel file available_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
  1. 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:

  1. Apri custom/scenes/Fortune.yaml nell'editor di testo.
  2. Aggiungi i seguenti dati slots al file Fortune.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
  1. 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":

  1. Apri custom/scenes/Fortune.yaml nell'editor di testo.
  2. Aggiungi i dati conditionalEvents all'inizio del file Fortune.yaml:

Fortune.yaml

conditionalEvents:
- condition: scene.slots.status == "FINAL"
  handler:
    staticPrompt:
      candidates:
      - promptResponse:
          firstSimple:
            variants:
            - speech: You picked $session.params.chosenOptions.
  1. 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:

  1. 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
  1. Copia l'URL fornito e incollalo in un browser.
  2. Fai clic o digita Talk to my test app nel campo Input e premi Invio.
  3. Digita Yes nel campo Input e premi Invio. In alternativa, puoi fare clic sul chip di suggerimento .

a899d45c542668f6.png

  1. 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":

  1. Apri custom/scenes/Fortune.yaml nell'editor di testo.
  2. Sostituisci i dati conditionalEvents con il seguente snippet nel file Fortune.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.
  1. 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:

  1. Nel file custom/scenes/Fortune.yaml, aggiungi le altre due condizioni sotto la condizione dragon:

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.
  1. 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:

  1. 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
  1. Copia l'URL fornito e incollalo in un browser.
  2. Digita Talk to my test app nel campo Input e premi Invio.
  3. Digita Sì nel campo Input e premi Invio. In alternativa, fai clic sul chip di suggerimento .
  4. Fai clic, digita o pronuncia Translator.

29e17f950bd0dd71.png

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:

  1. Crea un nuovo file denominato Again.yaml nella directory scenes:
touch custom/scenes/Again.yaml
  1. Apri custom/scenes/Again.yaml nell'editor di testo.
  2. Aggiungi i seguenti dati onEnter a Again.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"
  1. 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:

  1. Apri custom/scenes/Fortune.yaml nell'editor di testo.
  2. 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
  1. 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:

  1. 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
  1. Copia l'URL fornito e incollalo in un browser.
  2. Digita Talk to my test app nel campo Input e premi Invio.
  3. Digita Yes nel campo Input e premi Invio. In alternativa, fai clic sul chip di suggerimento .
  4. Fai clic, digita o pronuncia dragon.

b299e9fed9aedb69.png

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:

  1. Apri custom/scenes/Again.yaml nell'editor di testo.
  2. Aggiungi i dati intentEvents nella parte superiore del file Again.yaml, sopra OnEnter:

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
  1. 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:

  1. 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
  1. Copia l'URL fornito e incollalo in un browser.
  2. Digita Talk to my test app nel campo Input e premi Invio.
  3. Digita Yes nel campo Input e premi Invio. In alternativa, fai clic sul chip di suggerimento .
  4. Fai clic, digita o pronuncia una delle opzioni.
  5. Digita Yes nel campo Input e premi Invio.

5d0690332efe2e29.png

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:

  1. Fai clic, digita o pronuncia una delle opzioni.
  2. Digita No nel 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:

  1. Crea un nuovo file denominato unavailable_options.yaml nella directory types:
touch custom/types/unavailable_options.yaml
  1. Apri custom/types/unavailable_options.yaml nell'editor di testo.
  2. Aggiungi i seguenti dati synonyms al file unavailable_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
  1. 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:

  1. Crea un nuovo file denominato other_option.yaml nella directory intents:
touch custom/intents/other_option.yaml
  1. Apri custom/intents/other_option.yaml nell'editor di testo.
  2. Aggiungi i seguenti dati parameters e trainingPhrases al file other_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.

  1. 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:

  1. Apri custom/scenes/Fortune.yaml nell'editor di testo.
  2. Aggiungi i seguenti dati intentEvents tra i dati conditionalEvents e slots:

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
  1. 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:

  1. 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
  1. Copia l'URL fornito e incollalo in un browser.
  2. Digita Talk to my test app nel campo Input e premi Invio.
  3. Digita Yes nel campo Input e premi Invio. In alternativa, fai clic sul chip di suggerimento .
  4. Digita magic nel campo Input e premi Invio.

3a42c33eca435f32.png

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:

  1. Apri custom/scenes/Fortune.yaml nell'editor di testo.
  2. Aggiorna il file Fortune.yaml con i seguenti dati intentEvents:

Fortune.yaml

intentEvents:
- handler:
    webhookHandler: unavailable_options
  intent: other_option
  1. 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:

  1. Apri webhooks/ActionsOnGoogleFulfillment/index.js nell'editor di testo.
  2. Aggiungi il seguente codice a index.js sotto il gestore greeting:

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);
});
  1. Aggiungi il seguente codice sotto const app = conversation({debug:true});:

index.js

const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
  1. Salva il file.

comprendi il codice

Il gestore unavailable_options esegue le seguenti operazioni:

  • Recupera i dati option dall'oggetto conv e li assegna alla proprietà original, che è l'input non elaborato dell'utente.option
  • Assegna optionKey alla proprietà resolved, che è la chiave per il tipo unavailable_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.

  1. Aggiungi il nome del gestore unavailable_options a ActionsOnGoogleFulfillment.yaml:

ActionsOnGoogleFulfillment.yaml

handlers:
- name: greeting
- name: unavailable_options
inlineCloudFunction:
  executeFunction: ActionsOnGoogleFulfillment
  1. 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:

  1. 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
  1. Copia l'URL fornito e incollalo in un browser.
  2. Fai clic o digita Talk to my test app nel campo Input e premi Invio.
  3. Digita Yes nel campo Input e premi Invio. In alternativa, fai clic sul chip di suggerimento .
  4. Digita magic nel campo Input e premi Invio. Poi digita horse nel campo Input e premi Invio.

54ee24c5c3c56e.png

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:

  1. 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.
  1. Copia l'URL fornito e incollalo in un browser.
  2. Nella console di Actions, fai clic su Sviluppa nella barra di navigazione in alto.
  3. Fai clic sulla Freccia menu a discesa accanto a Scene e poi su Avvia. Dovresti visualizzare una rappresentazione visiva della scena Start dell'azione, come mostrato nello screenshot seguente:

cae526c647f8d40f.png

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:

  1. Per eliminare il progetto Cloud e le risorse, completa i passaggi elencati nella sezione Chiusura (eliminazione) dei progetti.
  1. (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:

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.