teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur...

23
Christophe BOUVARD Botkit Développez vos bots avec JavaScript et Node.js

Transcript of teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur...

Page 1: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

Botk

it

Botkit Développez vos bots avec JavaScript et Node.js

Christophe BOUVARD Entrepreneur dans le domaine des bots et de l’intelli-gence artificielle, Christophe BOUVARD est cofon-dateur et CTO de Wikit, société dans laquelle il s’éver-tue à développer les compétences de bots d’entreprise pour assister les employés dans leur quotidien (sup-port informatique, administratif...). Egalement inté-ressé par le Lean Startup, il fonde la société Leanbot avec laquelle il accompagne les innovateurs et star-tups dans la mise en place d’expériences conversa-tionnelles réussies via des bots et des assistants vir-tuels. Avec ce livre, il transmet toute son expertise au lecteur désireux de développer ses bots avec Botkit.

Avec l’omniprésence des applications de messagerie sur les smartphones, de nouvelles expériences utilisa-teurs naissent comme des agents conversationnels, plus couramment appelés bots (ou chatbots). Ce livre sur Botkit s’adresse ainsi aux développeurs qui souhaitent structurer et accélérer le développement de bots grâce à la puissance d’un écosystème Node.js/JavaScript. Des connaissances en programmation avec le langage JavaScript et sur le fonctionnement de sites et applica-tions web sont requises pour la bonne lecture de ce livre.Le lecteur commence par découvrir les grands principes des bots et leur architecture avant d’explorer les possibilités offertes par Botkit pour la conception et l’élaboration de bots. Il apprend ensuite à entraîner un moteur d’intelligence artificielle pour doper les capacités du bot dans l’analyse des messages en langage naturel. L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow de Google et Recast du groupe SAP. Dans la suite du livre, l’auteur réalise quatre implémentations complètes de bots qui s’appuient chacune sur une grande plateforme de messagerie :- Un bot Météo pour Facebook Messenger ;- Un bot Actualités pour Skype ;- Un bot Kanban alimenté par Trello pour Slack ;- Un bot Commerce prêt à l’emploi pour les sites web de e-commerce.Pour finir, un chapitre apporte les connaissances nécessaires pour héberger son bot dans le Cloud.Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.

Avant-propos • Introduction aux bots • Architecture des bots • Premier bot avec Node.js et Botkit • Augmen-tation des capacités du bot • IA et compréhension du langage • Mise en place des moteurs d’IA avec Botkit • Cas d’utilisation et implémentation • Bot Météo pour Facebook Messenger • Bot Actualités pour Skype • Bot Kanban pour Slack • Bot Commerce intégré dans son site web • Déploiement dans le Cloud

Les chapitres du livre

Téléchargementwww.editions-eni.fr.fr

sur www.editions-eni.fr : b Le code source des projets du livre.

ISSN : 1960-3444ISBN : 978-2-409-01664-6

54 €

Pour plus d’informations :

Dév

elop

pez

vos

bots

av

ec Ja

vaSc

ript

et N

ode.

js

Christophe BOUVARD

Botkit Développez vos bots

avec JavaScript et Node.js

Page 2: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

1Table des matières

Avant-propos

1. Pourquoi ce livre? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2. À qui s'adresse cet ouvrage? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3. Structure de l'ouvrage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4. Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Chapitre 1

Introduction aux bots

1. Qu'est-ce qu'un bot?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2. Brève histoire des bots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.1 La première conversation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.2 Les bots s’invitent chez l’utilisateur . . . . . . . . . . . . . . . . . . . . . . 252.3 Les canaux de messagerie se généralisent et

s’ouvrent aux bots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.4 Les piliers des bots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3. Botkit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4. Types de bot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.1 Support versus marketing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.2 Compagnon versus produit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.3 Connaissance versus action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.4 Push versus pull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

5. Cas d'applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

6. Futur des bots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Les éléments à télécharger sont disponibles à l'adresse suivante :http://www.editions-eni.fr

Saisissez la référence de l'ouvrage EPBOT dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement.

lcroise
Tampon
Page 3: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

2Développez vos bots avec JavaScript et Node.js

Botkit

Chapitre 2

Architecture des bots

1. Grands principes d’architecture des bots . . . . . . . . . . . . . . . . . . . . . . 35

2. Couche Messagerie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3. Couche Conversationnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.1 Question/réponse simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.2 Automate avec un nombre fini d'états . . . . . . . . . . . . . . . . . . . . 393.3 Flux global de conversation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.4 Scripts orientés vers l’atteinte d’objectifs . . . . . . . . . . . . . . . . . . 42

4. Couche Intelligence Artificielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

5. Couche Métier/Données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

6. Panorama de technologies pour créer un bot générique en Node.js . . .44

Chapitre 3

Premier bot avec Node.js et Botkit

1. Présentation de Botkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471.1 Motivation pour un framework . . . . . . . . . . . . . . . . . . . . . . . . . 471.2 Plates-formes de messagerie supportées par Botkit . . . . . . . . . . 481.3 Objets principaux de Botkit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491.4 Installation et prise en main d’un ConsoleBot . . . . . . . . . . . . . . 491.5 Instance de bot/contrôleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531.6 Événements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571.7 Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

