Créer des actions pour l'Assistant Google avec Actions Builder (niveau 2)

1. Présentation

La plate-forme pour les développeurs dédiée à l'Assistant Google vous permet de créer des logiciels visant à étendre les fonctionnalités de cet assistant personnel virtuel sur plus d'un milliard d'appareils (enceintes intelligentes, téléphones, voitures, téléviseurs, casques audio, etc.). Cet assistant simplifie la vie des utilisateurs qui lui demandent d'accomplir des tâches (par exemple, faire des courses, réserver un chauffeur, etc.). En tant que développeur, vous pouvez utiliser cette plate-forme pour créer et gérer facilement des échanges agréables et efficaces entre les utilisateurs et votre propre service de traitement tiers.

Cet atelier de programmation aborde les concepts de niveau intermédiaire du développement avec l'Assistant Google et s'appuie sur l'action créée dans l'atelier de niveau 1. Nous vous recommandons vivement de terminer l'atelier de programmation de niveau 1 avant de démarrer celui-ci.

L'action que vous créez dans cet atelier de programmation prédit aux utilisateurs leur avenir concernant leur quête dans les terres légendaires de Gryffinberg, en fonction de l'aide qu'ils choisissent.

Objectifs de l'atelier

Dans cet atelier de programmation, vous allez créer une action conversationnelle sophistiquée qui intègre les fonctions suivantes :

  • Collecter des données auprès de l'utilisateur et modifier les invites de conversation en fonction de la valeur
  • Répondre à des questions complémentaires pour poursuivre la conversation
  • Créer une boucle de jeu pour que l'utilisateur puisse interagir à nouveau avec l'action après avoir obtenu une prédiction

Avant de commencer à créer cette action, vous pouvez interagir avec l'action en direct sur votre appareil avec l'Assistant Google intégré en disant Hey Google, parle à Fate and Fortune. La conversation par défaut via cette action pour un utilisateur connu ressemble à l'interaction suivante :

dd6f5c61296b8b50.png

eba043f546aa8c51.png

Points abordés

  • Utiliser des emplacements pour collecter des données auprès de l'utilisateur
  • Utiliser des conditions pour ajouter une logique à une scène
  • Ajouter une boucle de jeu
  • Ajouter un déroulement de conversation

Prérequis

Les prérequis pour cet atelier de programmation sont les suivants :

Une connaissance de JavaScript (ES6) est vivement recommandée, mais non obligatoire, pour comprendre le code de traitement utilisé dans cet atelier de programmation.

2. Continuer à créer une interface de conversation

Dans le premier atelier de programmation, vous avez créé une action conversationnelle simple avec une seule scène, Start.

Dans celui-ci, vous allez enrichir la conversation associée à votre action. Dans les sections suivantes, vous allez configurer l'action pour effectuer les opérations suivantes :

  • Passer à une nouvelle scène Fortune lorsque l'utilisateur souhaite connaître son avenir
  • Demander à l'utilisateur l'aide qu'il souhaite choisir pour sa quête
  • Proposer une prédiction personnalisée en fonction du choix de l'utilisateur

Créer une scène Fortune

Dans cette section, vous allez créer une scène Fortune et définir la façon dont l'utilisateur y accède pendant la conversation.

Pour créer une scène appelée Fortune, procédez comme suit :

  1. Ouvrez le projet Actions de l'atelier de programmation de niveau 1.
  2. Dans la barre de navigation, cliquez sur Develop (Développer).
  3. Sous Scenes (Scènes), cliquez sur la scène Start (Démarrer).
  4. Cliquez sur l'intent yes (oui) (dans la section When yes is matched [Lorsque "oui" est ciblé]) pour accéder aux options.
  5. Décochez la case Send prompts (Envoyer des invites) pour supprimer l'invite.
  6. Dans la section Transition, cliquez sur le menu déroulant, puis cliquez dans la zone de texte et saisissez Fortune.
  7. Cliquez sur Ajouter. Cette opération crée une scène appelée Fortune. Elle ajoute également une transition entre la scène Start et la scène Fortune, lorsque l'utilisateur souhaite qu'on lui prédise son avenir.

