Le ChatBot, le pouvoir des mots

Lors de notre précédent tutoriel, nous avons mis en place une interface graphique pour contrôler notre système domotique. Cette interface dispose de nombreux avantages, mais souffre aussi d’un inconvénient majeur : sa lourdeur.

En effet, pour effectuer une action aussi simple que d’allumer une lumière, il faut attendre plusieurs dizaines de secondes que la page web charge. Les applications de messagerie instantanée s’ouvrent pourtant en quelques secondes ! C’est pourquoi je vais vous montrer, au travers de ce tutoriel, un moyen d’exploiter ces applications plus fonctionnelles pour commander votre habitation.

Qu’est-ce qu’un ChatBot

Un ChatBot, ou agent conversationnel, est une interface Homme-Machine passant par le biais d’un support textuel (email, messagerie instantanée) permettant aux hommes d’interagir avec une machine en utilisant un langage naturel (langue « normale » parlée par un être humain).

De nos jours, les ChatBot sont surtout utilisés sur les messageries instantanées à des fins commerciales et publicitaires. L’un des exemples le plus parlant reste le bot de Pizza Hut qui permet à n’importe qui de passer une commande depuis l’application Messenger.

  

Source : www.influenth.com

Il s’agit donc d’un moyen simple d’utilisation pour l’utilisateur et est l’un des meilleurs moyens de contrôler son environnement (virtuel et physique).

Quelles plateformes utiliser ?

Comme dit précédemment, le nombre de plateformes compatible est assez important, c’est pourquoi je ne vais vous en présenter en détails que trois : les  plus connues / utilisées.

Facebook Messenger

L’une des solutions de messagerie instantanée rassemblant à elle seule près de 1 milliard d’utilisateurs et plus de 11 000 ChatBot actifs  est Facebook Messenger. C’est l’une des plateformes incontournables si nous souhaitons toucher le plus d’audience avec notre bot, ou tout simplement en faciliter l’accès.

Cependant, l’un de ses principaux désavantages est que pour pouvoir bénéficier d’un ChatBot, vous devez obligatoirement disposer d’une Page Facebook public, ce qui comme vous pouvez vous en douter, est gênant dans le cadre d’ un ChatBot privé.

Slack

Slack est un service de messagerie instantanée à destination des entreprises disposant d’un certain nombre d’intégration avec d’autres services comme Trello, Github, etc… L’avantage est qu’il permet de créer un groupe privé , disposant de plusieurs salons et autre canaux de diffusion.

C’est un service plus accessible que Facebook Messenger, notamment pour la création du ChatBot. Il est cependant contraignant car c’est une application que peu de personnes utilisent.

Telegram

Telegram est comme WhatsApp un concurrent direct de Facebook Messenger. Cette application se distingue par le fait qu’elle propose une protection par cryptage des données de bout en bout. C’est-à-dire de l’émetteur au récepteur. Au final, seuls les deux partis (vous et le chatbot) sont capables de lire le message, ce qui est mieux pour la conservation de la  vie privée.

Enfin, l’autre grand avantage de Telegram est le fait qu’il offre un accès très simplifié à son API de ChatBot et ne demande pour la création de ce dernier que très peu d’informations. De plus, le bot peut être configuré pour ne pas apparaître sur le réseau et donc fournir un niveau supplémentaire de protection.

Après cette recherche approfondie sur les plateformes disponibles, il me semble préférable de choisir Telegram comme support pour notre ChatBot afin de simplifier la chose. Il vous sera toujours possible de changer ou rajouter une plateforme avec quelques​ modifications par la suite.

Node-Red au secours des ChatBots   ?

Pour créer notre propre ChatBot, nous allons la encore passer par un module d’extension pour Node-Red : node-red-contrib-ChatBot.

Comme vous l’aurez sûrement compris, la première étape va être l’installation du module sur votre serveur.

Voici comment  accéder à l’interface d’installation :  Menu>Manage palettes>Install. Recherchez ensuite le module et installez-le.

Concrètement que fait ce module ?

Ce module créé par Guidone fournit un certain nombre de fonctions basiques nécessaires à la création d’un ChatBot , telles que les node de réception et d’envoi, des listener afin d’analyser les données, ainsi qu’un node d’interprétation du langage RiveScript.

Cette boîte à outils va donc nous permettre de programmer nos interactions de manière assez simple.

Création du ChatBot telegram

Nous disposons maintenant de tous les éléments nécessaires à la création du ChatBot, je vous propose donc de s’y atteler !

La première étape vas être d’initialiser le ChatBot sur Telegram.

Pour cela, nous allons utiliser Botfather, un ChatBot créé par l’équipe de Telegram à destination des développeurs afin qu’ils puissent créer facilement leur ChatBot.

Pour cela, rien de plus simple, il vous suffit de contacter le bot via ce lien : https://telegram.me/botfather et de suivre ces instructions :

  1. Rentrez la commande /newbot en temps que message
  2. Le BotFather vous demande un identifiant pour le bot, par exemple : domobot
  3. Il vous demande ensuite le nom utilisateur qui sera attribué à votre bot (attention doit finir par le mot bot), par exemple : DomoBot
  4. Sauvegardez la clé API quelque part.
  5. (Optionnel) Utilisez les commandes mises à disposition pour personnaliser votre bot (description, image de profil, etc)

 