1.7.1 Objet message. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581.7.2 Exploitation du contenu d’un message . . . . . . . . . . . . . . . 591.7.3 Réponse simple à un message . . . . . . . . . . . . . . . . . . . . . . 59

1.8 Conversations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611.8.1 Objet convo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611.8.2 Notion de thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621.8.3 Lancement de conversation . . . . . . . . . . . . . . . . . . . . . . . . 621.8.4 Envoi de messages dans une conversation . . . . . . . . . . . . 65

Page 4: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

3Table des matières

1.8.5 Interaction avec des questions dans une conversation . . 671.8.6 Branchement vers un thread . . . . . . . . . . . . . . . . . . . . . . . 751.8.7 Pré-traitement avant l’exécution d’un thread . . . . . . . . . 761.8.8 Gestion du timeout d’une conversation . . . . . . . . . . . . . . 781.8.9 Statut d’une conversation . . . . . . . . . . . . . . . . . . . . . . . . . 79

1.9 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Chapitre 4

Augmentation des capacités du bot

1. Gestion des compétences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851.1 Principe de compétence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851.2 Définition de compétence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

1.2.1 Format d’un module compétence . . . . . . . . . . . . . . . . . . . 861.2.2 Chargement d’une compétence . . . . . . . . . . . . . . . . . . . . . 861.2.3 Compétence par défaut . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

2. Utilisation de middlewares pour étendre les capacités du bot . . . . . 892.1 Principe de middleware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892.2 Types de middleware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902.3 Fonctionnement des middlewares. . . . . . . . . . . . . . . . . . . . . . . . 902.4 Activation des middlewares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

3. Utilisation de connecteurs de stockage de données pour la gestion de sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953.1 Principe de connecteur de stockage de données . . . . . . . . . . . . . 953.2 Fonctions d’un connecteur de stockage . . . . . . . . . . . . . . . . . . . 963.3 Stockage de données par défaut. . . . . . . . . . . . . . . . . . . . . . . . . 1003.4 Utilisation de connecteur de stockage

de la communauté Botkit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013.4.1 MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023.4.2 Redis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1073.4.3 Firebase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1093.4.4 Autres bases de données. . . . . . . . . . . . . . . . . . . . . . . . . . 113

Page 5: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

4Développez vos bots avec JavaScript et Node.js

Botkit

Chapitre 5

IA et compréhension du langage

1. Quelles technologies d’intelligence artificielle pour les bots ? . . . . . 115

2. Traitement automatique du langage naturel . . . . . . . . . . . . . . . . . . 116

3. Compréhension du langage naturel avec Watson . . . . . . . . . . . . . . 1173.1 Détection d’intentions et d’entités . . . . . . . . . . . . . . . . . . . . . . 1183.2 Mise en application avec IBM Watson . . . . . . . . . . . . . . . . . . . 1193.3 Création de l'espace de travail/Skill

dans IBM Watson Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193.4 Création d’intention. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213.5 Création d’entités nommées . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223.6 Analyse de phrases utilisateurs par Watson . . . . . . . . . . . . . . . 123

3.6.1 En ligne de commande avec curl . . . . . . . . . . . . . . . . . . . 1243.6.2 Avec Node.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

3.7 Intégration du moteur de NLP avec Botkit. . . . . . . . . . . . . . . . 1273.8 Autres middlewares NLP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

Chapitre 6

Mise en place de moteurs d'IA avec Botkit

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

2. Middleware Botkit pour la compréhension du langage . . . . . . . . . . 1342.1 Rappel du fonctionnement d'un middleware . . . . . . . . . . . . . . 1342.2 Squelette d’un middleware NLP . . . . . . . . . . . . . . . . . . . . . . . . 1342.3 Configuration du middleware . . . . . . . . . . . . . . . . . . . . . . . . . . 1362.4 Normalisation des données NLP . . . . . . . . . . . . . . . . . . . . . . . . 1372.5 Fonction receive(…) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1382.6 Fonction hear(…) pour l’activation de compétence. . . . . . . . . 1392.7 Utilisation du middleware dans un bot . . . . . . . . . . . . . . . . . . 140

Page 6: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

5Table des matières

3. IBM Watson avec Watson Assistant . . . . . . . . . . . . . . . . . . . . . . . . . 1433.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1433.2 Prise en main de Watson Assistant . . . . . . . . . . . . . . . . . . . . . . 143

3.2.1 Principaux concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1433.2.2 Accès au service Watson Assistant

avec un compte IBM Cloud . . . . . . . . . . . . . . . . . . . . . . . 1443.2.3 Création d’un service Watson Assistant . . . . . . . . . . . . . 1453.2.4 Création et prise en main d’un espace de travail . . . . . . 1463.2.5 Ajout d’intention . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1473.2.6 Ajout d’entité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1473.2.7 Ajout de dialogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1483.2.8 Entraînement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1483.2.9 Invocation de l’API d’analyse de texte . . . . . . . . . . . . . . 150