56682a0c7459b98c.png

Définir une logique de conversation pour la scène Fortune

Dans cet atelier de programmation, vous allez configurer votre scène Fortune pour demander à l'utilisateur What do you choose to help you on your quest, a dragon, a translator, or a compass? (Que choisissez-vous pour vous aider dans votre quête : un dragon, un traducteur ou une boussole ?). Vous pouvez utiliser la fonctionnalité appelée remplissage d'emplacements pour recueillir les informations nécessaires auprès de l'utilisateur avant de continuer.

Votre action propose des prédictions pour trois aides : un dragon, un traducteur et une boussole. Pour configurer votre action afin d'identifier ces trois options dans les entrées utilisateur, vous devez créer un type.

Vous pouvez vous servir des types à l'étape de remplissage d'emplacements d'une scène pour définir les informations que vous souhaitez recueillir auprès de l'utilisateur. Lorsque le moteur NLU détecte qu'un emplacement correspond à une entrée utilisateur, il l'extrait en tant que paramètre saisi afin que vous puissiez exécuter la logique dans une scène.

Créer le type available_options

Dans cette section, vous allez créer un type appelé available_options, qui spécifie les trois options que les utilisateurs peuvent choisir (dragon, traducteur et boussole) en réponse à l'invite. Vous allez également définir quelques synonymes pour ces options, au cas où l'utilisateur prononcerait un mot similaire. Dans une section ultérieure, vous ajouterez le type available_options à un emplacement pour indiquer que vous voulez obtenir le choix de l'utilisateur.

Pour créer le type available_options, procédez comme suit :

  1. Dans la barre de navigation, cliquez sur Types.
  2. Cliquez sur + (signe plus), saisissez available_options, puis appuyez sur Enter.
  3. Cliquez sur available_options pour ouvrir les options.

Les types sont configurés en tant que paires clé/valeur, où la clé correspond au nom du type et les valeurs sont des synonymes de cette clé. Lorsque vous définissez la clé, celle-ci est automatiquement ajoutée en tant que valeur.

Pour ajouter les trois options proposées à l'utilisateur, procédez comme suit :

  1. Faites défiler la page jusqu'à la section Ajouter des entrées.
  2. Dans le champ New entry (Nouvelle entrée), saisissez dragon, puis appuyez sur Enter. Cette action crée une clé dragon.
  3. Saisissez hydra dans le champ Add values (Ajouter des valeurs), puis appuyez sur Enter pour l'ajouter en tant que valeur (synonyme). Répétez l'opération pour la valeur lizard.
  4. Ajoutez les autres clés et valeurs correspondantes :
  • translator | translator, communicator, machine, decoder, translate
  • compass | compass, direction, guide

8333b1b67445f21.png

  1. Cliquez sur Enregistrer.

Votre action comprend désormais que les options available_options sont un dragon, un traducteur et une boussole, et elle reconnaît quelques synonymes.

Configurer le remplissage d'emplacements

Vous devez ensuite configurer le remplissage d'emplacements dans la scène Fortune. Pour configurer la logique de remplissage d'emplacements, procédez comme suit :

  1. Dans la barre de navigation, sous Scenes (Scènes), cliquez sur Fortune (Prédiction).
  2. Dans la scène Fortune, cliquez sur + (signe plus) pour le remplissage d'emplacements.
  3. Dans le champ Enter slot name (Saisir un nom d'emplacement) , ajoutez chosenOptions comme nom d'emplacement.
  4. Dans la liste déroulante Select type (Sélectionner un type), choisissez le type d'emplacement available_options.
  5. Cochez la case This slot is required (Cet emplacement est obligatoire).

a461b906476e244.png

  1. Cochez la case Send prompts (Envoyer des invites), puis ajoutez le message et les chips de suggestion suivants :
candidates:
  - first_simple:
      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'
  1. Cliquez sur Enregistrer.

Vous venez d'ajouter le type available_options à l'emplacement, qui indique à votre action les informations que vous devez collecter auprès de l'utilisateur (son choix d'aide) avant de continuer. Vous avez également configuré une invite dans l'emplacement, qui est ajoutée à la file d'attente d'invites lorsque l'utilisateur atteint l'étape de remplissage d'emplacements de la scène.

