Créer un intent avec des paramètres

Nous avons maintenant besoin d'un intent capable de programmer un rendez-vous pour le magasin de vélos. Contrairement au premier intent Hours (Horaires), qui ne renvoie que la réponse statique "We're open from 9 AM to 6 PM every day. Is there anything else I can do for you?", (Nous sommes ouverts de 9h à 18h tous les jours. Y a-t-il autre chose que je puisse faire pour vous ?), le nouvel intent doit pouvoir effectuer un ensemble de tâches plus complexe.

Examinons l'interaction suivante entre l'utilisateur et l'agent :

      Utilisateur : Bonjour.

      Agent : Bienvenue. Je peux vous donner les heures d'ouverture du magasin ou vous fixer un rendez-vous. Que préférez-vous ?

      Utilisateur : Je dois prendre rendez-vous pour 15h aujourd'hui.

      Agent : OK. Votre rendez-vous est prévu pour le mercredi 1er août à 15h. À bientôt. Au revoir.

Dans le dialogue ci-dessus, l'énoncé de l'utilisateur "Je dois prendre rendez-vous pour 15h aujourd'hui" contient des informations importantes, "15h" et "aujourd'hui", indiquant l'heure et la date auxquelles l'utilisateur souhaite se rendre au magasin de vélo. La réponse de l'agent inclut les informations de date et d'heure mentionnées dans l'énoncé de l'utilisateur : "OK. Votre rendez-vous est prévu pour le mercredi 1er août à 15h. À bientôt. Au revoir."

Pour un humain, identifier des informations importantes à partir d'énoncés est simple ; cependant, pour une machine, cette tâche est complexe. Nous devons donner aux intents la capacité d'extraire des informations importantes, des paramètres, à partir des énoncés de l'utilisateur.

Extraire des informations à l'aide d'entités et de paramètres

Dialogflow utilise des concepts appelés entités et paramètres pour extraire des informations ciblées des énoncés de l'utilisateur et les convertir en un ensemble de paramètres, qui peuvent ensuite être traités par d'autres fonctions ou systèmes pour effectuer diverses tâches.