3.3 Middleware Botkit pour Watson. . . . . . . . . . . . . . . . . . . . . . . . 1513.3.1 Création du middleware . . . . . . . . . . . . . . . . . . . . . . . . . 1513.3.2 Utilisation du middleware . . . . . . . . . . . . . . . . . . . . . . . . 155

4. Microsoft Cognitive Services avec LUIS . . . . . . . . . . . . . . . . . . . . . . 1574.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1574.2 Prise en main de LUIS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

4.2.1 Principaux concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1574.2.2 Accès au service avec un compte Microsoft . . . . . . . . . . 1584.2.3 Création d’une app . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1584.2.4 Ajout d’intention . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1584.2.5 Ajout d'une entité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1594.2.6 Entraînement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1594.2.7 Publication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1604.2.8 Invocation de l’API d’analyse de texte . . . . . . . . . . . . . . 160

4.3 Middleware Botkit pour LUIS . . . . . . . . . . . . . . . . . . . . . . . . . . 1634.3.1 Création du middleware . . . . . . . . . . . . . . . . . . . . . . . . . 1634.3.2 Utilisation du middleware . . . . . . . . . . . . . . . . . . . . . . . . 167

Page 7: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

6Développez vos bots avec JavaScript et Node.js

Botkit

5. Google Dialogflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1685.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1685.2 Prise en main de Dialogflow . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

5.2.1 Principaux concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1685.2.2 Création d’un compte Google . . . . . . . . . . . . . . . . . . . . . 1695.2.3 Création d’un agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1695.2.4 Ajout d’intention . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1705.2.5 Ajout d’entité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1715.2.6 Entraînement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1725.2.7 Activation et configuration des actions

par défaut Small talk . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1735.2.8 Invocation de l’API d’analyse de texte . . . . . . . . . . . . . . 174

5.3 Middleware Botkit pour Dialogflow . . . . . . . . . . . . . . . . . . . . . 1775.3.1 Création du middleware . . . . . . . . . . . . . . . . . . . . . . . . . 1775.3.2 Utilisation du middleware . . . . . . . . . . . . . . . . . . . . . . . . 181

6. SAP Recast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826.2 Prise en main de Recast et de son API NLP. . . . . . . . . . . . . . . . 183

6.2.1 Principaux concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1836.2.2 Création d’un compte Recast . . . . . . . . . . . . . . . . . . . . . 1846.2.3 Création d’un bot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846.2.4 Ajout d’intention . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1866.2.5 Ajout d’entité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1866.2.6 Invocation de l’API d’analyse de texte . . . . . . . . . . . . . . 187

6.3 Middleware Botkit pour Recast. . . . . . . . . . . . . . . . . . . . . . . . . 1896.3.1 Création du middleware . . . . . . . . . . . . . . . . . . . . . . . . . 1896.3.2 Utilisation du middleware . . . . . . . . . . . . . . . . . . . . . . . . 192

Page 8: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

7Table des matières

Chapitre 7

Cas d’utilisation et implémentation

1. Cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1951.1 Bot Météo, le compagnon graphique et intelligent . . . . . . . . . 1951.2 Bot Actualités, l’assistant qui donne l’information . . . . . . . . . 1961.3 Bot Kanban, le bot auto-apprenant de questions/réponses . . . 1961.4 Bot Commerce, le bot de support e-commerce. . . . . . . . . . . . . 197

2. Considérations d’implémentation des cas d’application . . . . . . . . . 1972.1 Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1972.2 Poste de travail du développeur . . . . . . . . . . . . . . . . . . . . . . . . . 198

2.2.1 IDE ou éditeur de code . . . . . . . . . . . . . . . . . . . . . . . . . . . 1982.2.2 Node.js et npm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1982.2.3 Outil de tunneling HTTPS . . . . . . . . . . . . . . . . . . . . . . . 198

Chapitre 8

Bot Météo pour Facebook Messenger

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

2. Aperçu de la plate-forme Messenger . . . . . . . . . . . . . . . . . . . . . . . . . 2012.1 Interface Webhook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2022.2 API de la plate-forme Messenger . . . . . . . . . . . . . . . . . . . . . . . . 2022.3 WebViews et extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

3. Création et connexion d'une page Facebook avec le bot . . . . . . . . . 204

4. Configuration du bot sur la plate-forme Messenger . . . . . . . . . . . . 2044.1 Création de la page et de l’app Facebook . . . . . . . . . . . . . . . . . 2044.2 Création du squelette du bot . . . . . . . . . . . . . . . . . . . . . . . . . . . 2054.3 Mise à disposition du bot via ngrok . . . . . . . . . . . . . . . . . . . . . 2064.4 Création du Webhook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2074.5 Abonnement du Webhook aux événements de la page . . . . . . 207

5. Événements de Facebook Messenger. . . . . . . . . . . . . . . . . . . . . . . . . 208

Page 9: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

8Développez vos bots avec JavaScript et Node.js

Botkit

6. Interactions riches avec Messenger . . . . . . . . . . . . . . . . . . . . . . . . . . 2096.1 Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

6.1.1 Messages textes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2096.1.2 Messages avec fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