Notez que lorsque vous nommez l'emplacement chosenOptions, le champ Customize slot value writeback (Personnaliser la valeur envoyée au paramètre de session) est remplacé par le même nom ($session.params.chosenOptions). Vous pouvez accéder à ce paramètre via ce nom dans Actions Builder et dans votre traitement via la bibliothèque cliente.

Configurer la condition scene.slots.status == "FINAL"

Lorsque vous ajoutez un emplacement, la condition scene.slots.status == "FINAL" est automatiquement ajoutée à la liste des conditions.

La condition scene.slots.status == "FINAL" vérifie si le remplissage d'emplacements est terminé. Une fois que les emplacements sont remplis, la condition peut déclencher un webhook, passer à une nouvelle scène ou ajouter des invites à la file d'attente d'invites.

Dans cette section, vous allez configurer la condition scene.slots.status == "FINAL" pour ajouter une invite à la file d'attente une fois les emplacements remplis.

Pour ajouter cette invite à la condition FINAL, procédez comme suit :

  1. Cliquez sur scene.slots.status == "FINAL" pour ouvrir la fenêtre des options.
  2. Cochez la case Send prompts (Envoyer des invites), puis ajoutez l'invite suivante :
candidates:
  - first_simple:
      variants:
        - speech: You picked $session.params.chosenOptions.
  1. Cliquez sur Enregistrer.

Tester votre action dans le simulateur

À ce stade, vous avez défini les options que l'utilisateur devrait sélectionner pour remplir l'emplacement. Après avoir obtenu ces informations auprès de l'utilisateur, votre action devrait fournir une invite en rapport avec l'option qu'il a choisie.

Pour tester votre action, procédez comme suit :

  1. Dans la barre de navigation, cliquez sur Test (Tester).
  2. Saisissez Talk to my test app (ou cliquez sur ce bouton) dans le champ Input (Entrée), puis appuyez sur Enter.
  3. Saisissez Yes dans le champ Input (Entrée), puis appuyez sur Enter. Vous pouvez également cliquer sur le chip de suggestion Yes (Oui).

a899d45c542668f6.png

  1. Saisissez ou dites dragon, ou cliquez sur ce mot. Vous devriez obtenir l'invite You picked dragon(Vous avez choisi le dragon).

Dans la section suivante, vous allez personnaliser les invites pour chaque aide que l'utilisateur peut sélectionner.

Personnaliser les invites à l'aide de conditions

Dans cette section, vous allez ajouter des conditions pour chaque option que l'utilisateur peut choisir, ainsi qu'une invite personnalisée pour chaque condition.

Personnaliser la prédiction pour dragon

Pour modifier la condition et personnaliser l'invite qui se déclenche lorsqu'un utilisateur opte pour le dragon, procédez comme suit :

  1. Dans la barre de navigation, cliquez sur Develop (Développer).
  2. Dans la barre de navigation, cliquez sur la scène Fortune (Prédiction).
  3. Cliquez sur scene.slots.status == "FINAL" pour ouvrir la fenêtre des options.
  4. Remplacez la déclaration de condition par scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon".
  5. Cochez la case Send prompts (Envoyer des invites).
  6. Modifiez l'invite avec la prédiction suivante dans l'éditeur de code :