Voilà, votre ChatBot a été initialisé, cependant si vous lui envoyez un message, il ne vous répondra pas ! En effet, vous n’avez créer que le canal de communication entre vous et le ChatBot,  et non le ChatBot en lui même.

Connexion et premières interactions

Maintenant que vous disposez de la clé d’API de votre ChatBot, nous pouvons nous attaquer à la programmation de ce-dernier.

Pour commencer, rendez-vous sur l’interface d’administration de Node-Red, et recherchez dans la liste déroulante de gauche un node nommé “Telegram Receiver” et glissez le sur votre espace de programmation.

Petite astuce : il est possible de créer plusieurs espaces de programmation en cliquant sur le petit “+” en haut à droite de ce dernier.

Faites de même avec node “Telegram Sender”.

La deuxième tâche de cette section va être de lier le ChatBot Telegram et Node-Red. Pour cela rien de plus simple :

  1. Cliquez sur l’icon d’édition (crayon dans un carré), une fenêtre s’ouvre
  2. Entrez le nom de votre bot, ainsi que le la clé d’API dans le champ “Token”
  3. (Optionnel) Ajouter votre identifiant dans le champ “Authorized ” Telegram pour restreindre l’accès au bot a vous seul.
  4. (Optionnel) Ajouter un chemin d’accès pour l’enregistrement des logs
  5. Cliquez sur le bouton rouge “Done”

 

Pour le node “Telegram Sender”, il vous suffit de sélectionner la configuration que vous venez d’enregistrer dans la liste déroulante.

Vous pouvez maintenant recevoir et envoyer des messages en utilisant le ChatBot.Il ne vous reste plus qu’à créer votre première commande !

Nous allons commencer simplement : la commande /help.

Pour cela recherchez le node “command” (de couleur orange), glissez le et reliez le au node “Telegram receiver”.

Double cliquez dessus et rentrez dans le champ commande le fameux “/help”.

Il ne vous reste plus qu’à ajouter un node “Text node” (là encore de couleur orange) et de le relier entre le node “Command” et “Telegram Sender”. Remplissez-le ensuite avec le message d’aide de votre choix et voilà, votre ChatBot est capable de comprendre sa première commande !

Première approche du langage naturel

Notre ChatBot sait maintenant reconnaître des commandes, ce qui est déjà très intéressant, mais trop peu pratique. C’est pourquoi nous allons le doter d’une capacité à reconnaître certaine phrase afin de le rendre plus “humain”.

Pour cela nous allons utiliser le node “Listen”. Il permet la reconnaissance d’une phrase grâce à un système de clé (ou token), c’est-à-dire qu’il va chercher au sein de la phrase la présence d’un certain nombre de mots et si la phrase correspond à un set de mots ordonnés, cela déclenchera une action.

Ce node dispose aussi de fonctionnalités permettant la reconnaissance du rôle d’une clé dans une phrase (verbe, COD, adverbe, etc). Cependant, cette technologie ne peut être utilisée qu’avec la langue anglaise.

Grâce à l’utilisation de ce node, vous pouvez maintenant parler à votre ChatBot et celui-ci sera capable de vous répondre et d’effectuer les actions que vous lui indiquerez.

Approche complexe du langage naturel

Il existe deux autres méthodes vous permettant d’utiliser le langage naturel avec votre ChatBot, cependant elles requièrent des compétences plus avancées en programmation et plus de temps de configuration.

La première est l’utilisation d’un langage de programmation dédié au ChatBots : RiveScript.

Ce langage est très pratique car il permet de concevoir des interactions plus complexes entre le ChatBot et vous-même. Son principal inconvénient est de ne proposer qu’une sortie par node dans son intégration à Node-Red.

Vous pourrez trouver toutes les explications sur ce langage ici : https://www.rivescript.com/

La deuxième solution est l’utilisation d’une API externe : https://api.ai/

Cette API permet d’avoir une reconnaissance du langage naturel plus précise grâce à des technologies d’apprentissage automatique (deep learning), cependant elle requiert la mise en place d’un certain nombre de services au préalable et potentiellement payants.

Bonus :

Premièrement, téléchargez les sources ici.

Pour utiliser les sources suivantes, il vous faut installer sur votre raspberry / serveur le logiciel “motion” :

sudo apt-get install motion

Une fois cela fait, remplacez le fichier “motion.conf” dans le répertoire /etc/motion par celui disponible dans les sources.

Cette configuration utilise la caméra dédiée du raspberry, mais d’autres options sont disponibles.

Une fois cela fait, il ne vous reste plus qu’à démarrer le logiciel avec la commande :

sudo motion

Pour importer le programme Node-Red rien de plus simple :

menu -> Import -> Clipboard , puis copier coller le contenu du fichier “config-node-red.txt”

Et voilà, vous disposez maintenant d’un système d’alarme fonctionnel !

Sources

Laisser un commentaire