6.2 Réponses rapides. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2126.2.1 Réponses rapides avec texte et image . . . . . . . . . . . . . . . 2126.2.2 Partage de position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2156.2.3 Envoi du téléphone et de l’adresse e-mail . . . . . . . . . . . . 217

6.3 Boutons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186.3.1 Bouton URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186.3.2 Bouton avec renvoi (postback) . . . . . . . . . . . . . . . . . . . . 2196.3.3 Bouton Partager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2216.3.4 Bouton d’appel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2236.3.5 Boutons de connexion et de déconnexion . . . . . . . . . . . 224

6.4 Modèles de réponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2296.4.1 Modèle générique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2296.4.2 Modèle avec boutons . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326.4.3 Modèle de liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2346.4.4 Modèle Open Graph/Musique. . . . . . . . . . . . . . . . . . . . . 2366.4.5 Modèle média . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386.4.6 Autres modèles avancés . . . . . . . . . . . . . . . . . . . . . . . . . . 240

6.5 WebView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2406.6 Indicateur de saisie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

7. Lancement de la discussion avec un bot . . . . . . . . . . . . . . . . . . . . . . 2437.1 Écran d’accueil et bouton Démarrer . . . . . . . . . . . . . . . . . . . . . 2437.2 Liens m.me . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2477.3 Codes Messenger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

8. Mise en application avec le bot Météo . . . . . . . . . . . . . . . . . . . . . . . 2498.1 Introduction et prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

8.1.1 Accès aux données météorologiques de The Weather Company. . . . . . . . . . . . . . . . . . . . . . . . 250

Page 10: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

9Table des matières

8.2 Compétences du bot Météo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2518.2.1 Voir la météo actuelle d’une ville . . . . . . . . . . . . . . . . . . 2518.2.2 Voir les prévisions météo d’une ville . . . . . . . . . . . . . . . . 2528.2.3 Afficher le menu avec la météo des villes épinglées . . . . 2538.2.4 Ajouter ou retirer une ville dans le menu . . . . . . . . . . . . 254

8.3 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2548.3.1 Architecture technique. . . . . . . . . . . . . . . . . . . . . . . . . . . 2548.3.2 Modèle de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558.3.3 Modèle d’intentions et d’entités . . . . . . . . . . . . . . . . . . . 2558.3.4 API métier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

8.4 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2588.4.1 Paramétrage au niveau de Facebook et Messenger . . . . . 2588.4.2 Paramétrage du moteur NLP . . . . . . . . . . . . . . . . . . . . . . 2598.4.3 Création de la base de données . . . . . . . . . . . . . . . . . . . . 2598.4.4 Structure du programme du bot . . . . . . . . . . . . . . . . . . . 2608.4.5 Initialisation du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . 2608.4.6 Installation des dépendances . . . . . . . . . . . . . . . . . . . . . . 2618.4.7 Point d’entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2618.4.8 Implémentation du connecteur de stockage Cloudant . 2648.4.9 Implémentation de la couche services. . . . . . . . . . . . . . . 2668.4.10Implémentation des compétences. . . . . . . . . . . . . . . . . . 270

Chapitre 9

Bot Actualités pour Skype

1. Aperçu de Bot Service et de Bot Framework de Microsoft . . . . . . . 279

2. Enregistrement du bot dans le Bot Framework . . . . . . . . . . . . . . . . 2802.1 Connexion au portail Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . 2802.2 Création d’un enregistrement de canaux de bot

(Bot Channels Registration) . . . . . . . . . . . . . . . . . . . . . . . . . . . 2812.3 Gestion a posteriori des identifiants d’application Microsoft . . 284

3. Création du bot avec Botkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

Page 11: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

10Développez vos bots avec JavaScript et Node.js

Botkit

4. Tests et débogage du bot avec l’émulateur du Bot Framework. . . . 2864.1 Installation de l’émulateur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2874.2 Présentation de l’émulateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

4.2.1 Informations du point de terminaison du bot . . . . . . . . 2874.2.2 Fenêtre de chat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2884.2.3 Affichage du détail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2884.2.4 Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

5. Activation du canal Skype via le Bot Framework . . . . . . . . . . . . . . 2895.1 Mise à disposition d’une adresse sécurisée en HTTPS . . . . . . . 289

5.1.1 Adresse en HTTPS pour un bot exécuté en local . . . . . . 2895.1.2 Adresse HTTPS pour un bot hébergée dans le Cloud . . 2905.1.3 Paramètres du bot dans Azure. . . . . . . . . . . . . . . . . . . . . 290

5.2 Test du bot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2915.3 Activation du canal Skype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292

6. Événements du Bot Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

7. Interactions riches avec Skype. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2947.1 Médias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

7.1.1 Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2947.1.2 Vidéos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2967.1.3 Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297

7.2 Formatage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2987.2.1 Texte formaté en Markdown . . . . . . . . . . . . . . . . . . . . . 2987.2.2 Emojis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300

7.3 Boutons et actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3017.3.1 Actions suggérées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3027.3.2 Boutons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

7.4 Listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3067.4.1 Listes par défaut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3067.4.2 Carrousels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

7.5 Cartes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3097.5.1 Cartes simples (Hero Cards) . . . . . . . . . . . . . . . . . . . . . . 3097.5.2 Cartes avec vignette (Thumbnail Cards) . . . . . . . . . . . . 311

