Vous avez dit Azure Bot Service ?

Cela faisait longtemps que nous n'avions pas eu l'occasion de partager sur ce blog. Les dernières occasions étaient autour de notre kit d'outillage Open Source d'apprentissage profond (Deep Learning), à savoir Microsoft Cognitive Toolkit (anciennement CNTK) disponible sur la forge communautaire GitHub ici.

Si le kit Microsoft Cognitive Toolkit continue à évoluer avec la récente version 2.0 mise à disposition, avec à la clé des performances en perpétuelle évolution, (Cf. billet GA of Cognitive Toolkit 2.0 – Microsoft's Open Source, Enterprise-Ready, TensorFlow-Outperforming AI Toolkit), le déploiement de modèles pré-entrainés facilité dans les services de conteneurs d'Azure (Cf. billet Deployment of Pre-Trained Models on Azure Container Services), nous avons souhaité aborder un autre sujet pour cette « reprise de contact » au travers de ce billet.

Nous vous proposons ainsi aujourd'hui de découvrir un nouveau venu sur l'environnement d'hébergement et d'exécution IaaS et PaaS Microsoft Azure, en l'occurrence le service Azure Bot.

J'en profite pour remercier très sincèrement Anaig Maréchal actuellement en stage au sein de l'équipe pour cette contribution :-)

En guise d'introduction

Le service Azure Bot permettant de développer puis de déployer très rapidement un (ro)bot sur le web au travers des modèles fournis, à savoir un robot basique, un robot de formulaires, un robot proactif, un robot LUIS (Language Understanding Intelligent Service), etc.

Le Microsoft Bot Framework que nous avions également abordé dans un précédent billet sur ce même blog (Un bot parmi nous ? – 1ère partie, 2nd partie et 3ième partie) est intégré à chacun de ces modèles, afin d'optimiser le flux de travail.

Le service Azure Bot propose dans Azure un environnement intégré créé tout spécialement pour le développement de robots pour augmenter vos interactions et toucher plus de clients avec votre site web ou votre application par courrier, texte/SMS, GroupMe, Facebook Messenger, Skype, Slack, Microsoft Teams, Telegram, Twilio, etc. et bénéficier, dans ce contexte, de la simplicité du Microsoft Bot Framework, de la simplicité de Microsoft Bot Framework, des APIs intelligentes des services cognitifs d'Azure, etc.

Ce billet est donc l'occasion de partager un rapide pas à pas pour la mise en œuvre d'un (ro)bot. Vous allez découvrir l'utilité de ce service, son mode de fonctionnement, ainsi que ses grands principes de mise en œuvre.

Tout d'abord, connectez-vous au portail Azure à l'adresse https://portal.azure.com. (Si vous ne disposez pas d'ores et déjà d'un abonnement Azure, vous pouvez créer un compte Azure gratuit ici. Ce compte vous permet d'explorer n'importe quelle combinaison de services Azure pendant 30 jours, de commencer gratuitement pour cela avec un crédit de 170 € et/ou de poursuivre avec les options gratuites d'Azure.)

Rendez-vous dans la section Intelligence + analytics au niveau de la place de marché d'Azure.

Création de l'application

Dans un premier temps, il s'agit de donner un nom à votre application et d'entrer vos informations d'abonnement, de groupe de ressources et d'emplacement pour le stockage des données.

On peut également directement choisir d'épingler le projet de robot au tableau de bord Azure.

Il est ensuite proposé de générer un identificateur d'application ou App ID pour le robot ainsi qu'un mot de passe. Attention, le mot de passe n'est affiché qu'une seule fois, il doit donc être sauvegardé dans un endroit sécurisé.

Cet identificateur d'application va permettre d'enregistrer le robot sur le Microsoft Bot Framework et sera placé dans les fichiers de configuration.

Création du bot

Plusieurs options en termes de modèles (template) sont alors proposées pour la création du (ro)bot selon l'usage que vous souhaitez.

Ces modèles modifiables de bot peuvent être créés en C# ou Node.js et peuvent directement être testés dans une fenêtre sur le côté. Le bot ainsi généré dispose déjà des fonctionnalités élémentaires liées son rôle.

A la date de publication de ce billet, 5 modèles (template) sont proposés. Les rubriques suivantes décrivent succinctement chaque modèle.

Robot basique

Ce type de modèle permet de définir un bot qui répète chaque message qui lui est envoyé, sous la forme « You said [votre message]  ». C'est une démonstration simple de dialogue entre le bot et l'utilisateur.

Il suffit ensuite de modifier les messages de réponse pour créer un dialogue personnalisé. Le bot réagit également à des évènements comme la connexion d'un nouvel utilisateur, qui va engendrer un message de bienvenu.

