Cet article a pour but de présenter les concepts de base de Dialogflow de façon à ce que vous puissiez écrire votre propre Chatbot.

Dialogflow (anciennement API.ai) permet de déterminer l’intention (Intent) d’un utilisateur en utilisant du “Machine Learning” sur ce qu’il dit.

Une fois que l’intention de l’utilisateur a été déterminée, il sera possible de lui répondre en conséquence et, si cela a été configuré, exécuter une action sur un système externe.

Dialogflow ne nécessite aucune connaissance en développement, tout se passe avec une interface graphique.

Connexion à Dialogflow

Pour se connecter à Dialogflow un compte Google sera obligatoire.

Il vous faudra aussi autoriser Dialogflow à :

  • Accéder à vos données dans les services GCP (Google Cloud Platform).
  • Afficher et gérer vos actions dans Google.
  • Accéder à l’assistant vocale.

Connexion à Dialogflow

Concepts de base

Je vais vous décrire chaque concept de base en une phrase avant de les expliquer plus en détail par la suite.

Agent

Un agent représente un module qui analysera ce que dit un utilisateur pour déterminer son intention.

Intent

Représente une intention de l’utilisateur.

Entities

Permet d’extraire des paramètres à partir de ce que dit l’utilisateur.

Events

Un évènement permet de déclencher une intention.

Context

Représente le contexte du dialogue.

Fulfillment

Permet de spécifier un Webhook qui sera appelé lorsqu’une intention a été déterminée.

Follow-up intent

Permet de structurer un arbre de discussion (chat-flow).

Agents

Nous allons commencer par créer un nouvel agent.

Nouvel agent

L’agent doit être lié à un projet Google, si vous en avez déjà créé un, sélectionnez le dans la liste.

Relier Agent à un projet Google

Une fois l’agent créé nous pouvons voir qu’il contient par default 2 Intents.

Default Fallback Intent

Le “Default Fallback Intent” est utilisé lorsqu’aucun Intent ne match avec ce que dit l’utilisateur.

Default Welcome Intent

Correspond à l’Intent par défault pour les salutations.

Cette intention contient un event “Welcome” envoyé, par exemple, lorsque vous vous connectez via Google Assistant.

En bas de l’écran vous pouvez voir la liste des réponses qui seront renvoyées aléatoirement par l’Intent.

Liste de réponses

Intent

Commençons par écrire un Intent simple qui va nous retourner la date de création de la société.

intent

Sous la partie User says on retrouve les différentes formes possibles d’entrée qui matcheront avec cet Intent. A noter que, si ce que dit l’utilisateur ne match pas exactement (faute d’orthographe, mot légèrement différent) l’Intent pourra tout de même, dans la limite du possible, être identifié.

La partie Action permet d’identifier l’Intent qui a matché avec l’entrée de l’utilisateur. Cela est très utile pour des systèmes externes qui sont appelés via des Webhooks.

La partie paramètre, permet de spécifier des valeurs qui seront mises dans le contexte ou envoyées à un Webhook. La plupart du temps, ils sont construits à partir de ce que dit l’utilisateur.

Dans la partie réponse, on retrouvera les différentes réponses possibles de l’Intent.

A noter que, si un Webhook est connecté, sa réponse sera prioritaire par rapport à celle de l’Intent.

Type de réponse

Il est possible de spécifier différents types de réponses. Il existe par exemple le type “Basic Card” qui permet de structurer la réponse avec, entre autres, une image et un lien hypertexte.

type de réponse

Pour la réponse “Simple Response” il est possible de spécifier une réponse orale différente de la réponse écrite. Pour cela, il suffit de cliquer sur “Customize audio output”.

Performance

Sur la partie droite de l’écran, on peut tester directement notre agent :

performance

Comme vous pouvez le voir, j’ai volontairement fait une faute d’orthographe à “depui” et j’ai rajouté “t’elle” à la fin. Malgré cela, l’agent arrive à déterminer l’Intent qui match avec la phrase que je lui ai écrite.

Si jamais la phrase dite par un utilisateur n’est pas correctement reconnue, il suffit de l’ajouter directement dans la partie “User says” ou d’utiliser l’outil “Training” de Dialogflow.