Page 12: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

11Table des matières

7.5.3 Cartes d'authentification (Sign in Cards) . . . . . . . . . . . . 3137.5.4 Cartes de reçu (Receipt Cards) . . . . . . . . . . . . . . . . . . . . 314

8. Mise en application avec le bot Actualités . . . . . . . . . . . . . . . . . . . . 3178.1 Introduction et prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3178.2 Compétences du bot Actualités. . . . . . . . . . . . . . . . . . . . . . . . . 318

8.2.1 Présentation du bot à l’utilisateur . . . . . . . . . . . . . . . . . . 3188.2.2 Affichage des actualités . . . . . . . . . . . . . . . . . . . . . . . . . . 3198.2.3 Affichage des thèmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3198.2.4 Gestion des abonnements aux thèmes . . . . . . . . . . . . . . 320

8.3 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3228.3.1 Architecture technique orientée Microsoft. . . . . . . . . . . 3228.3.2 Modèle de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3228.3.3 Modèle d’intentions et d’entités . . . . . . . . . . . . . . . . . . . 3228.3.4 API métier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

8.4 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3258.4.1 Paramétrage au niveau du Bot Framework. . . . . . . . . . . 3258.4.2 Paramétrage du moteur NLP . . . . . . . . . . . . . . . . . . . . . . 3268.4.3 Création de la base de données . . . . . . . . . . . . . . . . . . . . 3268.4.4 Structure du programme du bot . . . . . . . . . . . . . . . . . . . 3278.4.5 Initialisation du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . 3278.4.6 Installation des dépendances . . . . . . . . . . . . . . . . . . . . . . 3288.4.7 Point d’entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3288.4.8 Implémentation du middleware LUIS . . . . . . . . . . . . . . 3308.4.9 Implémentation de la couche services du bot. . . . . . . . . 3338.4.10Implémentation des compétences. . . . . . . . . . . . . . . . . . 337

Chapitre 10

Bot Kanban pour Slack

1. Aperçu de Slack et ses API pour les bots . . . . . . . . . . . . . . . . . . . . . . 3491.1 Slack et ses fonctionnalités . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3491.2 API Real Time Messaging de Slack . . . . . . . . . . . . . . . . . . . . . . 3501.3 API Events de Slack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350

Page 13: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

12Développez vos bots avec JavaScript et Node.js

Botkit

1.4 API Web de Slack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350

2. Création d’un bot Slack avec l’API RTM . . . . . . . . . . . . . . . . . . . . . 3512.1 Création de l’application associée au bot . . . . . . . . . . . . . . . . . 3512.2 Installation de l’application dans un espace de travail. . . . . . . 3512.3 Implémentation du bot RTM avec Botkit . . . . . . . . . . . . . . . . 3522.4 Lancement du bot RTM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353

3. Création d’un bot Slack avec Webhook . . . . . . . . . . . . . . . . . . . . . . 3543.1 Création de l’application associée au bot . . . . . . . . . . . . . . . . . 3543.2 Installation de l’application dans un espace de travail. . . . . . . 3543.3 Implémentation du bot avec Botkit . . . . . . . . . . . . . . . . . . . . . 3543.4 Activation des événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3563.5 Lancement du bot Webhook . . . . . . . . . . . . . . . . . . . . . . . . . . . 3583.6 Statut de présence en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

4. Commandes Slack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3584.1 Définition de l’application et du bot dans Slack . . . . . . . . . . . 3594.2 Écriture du squelette du bot avec Botkit. . . . . . . . . . . . . . . . . . 3594.3 Mise à disposition du Webhook sur Internet . . . . . . . . . . . . . . 3604.4 Définition de la commande dans Slack. . . . . . . . . . . . . . . . . . . 3614.5 Écriture du code de la commande . . . . . . . . . . . . . . . . . . . . . . . 3614.6 Lancement et test du bot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

5. Événements Slack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

6. Interactions riches dans Slack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3646.1 Réponses du bot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364

6.1.1 Fil de discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3646.1.2 Conversation privée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3666.1.3 Message éphémère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

6.2 Formatage des messages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3696.3 Informations attachées aux messages . . . . . . . . . . . . . . . . . . . . 370

6.3.1 Texte de repli (fallback) . . . . . . . . . . . . . . . . . . . . . . . . . . 3716.3.2 Couleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3716.3.3 Titre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3736.3.4 Textes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

Page 14: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

13Table des matières

6.3.5 Informations sur l'auteur . . . . . . . . . . . . . . . . . . . . . . . . . 3746.3.6 Champs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3756.3.7 Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3776.3.8 Footer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3786.3.9 Boutons et actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379

6.4 Dialogues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3826.4.1 Création de dialogue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3826.4.2 Ajout d’un élément texte . . . . . . . . . . . . . . . . . . . . . . . . . 3826.4.3 Ajout des éléments e-mail, nombre, téléphone et URL . . 3836.4.4 Ajout d’un élément de texte long . . . . . . . . . . . . . . . . . . 3836.4.5 Ajout d’une liste déroulante . . . . . . . . . . . . . . . . . . . . . . 3846.4.6 Affichage du dialogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3846.4.7 Traitement des données soumises via un dialogue . . . . 3846.4.8 Exemple de dialogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385