Pour plus d'informations, vous pouvez consulter l'article Create a bot using the Basic template.

Robot de formulaire

Ce type de modèle permet de discuter avec un bot qui propose un questionnaire au fur et à mesure de la conversation. Cela permet de poser toute une série de questions à l'utilisateur. Ce Framework s'appuie sur le Bot Builder « FormFlow ».

Pour plus d'informations, vous pouvez consulter l'article Create a bot using the Form template.

Robot proactif

Ce type de modèle permet de créer un bot qui va contacter, comme son nom le laisse supposer, l'utilisateur par lui-même lors du déclenchement d'un évènement, ou d'un changement d'état du système par exemple. Le modèle disponible permet dans la pratique d'informer l'utilisateur dès qu'un message qui lui est envoyé est placé dans une queue du stockage Azure et qu'une fonction trigger se déclenche en renvoyant le message.

Pour plus d'informations, vous pouvez consulter l'article Create a bot using the Proactive template.

Robot de compréhension linguistique

Ce modèle est basé sur le service LUIS (Language Understanding Intelligent Service), l'un des services cognitifs de Microsoft permettant d'utiliser très simplement du traitement de langage naturel au sein d'une application. Le service LUIS fournit pour cela des outils simples pour créer vos propres modèles linguistiques (intentions/entités) permettant à une application ou un robot quelconques de comprendre vos commandes et d'agir en conséquence...

Pour utiliser ce modèle, il faut tout d'abord connecter le service Azure Bot au service LUIS. Une application LUIS vierge est alors créée, qui est automatiquement connectée au service Azure Bot par le biais de la clé API de l'application.

En premier lieu, aucune intention, une « réaction » du bot, n'est définie à l'exception du « none intent » (aucune intention), utilisé pour les situations non apprises par le bot. En se rendant sur https://www.luis.ai/home/index, vous pouvez retrouver l'application créée et y définir de nouvelles intentions. Il convient alors de mettre à jour l'application en cliquant sur Publish.

En revenant sur la console du service Azure Bot, vous pouvez utiliser l'intention nouvellement créée en faisant réagir le bot en conséquence dans le fichier « BasicLuisDialog.csx ». Par exemple, l'intention « Hello » peut déclencher un salut de la part du bot. Dans le modèle par défaut, chaque intention déclenche un message de la forme : « You have reached the [Nom de l'intent] intent. You said : [votre message]  ».

Pour plus d'informations, vous pouvez consulter l'article Create a bot using the Language understanding template.

Robot de question et réponse

Ce modèle utilise l'API QnA Maker, le service FAQ des services cognitifs de Microsoft.

Dans la pratique, il est possible d'utiliser un projet déjà existant sur https://qnamaker.ai/ ou d'en créer un nouveau. Pour créer les différentes questions/réponses de la FAQ, il est possible de renseigner directement l'URL d'une ou plusieurs FAQ. QnA va automatiquement trouver quelles sont les questions et quelles sont les réponses.

Vous pouvez également charger une FAQ depuis un fichier ou bien créer la FAQ depuis zéro. Pour utiliser QnA depuis le service Azure Bot, il est nécessaire de le connecter à QnA Maker, puis de configurer le bot dans le fichier « BasicQnAMakerDialog.csx » en entrant la clé d'abonnement (subscription key) et la clé de la base de connaissance (knowledge bases key) dans les emplacements (placeholder) prévus à cet effet.

Ces clés sont communiquées sur QnA Maker lors de la publication de l'application.

Pour plus d'informations, vous pouvez consulter l'article Create a bot using the Question and Answer template.

Publication du bot

Trois autres onglets sont disponibles en haut de la console de développement.

L'onglet Channels permet d'ajouter directement le bot à une application comme Skype ou Slack par exemple.

11 canaux de communications sont disponibles à ce jour pour discuter avec votre bot en toutes circonstances et à tout moment.

L'onglet Settings permet de modifier les paramètres du bot tels que l'image qui s'affiche lors de la discussion, le nom du bot, sa description et le point de terminaison (endpoint) de son API.

Enfin, l'onglet Publish permet de faire profiter au monde entier des talents de son bot en le publiant dans un répertoire public, comme le répertoire Microsoft Bot Directory par exemple.

Ceci conclut ce billet. Nous venons ainsi d'illustrer comment il est possible de développer, déployer et publier un bot en quelques clics ! Vous pouvez visionner à titrer complément le webinaire Build your own bots with Azure Bot Service sur la chaine Microsoft Mechanics.

N'hésitez pas à aller sur votre compte Azure (gratuit ou pas) et vous amuser avec les différents modèle et Frameworks existants :-)