Pour créer un nouvel intent avec des paramètres, procédez comme suit :

  1. Créez un intent nommé Make Appointment.
  2. Dans la section Training phrases (Expressions d'entraînement), ajoutez l'expression d'entraînement suivante :

    I need to make an appointment at 3 PM today.

  3. Dans le tableau Action and parameters (Action et paramètres), vérifiez que les entités système @sys.date et @sys.time sont bien affichées.

  4. Dans le tableau Text response (Réponse textuelle), ajoutez l'expression de réponse suivante :

    Got it. I have your appointment scheduled on $date at $time. See you soon. Good-bye.

  5. Cliquez sur ENREGISTRER.

    Figure 5. Organigramme illustrant l'ajout de l'intent Make Appointment (Prendre rendez-vous).

Avec cette configuration, l'intent Make Appointment (Prendre rendez-vous) examine les énoncés de l'utilisateur, capture tous les mots mappés sur les entités système @sys.date et @sys.time intégrées de Dialogflow, et place ces valeurs capturées dans les paramètres $date et $time. Par conséquent, dans la réponse, nous pouvons utiliser $date et $time pour faire référence aux valeurs de date et d'heure capturées à partir des énoncés de l'utilisateur : "OK. Votre rendez-vous est prévu pour le $date à $time. À bientôt. Au revoir."

Dialogflow permet également de créer des entités personnalisées pour extraire des paramètres peu communs ou non classés. Cependant, dans notre scénario, l'utilisation d'entités système est suffisante pour capturer des paramètres classiques, tels que l'heure et la date. Si vous souhaitez en savoir plus sur les entités, consultez la section Entités.

Obtenir des paramètres obligatoires à l'aide du remplissage de cases

Conformément à la bonne pratique de la section précédente, nous devons maintenant fournir davantage d'expressions d'entraînement en plus de l'expression d'entraînement actuelle ("I need to make an appointment at 3 PM today" (Je dois prendre rendez-vous pour 15h aujourd'hui).

Ajoutez les expressions d'entraînement suivantes :

  • Can I schedule service for 4 PM tomorrow?
  • Can I set up an appointment for noon on Friday?

Pour le moment, toutes les expressions d'entraînement contiennent des informations sur l'heure et la date : "15h aujourd'hui", "16h demain" et "vendredi midi". Cependant, dans la réalité, les énoncés des utilisateurs n'incluent pas toujours tous les paramètres nécessaires. Ajoutez les expressions d'entraînement suivantes :

  • Can you fix my road bike?
  • My bike is broken.
  • I'd like to get my bike fixed, I have a mountain bike that needs servicing.
  • I need to fix my bike today.
  • I'd like to schedule an appointment on this Thursday.

Toutes les phrases ci-dessus indiquent que l'utilisateur souhaite planifier un rendez-vous. Ainsi, notre nouvel intent devrait être mis en correspondance avec ces expressions pour gérer la tâche de planification de rendez-vous. Cependant, aucune de ces expressions ne contient d'information sur l'heure, la date ou les deux. Ces phrases sont problématiques dans la mesure où l'intent ne peut pas planifier de rendez-vous sans les informations de date et d'heure.

Dialogflow fournit une fonctionnalité appelée remplissage de cases qui garantit qu'un intent obtient toutes les informations nécessaires de la part d'un utilisateur. Pour activer cette fonctionnalité, nous devons marquer les paramètres comme requis.

Lorsqu'un intent a des paramètres requis, mais qu'il est mis en correspondance avec un énoncé d'utilisateur n'en comportant aucun, il pose des questions directes afin de les obtenir auprès de l'utilisateur. Jetons un coup d'œil au dialogue suivant :

      Utilisateur : Bonjour.

      Agent : Bienvenue. Je peux vous donner les heures d'ouverture du magasin ou vous fixer un rendez-vous. Que préférez-vous ?

      Utilisateur : Je dois réparer mon vélo.

      Agent : D'accord, je peux vous aider. Quel jour souhaitez-vous venir ?

      Utilisateur : Aujourd'hui.

      Agent : Et quelle heure vous convient le mieux ?

      Utilisateur : 15h.

      Agent : OK. Votre rendez-vous est prévu pour le mercredi 1er août à 15h. À bientôt. Au revoir.

Pour rendre les paramètres $time et $date requis et fournir des questions directes aux paramètres, procédez comme suit :

  1. Cliquez sur l'intent Make Appointment (Prendre rendez-vous).
  2. Dans le tableau Action and parameters (Action et paramètres), cochez les cases REQUIRED pour les paramètres $time et $date. Une colonne appelée PROMPTS est créée.
  3. Si le paramètre $date est situé sous le paramètre $time dans le tableau, faites glisser la ligne du paramètre $date au-dessus du paramètre $time. L'emplacement dans le tableau détermine l'ordre dans lequel les questions directes sont posées.
  4. Pour le paramètre $date, cliquez sur le lien Définir les invites dans la colonne PROMPTS et ajoutez les invites suivantes :
    • Okay, I can help you with that. What day do you want to come in?
    • Sure, what day are you coming in?
    • Okay, what day will work for you?
  5. Pour le paramètre $time, cliquez sur le lien Définir les invites et ajoutez les invites suivantes :
    • And what time works for you?
    • What time?
    • Now, what time do you want the appointment?
  6. Cliquez sur ENREGISTRER.
  7. Testez la configuration du remplissage de cases à l'aide du simulateur dans la console Dialogflow.

    Figure 6. Organigramme illustrant les invites de remplissage de cases pour les paramètres requis.

Nous disposons maintenant d'un intent pour nous assurer d'obtenir les informations de date et d'heure dès qu'un utilisateur indique qu'il souhaite prendre rendez-vous. Cependant, pour l'instant, l'intent ne répond que par un prototype de réponse ; aucun rendez-vous réel n'est planifié. Nous devons créer un processus backend, fulfillment, capable d'effectuer la tâche de planification de rendez-vous dans Google Agenda.

Nous verrons comment créer un processus fulfillment pour l'intent Make Appointment (Prendre rendez-vous) dans la section suivante.