candidates:
  - first_simple:
      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. Cliquez sur Enregistrer.

d31767232ad908bd.png

Désormais, lorsqu'un utilisateur dit dragon ou un synonyme, votre action fournit une prédiction basée sur ce choix. Ajoutez ensuite les deux autres options.

Personnaliser la prédiction pour translator

Pour ajouter cette condition et personnaliser l'invite qui s'affiche lorsqu'un utilisateur sélectionne "translator" (traducteur), procédez comme suit :

  1. Cliquez sur + (signe plus) à côté de Condition.
  2. Ajoutez scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" au champ else if.
  3. Cochez la case Send prompts (Envoyer des invites).
  4. Ajoutez l'invite suivante dans votre éditeur de code :
candidates:
  - first_simple:
      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 subsequent journeys across the
            earth. After its work is done, it retires honorably to a premier
            location in the Gryffinberg History Museum.
  1. Cliquez sur Enregistrer.

c1af65e70dbf3dfe.png

Personnaliser la prédiction pour compass

Pour ajouter cette condition et personnaliser l'invite qui s'affiche lorsqu'un utilisateur sélectionne "compass" (boussole), procédez comme suit :

  1. Cliquez sur + (signe plus) à côté de Condition.
  2. Ajoutez scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" à la zone de texte else if.
  3. Cochez la case Send prompts (Envoyer des invites).
  4. Ajoutez l'invite suivante dans l'éditeur de code :
candidates:
  - first_simple:
      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. Cliquez sur Enregistrer.

Tester votre action dans le simulateur

À ce stade, votre action devrait proposer à l'utilisateur une prédiction personnalisée en fonction de son choix.

Pour tester votre action, procédez comme suit :

  1. Dans la barre de navigation, cliquez sur Test (Tester).
  2. Saisissez Talk to my test app dans le champ Input (Entrée), puis appuyez sur Enter.
  3. Saisissez Yes dans le champ Input (Entrée), puis appuyez sur Enter. Vous pouvez également cliquer sur le chip de suggestion Yes (Oui).
  4. Saisissez ou dites Translator, ou cliquez sur ce mot.

29e17f950bd0dd71.png

Vous devriez recevoir la bonne prédiction pour l'option "translator" (traducteur).

3. Ajouter une boucle de jeu

Dans cette section, vous allez configurer votre action afin que l'utilisateur puisse sélectionner une autre option et entendre une prédiction différente après avoir effectué son choix. Cette alternative est basée sur le même principe que le message Do you want to play again? (Voulez-vous rejouer ?) à la fin d'un jeu. Pour créer cette boucle, vous pouvez réutiliser les intents yes et no créés précédemment, puis les ajouter à une nouvelle scène appelée Again.

Créer une scène Again

Dans cette section, vous allez créer une scène Again et ajouter une invite demandant à l'utilisateur s'il souhaite choisir une autre option.

Pour créer la scène Again, procédez comme suit :

  1. Dans la barre de navigation, cliquez sur Develop (Développer).
  2. Cliquez sur + (signe plus) sous Scenes (Scènes).
  3. Saisissez Again, puis appuyez sur Enter.
  4. Cliquez sur la scène Again dans la barre de navigation.
  5. Cliquez sur + (signe plus) à côté de l'option On enter (Lors de l'entrée).
  6. Cochez la case Send prompts (Envoyer des invites), puis ajoutez l'invite et les chips de suggestion suivants :
candidates:
  - first_simple:
      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. Cliquez sur Enregistrer.

Ajouter une transition entre la scène Fortune et la scène Again

Une fois que l'utilisateur a reçu sa prédiction, la conversation doit passer à la nouvelle scène Again.