7. Mise en application avec le bot Kanban . . . . . . . . . . . . . . . . . . . . . . 3877.1 Introduction et prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3877.2 Compétences du bot Kanban. . . . . . . . . . . . . . . . . . . . . . . . . . . 389

7.2.1 Configuration du tableau Kanban. . . . . . . . . . . . . . . . . . 3897.2.2 Affichage d’une liste de cartes du Kanban . . . . . . . . . . . 3917.2.3 Déplacement d’une carte vers une liste. . . . . . . . . . . . . . 3917.2.4 Affichage du détail d’une carte . . . . . . . . . . . . . . . . . . . . 392

7.3 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3927.3.1 Architecture technique. . . . . . . . . . . . . . . . . . . . . . . . . . . 3927.3.2 Modèle de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3937.3.3 Modèle d’intentions et d’entités . . . . . . . . . . . . . . . . . . . 3937.3.4 API métier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395

7.4 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3977.4.1 Paramétrage au niveau de Slack. . . . . . . . . . . . . . . . . . . . 3977.4.2 Paramétrage du moteur NLP . . . . . . . . . . . . . . . . . . . . . . 3977.4.3 Création de la base de données . . . . . . . . . . . . . . . . . . . . 3987.4.4 Structure du programme du bot . . . . . . . . . . . . . . . . . . . 3987.4.5 Initialisation du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . 3997.4.6 Installation des dépendances . . . . . . . . . . . . . . . . . . . . . . 399

Page 15: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

14Développez vos bots avec JavaScript et Node.js

Botkit

7.4.7 Point d’entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4007.4.8 Implémentation de la couche services. . . . . . . . . . . . . . . 4037.4.9 Implémentation des compétences. . . . . . . . . . . . . . . . . . 405

Chapitre 11

Bot Commerce intégré dans son site web

1. Présentation de Botkit Anywhere . . . . . . . . . . . . . . . . . . . . . . . . . . . 4171.1 Botkit Anywhere avec WebSocket . . . . . . . . . . . . . . . . . . . . . . 4181.2 Botkit Anywhere avec Webhook. . . . . . . . . . . . . . . . . . . . . . . . 419

2. Prise en main de Botkit Anywhere . . . . . . . . . . . . . . . . . . . . . . . . . . 4192.1 Installation avec le kit de démarrage. . . . . . . . . . . . . . . . . . . . . 4192.2 Installation avancée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420

2.2.1 Préparation du projet Node.js . . . . . . . . . . . . . . . . . . . . . 4212.2.2 Copie des fichiers clés de Botkit Anywhere . . . . . . . . . . 4212.2.3 Création du fichier principal du bot . . . . . . . . . . . . . . . . 4222.2.4 Configuration du bot Web. . . . . . . . . . . . . . . . . . . . . . . . 4252.2.5 Lancement du bot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425

3. Événements Botkit Anywhere. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426

4. Interactions riches dans le Web Chat . . . . . . . . . . . . . . . . . . . . . . . . 4264.1 Réponses rapides. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4264.2 Messages formatés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

4.2.1 Markdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4314.2.2 Emoji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

4.3 Indicateur de saisie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4334.4 Images et fichiers attachés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434

5. Personnalisation du Web Chat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4365.1 Personnalisation des couleurs . . . . . . . . . . . . . . . . . . . . . . . . . . 436

5.1.1 Installation de SASS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4365.1.2 Modification des styles CSS . . . . . . . . . . . . . . . . . . . . . . 436

5.2 Personnalisation des libellés . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437

Page 16: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

15Table des matières

6. Gestion de l’historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4376.1 Stockage des messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4386.2 Affichage de l’historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

7. Mise en application avec le bot Commerce . . . . . . . . . . . . . . . . . . . 4397.1 Introduction et prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

7.1.1 Fichier de données des produits . . . . . . . . . . . . . . . . . . . . 4407.2 Compétences du bot Commerce . . . . . . . . . . . . . . . . . . . . . . . . 441

7.2.1 Bavardage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4417.2.2 Consultation des informations de produit . . . . . . . . . . . 442

7.3 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4447.3.1 Architecture technique. . . . . . . . . . . . . . . . . . . . . . . . . . . 4447.3.2 Modèle de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4457.3.3 Modèle d’intentions et d’entités . . . . . . . . . . . . . . . . . . . 445

7.4 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4477.4.1 Paramétrage du moteur NLP . . . . . . . . . . . . . . . . . . . . . . 4477.4.2 Structure du programme du bot . . . . . . . . . . . . . . . . . . . 4477.4.3 Initialisation du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . 4487.4.4 Installation des dépendances . . . . . . . . . . . . . . . . . . . . . . 4497.4.5 Point d’entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4497.4.6 Structure des données des compétences . . . . . . . . . . . . . 4527.4.7 Implémentation de la couche services. . . . . . . . . . . . . . . 4537.4.8 Implémentation des compétences. . . . . . . . . . . . . . . . . . 457

