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

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:

dd6f5c61296b8b50.png

eba043f546aa8c51.png

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

Per modificare la scena Start e aggiungere una transizione alla scena Fortune, segui questi passaggi:

  1. Apri il progetto Actions dal codelab del 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 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
  1. Salva il file.

Per creare una nuova scena chiamata Fortune, segui questi passaggi:

  1. Accedi al progetto Azioni di livello 1 del codelab 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 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:

  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, 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:

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

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

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

  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.

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:

  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 Immissione 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 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:

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

  1. Nel file custom/scenes/Fortune.yaml, aggiungi le altre due condizioni nella 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.

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:

  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 Immissione e premi Invio. In alternativa, fai clic sul chip di suggerimento .
  4. Fai clic, digita o di' Translator.

29e17f950bd0dd71.png

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:

  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 di 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 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:

  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.

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:

  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 di' dragon.

b299e9fed9aedb69.png

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:

  1. Apri custom/scenes/Again.yaml nell'editor di testo.
  2. Aggiungi i dati intentEvents all'inizio 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.

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:

  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 di immissione e premi Invio.

5d0690332efe2e29.png

Dovresti visualizzare il messaggio "Cosa scegli di aiutarti nella tua missione: un drago, un traduttore o una bussola?".

Per testare l'intent no:

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

  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 di 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

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:

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

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

  1. Apri custom/scenes/Fortune.yaml nell'editor di testo.
  2. Aggiungi i seguenti dati intentEvents tra i dati conditionalEvents e i dati 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 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:

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

  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.

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:

  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 assegna option alla proprietà original, che rappresenta l'input non elaborato dell'utente
  • Assegna optionKey alla proprietà resolved, che è la chiave per il tipo unavailable_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.

  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.

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:

  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 Immissione 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. Digita horse nel campo Input e premi Invio.

54ee24c5c3c56e.png

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:

  1. 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.
  1. Copia l'URL fornito e incollalo in un browser.
  2. Nella console di Actions, fai clic su Develop nella barra di navigazione in alto.
  3. 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:

cae526c647f8d40f.png

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:

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

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.