Pour ajouter une transition entre la scène Fortune et la scène Again, procédez comme suit :

  1. Cliquez sur la scène Fortune (Prédiction).
  2. Cliquez sur la première condition (scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon") pour ouvrir la fenêtre des options.
  3. Faites défiler les options, puis sélectionnez Again sous Transition.
  4. Cliquez sur Enregistrer.
  5. Cliquez sur la deuxième condition pour ouvrir la fenêtre des options.
  6. Faites défiler les options, puis sélectionnez Again sous Transition.
  7. Cliquez sur Enregistrer.
  8. Cliquez sur la troisième condition pour ouvrir la fenêtre des options.
  9. Faites défiler les options, puis sélectionnez Again sous Transition.
  10. Cliquez sur Enregistrer.

Tester votre action dans le simulateur

À ce stade, votre action devrait fournir l'invite suivante après que l'utilisateur a reçu sa prédiction : "That is what I see for you. Would you like to choose a different option and explore another future?" (C'est ce que je prédis pour vous. Voulez-vous choisir une autre option et découvrir un autre avenir ?).

Pour tester votre action, procédez comme suit :

  1. Dans la barre de navigation, cliquez sur Test (Tester).
  2. Saisissez Talk to my test app dans le champ Input (Entrée), puis appuyez sur Enter.
  3. Saisissez Yes dans le champ Input (Entrée), puis appuyez sur Enter. Vous pouvez également cliquer sur le chip de suggestion Yes (Oui).
  4. Saisissez ou dites dragon, ou cliquez sur ce mot.

b299e9fed9aedb69.png

Vous devriez recevoir la prédiction correspondant au dragon et l'invite Again.

Ajouter des intents et passer à la scène Again

Dans cette section, vous allez ajouter les intents yes et no à la scène Again pour que votre action comprenne si l'utilisateur souhaite choisir une nouvelle option ou non. Vous allez également ajouter les transitions appropriées pour les intents yes et no. L'intent yes permet de passer à la scène Fortune, tandis que l'intent no permet de passer à la scène système End conversation.

Pour ajouter des intents et passer à la scène Again, procédez comme suit :

  1. Dans la barre de navigation, cliquez sur Develop (Développer).
  2. Cliquez sur la scène Again.
  3. Cliquez sur + (signe plus) à côté de l'option User intent handling (Gestion des intents utilisateur).
  4. Sélectionnez yes (oui) dans le menu déroulant de l'intent.
  5. Sélectionnez Fortune dans le menu déroulant Transition.
  6. Cliquez sur Enregistrer.

c2efba35ea881b0d.png

  1. Cliquez sur + (signe plus) à côté de l'option User intent handling (Gestion des intents utilisateur).
  2. Sélectionnez no (non) dans le menu déroulant de l'intent.
  3. Sélectionnez End conversation (Mettre fin à la conversation) dans le menu déroulant Transition.
  4. Cochez la case Send prompts (Envoyer des invites), puis ajoutez les invites suivantes dans l'éditeur de code :
candidates:
  - first_simple:
      variants:
        - speech: >-
            It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell.
  1. Cliquez sur Enregistrer.

Tester votre action dans le simulateur

Votre action devrait désormais comprendre si l'utilisateur souhaite choisir une nouvelle option ou mettre fin à la conversation.

Pour tester l'intent yes, procédez comme suit :

  1. Dans la barre de navigation, cliquez sur Test (Tester).
  2. Saisissez Talk to my test app dans le champ Input (Entrée), puis appuyez sur Enter.
  3. Saisissez Yes dans le champ Input (Entrée), puis appuyez sur Enter. Vous pouvez également cliquer sur le chip de suggestion Yes (Oui).
  4. Saisissez ou prononcez l'une des options, ou cliquez dessus.
  5. Saisissez Yes dans le champ Input (Entrée), puis appuyez sur Enter.

5d0690332efe2e29.png

Vous devriez obtenir l'invite What do you choose to help you on your quest, a dragon, a translator, or a compass? (Que choisissez-vous pour vous aider dans votre quête : un dragon, un traducteur ou une boussole ?).

Pour tester l'intent no, procédez comme suit :

  1. Saisissez ou prononcez l'une des options, ou cliquez dessus.
  2. Saisissez No dans le champ "Input" (Entrée), puis appuyez sur Enter.

Vous devriez obtenir l'invite End conversation : It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell. (Je suis ravi que vous soyez satisfait de votre choix. Bonne chance pour votre quête ! Adieu.).

4. Ajouter un déroulement de conversation

Vous venez de créer l'interaction principale que la plupart des utilisateurs connaîtront dans votre action. Toutefois, l'utilisateur peut répondre à l'invite de la scène Fortune, par exemple Que choisissez-vous pour vous aider dans votre quête : un dragon, un traducteur ou une boussole, avec un choix qui ne figure pas parmi les options proposées.

Dans cette section, vous allez configurer votre action pour qu'elle comprenne lorsqu'un utilisateur choisit l'option {0}magic" money" cheval, e-chevet ou téléphone, et qu'elle invite l'utilisateur à choisir l'une des trois options initiales. Pour configurer cette logique, vous devez créer un type qui contient ces autres choix et un intent other_option qui est ciblé lorsqu'un utilisateur prononce l'une de ces options. Vous devez aussi annoter les expressions d'entraînement de l'intent other_option pour identifier et extraire les paramètres d'intent.

Lorsque le moteur de traitement du langage naturel (NLU, Natural Language Language) de l'Assistant détecte une correspondance de paramètre dans une entrée utilisateur, il extrait la valeur en tant que paramètre saisi afin que vous puissiez exécuter la logique dans une scène. Dans cet atelier de programmation, vous allez configurer votre action de façon à extraire l'aide sélectionnée par l'utilisateur et à faire référence à ce choix dans une invite.

Créer le type unavailable_options

Vous pouvez à présent créer le type unavailable_options contenant différentes options pour que votre action puisse identifier ces données dans l'entrée utilisateur.

Pour créer le type unavailable_options, procédez comme suit :

  1. Dans la barre de navigation, cliquez sur Develop (Développer).
  2. Cliquez sur + (signe plus) sous Types.
  3. Saisissez unavailable_options, puis appuyez sur Enter.
  4. Cliquez sur unavailable_options pour ouvrir les options.
  5. Saisissez les entrées et valeurs correspondantes suivantes dans la section Add entries (Ajouter des entrées) :

horse

horse, stallion, steed

magic

magic, enchanted, spells

money

money, cash, gold

phone

phone, cell, apps

Le tableau des paires clé/valeur devrait se présenter comme suit :

c9e119e0f5fb2a47.png

  1. Cliquez sur Enregistrer.

Créer l'intent other_option

Créez ensuite un intent appelé other_option et ajoutez des expressions d'entraînement qui incluent les options du type unavailable_options. Cet intent est ciblé lorsque l'utilisateur choisit une option contenue dans le type unavailable_options.

Pour créer et configurer l'intent other_option, procédez comme suit :

  1. Cliquez sur + (signe plus) sous Custom Intents (Intents personnalisés).
  2. Saisissez other_option, puis appuyez sur Enter.
  3. Cliquez sur other_option pour ouvrir la fenêtre.
  4. Ajoutez les expressions d'entraînement suivantes, en appuyant sur Enter après avoir saisi chacune d'elles :
  • I want to use spells
  • I really really want to use a phone
  • magic!
  • cash
  • I want to ride a horse
  1. Dans la section Add intent parameters (Ajouter des paramètres d'intent), utilisez le nom de paramètre chosenUnavailableOption.
  2. Cliquez sur Enregistrer.

Lorsque vous saisissez les expressions d'entraînement, Actions Builder reconnaît spells, phone, magic, cash et horse, les associe au type unavailable_options et les met en surbrillance (les annote). Actions Builder ajoute automatiquement un paramètre d'intent dans la section Add intent parameters (Ajouter des paramètres d'intent), comme illustré ci-dessous.

Ce paramètre d'intent vous permet d'extraire le nom de l'option et d'utiliser cette option dans une invite.

df61d4489f0910.png

Ajouter l'intent other_option à la scène Fortune

Vous disposez à présent d'un intent, other_option, qui peut gérer le fait que l'utilisateur a choisi une option autre que celles proposées au départ. Dans cette section, vous allez ajouter l'intent other_option à la scène Fortune. Vous allez utiliser le paramètre d'intent pour personnaliser l'invite en fonction de l'entrée utilisateur.

Pour ajouter l'intent other_option à la scène Fortune, procédez comme suit :

  1. Cliquez sur la scène Fortune (Prédiction).
  2. Cliquez sur + (signe plus) à côté de l'option User intent handling (Gestion des intents utilisateur).
  3. Sélectionnez other_option dans le menu déroulant de l'intent.
  4. Cochez la case Send prompts (Envoyer des invites), puis ajoutez l'invite suivante :
candidates:
  - first_simple:
      variants:
        - speech: >-
            I have seen the future and a $intent.params.chosenUnavailableOption.original
            will not aid you on your journey. 

L'expression $intent.params.chosenUnavailableOption fait référence à l'objet du paramètre d'intent, et $intent.params.chosenUnavailableOption.original désigne la valeur de cet objet. original property fait référence à l'entrée brute spécifiée par l'utilisateur.

  1. Cliquez sur Enregistrer.

4bab1efbe21056aa.png

Lorsqu'un utilisateur prononce une option figurant dans le type unavailable_options durant la scène Fortune, l'intent other_option est ciblé et ajoute une invite à la file d'attente d'invites. Comme aucune transition n'est spécifiée, la boucle d'exécution de la scène se poursuit en réévaluant l'étape des conditions. L'emplacement chosenOptions ajoute alors son invite à la file d'attente d'invites, qui est transmise à l'utilisateur.

Tester votre action dans le simulateur

Désormais, votre action devrait répondre de manière appropriée lorsqu'un utilisateur choisit l'une des options répertoriées dans le type unavailable_options et spécifie l'aide qu'il souhaite obtenir. Votre action doit ensuite inviter l'utilisateur à choisir l'une des options initiales (un dragon, un traducteur ou une boussole).

Pour tester votre action dans le simulateur :

  1. Dans la barre de navigation, cliquez sur Test (Tester).
  2. Saisissez Talk to my test app dans le champ Input (Entrée), puis appuyez sur Enter.
  3. Saisissez Yes dans le champ Input (Entrée), puis appuyez sur Enter. Vous pouvez également cliquer sur le chip de suggestion Yes (Oui).
  4. Saisissez magic dans le champ Input (Entrée), puis appuyez sur Enter.

3a42c33eca435f32.png

Vous avez peut-être remarqué que l'invite n'est pas correcte lorsque l'utilisateur choisit "magic" (magie) en raison de l'article "a" (une) placé devant ce nom. Vous allez résoudre ce problème dans les sections suivantes.

Ajouter le gestionnaire unavailable_options

Pour placer l'article "a" (un/une) avant les choix appropriés du type unavailable_options, vous pouvez configurer un gestionnaire d'événements dans votre logique de traitement pour vérifier si l'option choisie par l'utilisateur nécessite cet article. Commencez par configurer votre action pour appeler le gestionnaire dans la console.

Pour ajouter le gestionnaire unavailable_options, procédez comme suit :

  1. Dans la barre de navigation, cliquez sur Develop (Développer).
  2. Cliquez sur la scène Fortune.
  3. Sous User intent handling (Gestion des intents utilisateur), cliquez sur When other_option is matched (Quand other_option est ciblé) pour ouvrir la fenêtre.
  4. Décochez la case Send prompts (Envoyer des invites).
  5. Cochez la case Appeler votre webhook.
  6. Saisissez unavailable_options dans la zone de texte du gestionnaire d'événements.

52a0fba115f1b377.png

  1. Cliquez sur Save (Enregistrer).

Modifier et déployer le traitement

Maintenant que vous avez configuré votre action pour appeler le gestionnaire d'événements unavailable_options, vous pouvez le modifier dans votre traitement et le déployer.

Pour modifier le traitement, procédez comme suit :

  1. Dans la barre de navigation, cliquez sur Webhook.
  2. Ajoutez le code suivant sous le gestionnaire greeting :
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. Ajoutez le code suivant sous const app = conversation(); :
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
  1. Cliquez sur Save Fulfillment (Enregistrer le traitement).
  2. Cliquez sur Deploy Fulfillment (Déployer le traitement). Une fois le déploiement effectué, le message Your Cloud Function deployment is up to date (Le déploiement de la fonction Cloud est à jour) s'affiche au-dessus de votre éditeur.

Comprendre le code

Le gestionnaire unavailable_options effectue les opérations suivantes :

  • Il récupère les données option de l'objet conv et attribue option à la propriété original, qui est l'entrée brute de l'utilisateur.
  • Il attribue optionKey à la propriété resolved, qui est la clé du type unavailable_options.
  • Il vérifie si optionKey est l'une des options nécessitant l'article "a" (un/une). Si c'est le cas, le message est créé avec cet article.
  • Il ajoute le message via conv.add(message).

Tester votre action dans le simulateur

Votre action devrait à présent adapter l'invite selon que l'option choisie par l'utilisateur dans le type unavailable_options nécessite l'article "a" (un/une) ou non.

Pour tester votre action, procédez comme suit :

  1. Dans la barre de navigation, cliquez sur Test (Tester).
  2. Saisissez Talk to my test app (ou cliquez sur ce bouton) dans le champ Input (Entrée), puis appuyez sur Enter.
  3. Saisissez Yes dans le champ Input (Entrée), puis appuyez sur Enter. Vous pouvez également cliquer sur le chip de suggestion Yes (Oui).
  4. Saisissez magic dans le champ Input (Entrée), puis appuyez sur Enter.
  5. Saisissez horse dans le champ Input (Entrée), puis appuyez sur Enter.

54ee24c5c3c56e.png

Votre action devrait ajouter l'article "a" (un) avant "horse" (cheval), tout en créant l'invite sans l'article "a" (une) pour "magic" (magie).

Effacer votre projet (recommandé)

Pour éviter de vous facturer des frais, nous vous recommandons de supprimer les projets que vous ne comptez pas utiliser. Pour supprimer ceux que vous avez créés dans cet atelier de programmation :

  1. Suivez la procédure décrite dans la section Arrêter (supprimer) des projets pour supprimer le projet Cloud et ses ressources.
  1. Facultatif: Pour supprimer immédiatement votre projet de la console Actions, consultez Supprimer un projet. Si vous ne le faites pas, votre projet sera supprimé automatiquement après un délai de 30 jours environ.

5. Félicitations !

Vous disposez désormais des compétences intermédiaires nécessaires pour créer des actions pour l'Assistant Google.

Sujets abordés

  • Développer des actions conversationnelles à l'aide de la bibliothèque de traitement Node.js
  • Utiliser des emplacements pour collecter des données auprès de l'utilisateur
  • Utiliser des conditions pour ajouter une logique à la scène
  • Ajouter une boucle de jeu
  • Ajouter un déroulement de conversation

Learn more

Pour en savoir plus sur la création d'actions pour l'Assistant Google, consultez les ressources suivantes :

Suivez @ActionsOnGoogle sur Twitter pour connaître les dernières informations, et envoyez un tweet à #AoGDevs pour montrer votre création.

Enquête

Avant de partir, veuillez répondre à une courte enquête sur votre expérience.