Chapitre 12

Déploiement dans le Cloud

1. Bots dans le Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4591.1 « As a Service ». . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4591.2 Déploiement de bots en tant qu’application Node.js. . . . . . . . 4601.3 Bot en tant que 12-factor app . . . . . . . . . . . . . . . . . . . . . . . . . . 461

Page 17: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

16Développez vos bots avec JavaScript et Node.js

Botkit

2. Cloud Foundry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4652.1 Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465

2.1.1 Organisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4652.1.2 Espace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4652.1.3 Utilisateurs et rôles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4652.1.4 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4662.1.5 Buildpacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4662.1.6 Manifeste d’application . . . . . . . . . . . . . . . . . . . . . . . . . . 4662.1.7 Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4662.1.8 Service Cloud Foundry . . . . . . . . . . . . . . . . . . . . . . . . . . . 4672.1.9 Variables d’environnement . . . . . . . . . . . . . . . . . . . . . . . 4672.1.10Santé d’une application . . . . . . . . . . . . . . . . . . . . . . . . . . 468

2.2 Cycle de vie d’une application Cloud Foundry. . . . . . . . . . . . . 4682.3 Interface en ligne de commande Cloud Foundry . . . . . . . . . . . 469

2.3.1 Sélection d’un point d’entrée Cloud Foundry . . . . . . . . 4692.3.2 Connexion à Cloud Foundry . . . . . . . . . . . . . . . . . . . . . . 4692.3.3 Déploiement d’application. . . . . . . . . . . . . . . . . . . . . . . . 4702.3.4 Démarrage de l’application . . . . . . . . . . . . . . . . . . . . . . . 4702.3.5 Gestion des journaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4712.3.6 Manipulation des variables d’environnement . . . . . . . . 471

3. Exemple de déploiement avec un bot Slack . . . . . . . . . . . . . . . . . . . 4713.1 Présentation du bot Onomatobot . . . . . . . . . . . . . . . . . . . . . . . 4713.2 Écriture du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4723.3 Création de l'app dans Slack . . . . . . . . . . . . . . . . . . . . . . . . . . . 4753.4 Préparation du manifeste Cloud Foundry. . . . . . . . . . . . . . . . . 4763.5 Création de l'application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4763.6 Définition des variables d'environnement utilisateur . . . . . . . 4763.7 Ajout du service Redis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4773.8 Redémarrage du bot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481

Page 18: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

Chapitre 5

IA et compréhension du langage

IA et compréhension du langage1. Quelles technologies d’intelligence artificielle pour les bots ?

L’Intelligence Artificielle (IA) est une discipline de l’informatique qui consisteà imiter des formes d’intelligence dans les machines. Le logiciel ou le robotintègre alors des techniques qui se rapprochent de capacités cognitives del’être humain : voir, entendre, s’exprimer, raisonner, etc. L’Homme cherche àfaire imiter l’Homme par la machine.

L’IA est vaste en termes de connaissance et de technologie. La discipline estorganisée en plusieurs domaines. Entre autres, nous trouvons :

– le raisonnement avec les systèmes experts et les systèmes d’organisation etde récupération de la connaissance – par exemple, les systèmes experts descompagnies d’assurance qui déduisent les conclusions de constats amiablesautomobiles ;

– l’apprentissage avec les algorithmes de machine learning – par exemple, lessystèmes de recommandation des sites de e-commerce qui prédisent les pro-duits qui pourraient nous intéresser ;

– le traitement et la compréhension du langage naturel – par exemple, les sys-tèmes de traduction ;

– la reconnaissance et la synthèse de la parole – par exemple, les assistants per-sonnels tels que Siri d’Apple, Google Assistant ou Amazon Alexa ;

lcroise
Tampon
Page 19: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

© E

dit

ions

EN

I -

All r

ights

rese

rved

116Développez vos bots avec JavaScript et Node.js

Botkit

– la vision par ordinateur, avec notamment la reconnaissance de formes et devisages – par exemple, avec les véhicules autonomes capables de détecter etd’éviter les obstacles.

Quelles technologies d’IA pourraient être intégrées à des bots ? Potentielle-ment, toutes, suivant le cas d’utilisation. Toutefois, l’état de l’art actuel desbots s’appuie principalement sur le domaine du traitement du langage natu-rel.

2. Traitement automatique du langage naturel

Les robots conversationnels manipulent le langage naturel, c’est-à-dire desphrases formulées et/ou compréhensibles par des êtres humains. Pour ce faire,ils mettent en œuvre des techniques dites de Traitement Automatique duLangage Naturel (TALN) ou Natural Language Processing (NLP).

Ainsi, les bots modernes vont au-delà des robots comprenant uniquement desmots-clés ou des expressions régulières. Ils sont capables de comprendre le lan-gage naturel, c’est-à-dire d’extraire une signification dans les phrases écritespar des utilisateurs. Cette mécanique est appelée Compréhension du LangageNaturel ou Natural Language Understanding (NLU). Il s’agit de la techniqued’intelligence artificielle la plus utilisée pour les bots.

Page 20: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

117IA et compréhension du langageChapitre 5