Entities

Les Entitites sont comme des types (entier, date, lieu …). Par exemple, une Entitie Room contiendra une énumération des pièces disponibles (cuisine, salon …)

Dialogflow propose de base des Entitites tel que la couleur, les artistes de musique, des dates, des lieux, des prénoms communs …

Pour les Entitites de type Date, lorsque l’utilisateur dit “dans 2 minutes”, la date qui sera mise dans les paramètres sera l’heure actuelle auquel on aura ajouté 2 minutes.

Pour la valeur de chaque nouvelle Entitie, il est possible de définir des synonymes. Cela va permettre de regrouper les différentes valeurs qui sont au final identiques.

Par exemple, si on créé une Entitie de type Room, pour la pièce “Entrée” on pourrait mettre comme synonyme “Couloir” ou “Hall”.

Paramètres

Il est possible d’ajouter des paramètres qui seront extraits de ce que dit l’utilisateur. Un paramètre est forcément lié à une Entitie.

Ces paramètres peuvent être une liste, ils peuvent aussi être obligatoires. Il suffit pour cela de cocher les bonnes options.

paramètres

Sur l’exemple ci-dessus, on peut voir que l’on a un paramètre Name qui est de type @sys.last-name (prénom) qui est obligatoire.

Si jamais ce paramètre n’est pas dans ce que dit l’utilisateur, alors, on lui demandera de le renseigner. Pour cela, dans “prompts” on va pouvoir définir, la question à poser à l’utilisateur, et ses variantes, de façon à récupérer le paramètre obligatoire.

Contexte

Les contextes permettent de stocker des paramètres de façon à pouvoir les réutiliser plus tard.

Par exemple :

contexte

On peut voir dans cet exemple, issu d’un autre projet que j’ai développé, qu’à partir du moment où l’on parle d’une ou plusieurs lumières on n’a plus besoin de les spécifier pour pouvoir interagir avec elles.

Output context

Il est possible de mettre dans un contexte, les paramètres de l’Intent courant, pour cela il suffit de rajouter dans la partie “Add Output Context” le nom du contexte de sortie.

Dans l’exemple ci-dessous les paramètres de l’Intent seront mis dans le contexte User.

output context

Input context

La partie “Add Input Context” permet de spécifier un contexte obligatoire de façon à pouvoir exécuter l’Intent. Cela va permettre de construire des réponses personnalisées. Par exemple, retourner une réponse avec le prénom de l’utilisateur.

Fulfillment

Permet de configurer le Webhook d’une application externe.

Fulfillment

À savoir

Le Webhook doit être une URL en HTTPS. Le certificat doit être valide et ne pas être auto-signé, il doit donc avoir été généré par une autorité de certification.

S‘il y a un quelconque problème avec le Webhook, on aura seulement une erreur 206.

Le timeout pour un Webhook est de 5 secondes.

Follow-up intent

Les Follow-up intent permettent d’architecturer un arbre de conversation (chat-flow).

Dans l’exemple ci-dessous, on peut voir que l’on a deux Follow-up Intent un positif et un négatif.

Follow-up intent

Langues

Dialogflow gère le multi-langue, il est possible de spécifier plusieurs langues pour un agent.

Vous aurez les mêmes Intents. Il suffira simplement de définir les phrases que peut dire l’utilisateur ainsi que les réponses dans la langue cible.

Intégrations

Dialogflow peut être connecté avec plusieurs services comme par exemple, Google Assistant, Slack, Cortana, Alexia, Twitter…

Il suffit pour cela de cocher le service avec lequel vous souhaitez connecter Dialogflow.

Intégrations

Il est possible de télécharger le package nuget ApiAiSDK de façon à interfacer facilement un projet C# avec Dialogflow. Cela va permettre par exemple d’interfacer un Bot Framework avec Dialogflow.

Je décrirais dans un prochain article comment connecter Dialogflow avec Actions on Google de façon à avoir un bot qui sera accessible à partir de Google Assistant.

SoftFluentrecrute

Ne ratez plus aucune actualité avec la newsletter mensuelle de SoftFluent

Newsletter SoftFluent