Dialogflow et Actions on Google, un chatbot pour votre Google Home
Dans cet article nous avons découvert les bases d’Actions on Google et comment initialiser un projet. Nous avions vu qu’il y a trois possibilités d’intégration. Aujourd’hui, pour la suite de notre dossier, je vous propose de découvrir l’une d’entre elles : Dialogflow.
Qu’est-ce que Dialogflow
C’est ce que l’on appelle couramment un moteur de chatbot. Il vous permettra très facilement de développer des applications orientées discussion et donc, idéal pour une application disponible sur Google Home.
L’avantage de cette solution est qu’elle ne nécessite pas forcément d’avoir de connaissances forte en développement. En effet, l’outil est assez simple à prendre en main et ne nécessite dans un premier temps que de la configuration, du temps et de la réflexion.
Aujourd’hui, nous verrons les concepts de bases et son intégration à Actions on Google.
Intégration de Dialogflow à Actions on Google
Dans un premier temps, il vous faut vous créer un projet Actions on Google comme nous l’avions vu dans l’article précédent. Au moment de choisir vos actions, sélectionnez Dialogflow.
Suivez les instructions qui vous sont communiquées à ce moment, cliquez sur Create actions on Dialogflow. Vous arriverez sur le site de Dialogflow. Acceptez les conditions, vérifier les informations de la page sur laquelle vous êtes arrivés (faite notamment attention à la langue) et cliquez sur Create (en haut à droite).
Ensuite, grâce au menu à gauche cliquez sur intégration, puis sur la carte Google Assistant qui devrait se trouver en haut de page. Vous devriez voir s’ouvrir un popup demandant des informations. Celles-ci ne sont nécessaires que si vous souhaitez rendre une application publique. Dans le cadre de cet article, cliquez donc sur le bouton test puis continue. Après une courte phase de paramétrage vous devriez arriver sur le simulateur d’Actions On Google.
L’intégration est terminée, mais si vous tentez de jouer avec le simulateur vous allez vite tourner en rond 🙁
Si vous retournez à votre projet Actions on Google vous verrez que beaucoup de champs ont été pré-remplis. Il ne reste plus qu’à construire notre chatbot.
La théorie
Avant d’entrer dans le vif du sujet il est nécessaire d’avoir un minimum de vocabulaire. En effet, même si Dialogflow ne demande pas forcément de compétences en termes de développement il mobilise des concepts et des mécanismes qui doivent être un minimum maîtrisés. Commençons par les deux principaux.
Les intents
Ce sont les points d’entrées de votre application. Ils vont permettre un genre de catégorisation des phrases de l’utilisateur afin de répondre correctement et éventuellement lancer des actions. Concrètement qu’est-ce que ça veut dire ?
L’exemple
Je souhaite que lorsque je salue mon chatbot il me demande comment je vais. Pour ce faire, il est nécessaire de créer un intent qui va réagir à des formules de salutation et répondre en conséquence. D’un point de vue Dialogflow, voici comment cela se présente.
Ici nous n’avons utilisé que deux éléments. Le premier User Says permet de définir une liste de phrases type actionnant cet intent. Le second response définit une liste de réponses possibles. Lorsqu’il y en a plusieurs, comme ici, le système en choisira une aléatoirement.
Une fois sauvegardé (bouton save en haut à droite) et après quelques calculs de Dialogflow (symbolisé par une animation sur une roue dentée en haut à gauche) votre chatbot est à jour! Si vous revenez au simulateur d’Actions on Google vous devriez voir ceci !
Les entities
Passons maintenant aux entities. Elles sont très fortement liées aux intents. Elles vont nous aider à identifier et à isoler des données au sein d’un intent. Certaines sont déjà définies par le système (les couleurs, les dates, etc.) mais si cela ne vous suffit pas, vous pouvez en créer de nouvelles.
L’exemple
Par exemple, si je crée un intent ‘couleur du ciel’. J’ai choisi de mettre la phrase de déclenchement « Le ciel est bleu ». En passant en surbrillance le mot bleu (comme ci-dessous) il est possible de l’associer à une entity.
Automatiquement, vous devriez voir un nouveau paramètre color s’ajouter.
Ce dernier contiendra la couleur du ciel en fonction de la phrase. Vous pouvez par exemple vous en servir pour construire une réponse un petit peu plus dynamique.
Une fois sauvegardé, testons rapidement.
Pas mal non ? Le système a réussi à comprendre seul que je parlais de la couleur du ciel alors que ma phrase n’est pas exactement la même que ce que j’avais entré initialement. De plus, si je lui dis « le ciel est lapin » il ne tombe pas dans le piège et j’obtiens une belle erreur ! Le soucis c’est que l’application crash, pas top :/
L’entraînement
Cette erreur n’est pas super sympathique. Elle fait crasher notre application Actions on Google… Comment y remédier ? Il suffit d’éduquer notre système et de l’entraîner. Pour ce faire vous avez un petit onglet nommé training dans votre menu. Vous allez pouvoir passer en revus les différentes requêtes effectuées afin d’apporter des corrections à votre chatbot. C’est un peu un genre d’entraînement par l’erreur. Au fur et à mesure du temps et de vos corrections il sera de plus en plus efficace et il pourra de mieux en mieux extrapoler les réponses.
L’exemple
Revenons à notre exemple. J’ai reproduis quelques fois le cas de ma phrase bloquant mon application. J’ai ensuite créé un intent erreur qui répond « ce n’est pas une couleur ». Mon but est d’utiliser celui-ci au lieu de planter mon application.
En ouvrant l’onglet training, je me suis rendu compte que la plupart des phrases étaient définies comme étant du type « couleur du ciel ». Il suffit de passer en revue les requêtes, de corriger cela et de valider les bonnes réponses.
Une fois que vous estimez avoir suffisamment aidé Dialogflow, cliquez sur Approve. En se basant sur ces informations il va recalculer certains éléments et il sera capable de mieux comprendre.
Les contexts
Nous sommes dorénavant capables de simuler des conversations très basiques. Cependant, il nous manque un élément très important : la prise en compte du contexte.
En effet, vous n’allez probablement pas répondre la même chose pour si le chatbot vous demande si vous désirez de l’aide ou s’il vous demande 100€. Pourtant, les réponses possibles sont les mêmes ou presque. C’est ici qu’interviennent les contexts ils vont vous permettre d’accéder à certains intents seulement si le contexte dans lequel vous êtes s’y prête.
L’exemple :
Si on reprend notre exemple de tout à l’heure, nous allons tenter d’interpréter la réponse « oui » ou « non » en fonction du contexte. Retournez dans l’intent « couleur du ciel ». Dépliez l’encart contexts en haut de page.
Nous allons ici définir un contexte de sortie. C’est-à-dire que si un utilisateur passe par cet intent un genre de jeton lui sera donné. Dans ce cas je l’ai nommé couleurCiel.
Très bien, nous avons initialisé un contexte. Maintenant nous allons l’utiliser. Créez deux intents le premier s’appelant oui couleur ciel et le second non couleur ciel. Les deux devront être construits en vous inspirant du modèle ci-dessous (en modifiant bien entendu les listes user says et responses)
Ici nous utilisons un context input. L’intent ne sera déclenché que si ce dernier existe. Après sauvegarde, testons que tout fonctionne.
Pas mal non ? Avec les intents, les entities et les contexts vous avez déjà de quoi construire des conversations assez avancées.
Les Fulfillments
Avant de nous quitter un rapide mot sur les fulfillments. Jusqu’ici nous sommes restés en vase clos avec Dialogflow. Les fulfillments permettent d’y remédier et d’interagir avec l’extérieur.
Nous n’allons pas les aborder en détail car ils sont beaucoup plus techniques et nécessitent à eux seuls quelques articles dédiés. Cependant, il est intéressant d’avoir en tête qu’il est possible d’interagir avec des systèmes extérieurs.
Pour ce faire, il y a actuellement deux solutions. Vous pouvez soit passer par des webhooks (des apis) que vous pouvez héberger n’importe où, soit passer par du code nodeJS en utilisant le sdk Actions on Google et un éditeur en ligne. Cette dernière solution utilise Cloud Functions for Firebase ce qui peut impliquer certaines limitations si vous n’avez pas de compte payant sur Firebase.
Grâce à ces éléments de nombreuses possibilités s’ouvrent à nous. Il est ainsi possible de consulter des informations extérieures comme des résultats sportifs mais aussi d’enregistrer des informations comme nous le ferions avec un formulaire traditionnel.
Conclusion
Arrêtons là pour aujourd’hui, nous avons déjà vu beaucoup de concepts. Si vous avez bien suivi vous devriez normalement être capables de créer vos premiers chatbot avec Dialogflow. Il y a cependant encore beaucoup à voir si vous souhaitez construire un système complexe. En effet, nous n’avons fait qu’effleurer le sujet tant sur les possibilités de l’outil que sur les techniques et méthodes de construction d’un bon chatbot. Ceci sera peut-être le sujet de futures billets.
Si cet article vous a plu ou que vous vous posez des questions, n’hésitez pas à poster des commentaires. À bientôt !
Cadre en informatique dans une multinationale je suis un touche-à-tout passionné de nouvelles technologies.