Pour compléter le périmètre du domaine du Traitement Automatique du Lan-gage Naturel, il existe une autre technique de NLP : la Génération Automa-tique de Langage ou Natural Language Generation (NLG). Il s’agit detransformer une signification en texte. Dans le cas de la plupart des bots, il ya peu, voire aucune technique avancée de NLG : les phrases prononcées par lesbots sont prévues à l’avance, éventuellement avec des variantes et des para-mètres.

Bref, le NLU est utilisé en amont pour analyser les entrées (phrases ou docu-ments rédigés par des humains), alors que le NLG l'est pour préparer les sorties(phrases ou documents compréhensibles par des humains).

Par commodité pour la suite du livre, nous employons l’abus de langage en uti-lisant les termes NLP et NLU de façon interchangeable.

3. Compréhension du langage naturel avec Watson

Les algorithmes de compréhension du langage des solutions d’IntelligenceArtificielle en l’état de l’art (IBM Watson, Microsoft LUIS, etc.) permettent dedétecter l’intention d’une phrase et les entités nommées qui sont présentesdans le texte.

L’objectif est de pouvoir obtenir des données actionnables par un bot, suite àl’analyse de phrases d’utilisateurs qui comprennent des tournures différentes,des mots et expressions variés, et même quelques fautes d’orthographe…

Page 21: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

© E

dit

ions

EN

I -

All r

ights

rese

rved

118Développez vos bots avec JavaScript et Node.js

Botkit

3.1 Détection d’intentions et d’entités

Une intention est la signification globale de la phrase. Par convention, nousécrivons les identifiants des intentions avec un #, par exemple #consulter-meteo.

Une entité nommée est une information significative dans la phrase, qui agitcomme un paramètre de la phrase. Par convention, nous écrivons les identi-fiants des entités nommées avec un @, comme @ville.

Par exemple, dans la phrase « Quelle est la météo prévue à Lyon pour ce week-end ? », un algorithme de NLP entraîné pourra extraire :

– l’intention #consulter-meteo ;

– les valeurs « Lyon » et « ce week-end » respectivement pour les entités nom-

mées @ville et @moment pour indiquer un lieu géographique et un para-mètre temporel.

Dans ce cas, le bot comprendra qu’il faut aller dans la gestion de conversationprévue pour la consultation de la météo.

Le tableau ci-après présente d’autres exemples d’interprétation possible dephrases par un moteur de NLP. À noter que les intentions et les entitésextraites dépendent de la façon dont est configuré le moteur.

Phrase utilisateur Intention Entités nommées

Envoie un message à Maman

#envoyer-message @personne = Maman

Je veux transmettre une missive à mon cher Jérôme

#envoyer-message @personne = Jérôme

Quelle est l’actualité politique ?

#obtenir-news @rubrique = politique

Donne-moi les news Sports

#obtenir-news @rubrique = Sports

Dis-moi le temps de cuisson des œufs durs

#obtenir-temps-cuisson @plat = œufs durs

Page 22: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

119IA et compréhension du langageChapitre 5

3.2 Mise en application avec IBM Watson

Configurer et entraîner un algorithme de traitement automatique du langagenaturel permettent d’ouvrir les possibilités d’un bot. L’utilisateur peut ainsiexprimer son intention avec ses propres mots, puis le bot le guide dans laconversation associée.

Dans cette section, nous allons expérimenter l’utilisation de l’API Assistantd’IBM Watson pour analyser un texte et en extraire le sens, i.e. l’intention etles entités associées.

Le mode opératoire est le suivant :

– Création de l'espace de travail IBM Watson Assistant, appelé Skill.

– Ajout d’intentions, avec des exemples de phrases pour chaque intention.

– Configuration d’entités nommées, avec des noms d’entités, des valeurs etsynonymes.

– Invocation de l’API pour transmettre la phrase de l’utilisateur pour analyse.

3.3 Création de l'espace de travail/Skill dans IBM Watson Assistant

Le point de départ est la création d’un compte IBM Cloud (anciennement ap-pelé Bluemix). L’URL d’accès est : https://www.ibm.com/cloud/.

dUne fois connecté sur IBM Cloud, créez un service Watson Assistant de-puis le catalogue en sélectionnant la catégorie IA ou en filtrant sur le mot-clé Watson.

Lancer le chronomètre #lancer-chronomètre Pas d’entitéLancer un minuteur de 10 minutes

#lancer-minuteur @duree = 10 minutes

Phrase utilisateur Intention Entités nommées

Page 23: teurs naissent comme des avec JavaScript et Node.js Botkit · L’auteur s’appuie pour cela sur l’étude de quatre technologies : Watson d’IBM, LUIS de Microsoft, Dialogflow

© E

dit

ions

EN

I -

All r

ights

rese

rved

120Développez vos bots avec JavaScript et Node.js

Botkit

dNommez le service, par exemple « watson-assistant-eni » et validezla création du service conversationnel.

dLancez l’interface de gestion Watson Assistant en cliquant sur Outil delancement.

dAllez dans l’onglet Skills, créez un espace de travail (Dialog Skill), en le bap-tisant « workspace-eni » et en choisissant la langue à analyser par Watson :