Overview

Skill Level: Intermediate

Chat-bot relié à Messenger avec NodeJS, MariaDB et utilisation d'API.

R√©servation de chambres d‚ÄôH√ītel au Palais de l'Oiseau de Jade.

Step-by-step

  1. Présentation

    Le Palais de l’Oiseau de Jade est un h√ītel de luxe situ√© en Bretagne. Il souhaite am√©liorer son service en proposant √† ses clients de r√©server des chambres gr√Ęce √† un Chatbot. L’application permettra d’enregistrer dans une base de donn√©es les r√©servations.
    L’h√ītel souhaite √©galement pouvoir analyser ces donn√©es bien que l’√©quipe ne poss√®de pas de comp√©tences en d√©veloppement.

     

    La solution retenue est de d√©ployer le Chatbot sur Facebook Messenger. Cet outil permet d’obtenir des graphiques en fonction de questions en langage naturel.

    ¬†Nous utilisons comme base de donn√©es MariaDB gr√Ęce √† une application NodeJS.

     

     

     

    chatbot-maria-1

     

    Mise à jour:
    10-18 Suppression de Watson Analytics
    12-18 Migration vers cloud.ibm.com
    03-19
    ¬† Migration sur MariaDB d’AWS RDS.

      Suppression de la région à la connexion.
    ¬† Ajout d’une interface

  2. Watson Assistant

     

    • Cr√©er un service Watson Assistant nomm√© palais de l oiseau de jade Watson Assistant . Le nom du service est reconnu dans le manifest pour le d√©ploiement de l’application nodeJS.
    • Acc√©der √† l’outil de lancement.

     

    watsona1

     

     

     

    skill

     

    • ¬†Explorer l’interface. J’ai utilis√© les propositions de “Content Catalog” pour √©laborer ce Chatbot.
    • ¬†Essayer le chatbot. On pourra tester des phrases avec des mots clefs comme blague, bonjour, contact, horaire et r√©servation.

     

    watsona2-1

     

    • ¬†Modifier le message obtenu lorsqu’on demande les horaires.

     

    watsona3

     

  3. Test de l'API Watson Assistant

    • R√©cuperer l’url et les identifiants de l’API Watson Assistant.

     skill2

    chatbot2

    • Utiliser une application REST comme Postman¬† pour tester votre chatbot avec les identifiants fournis.

     

    Méthode POST 
    URL URL?version=2018-08-07
    Dans Authorization ->Basic auth-> username et password
    Dans Body -> raw -JSON-> {"input":{"text":"coucou"}}
    • On envoie “coucou”. Le chatbot r√©pond “Bonjour, en quoi puis-je vous aider ?”.

     

    POST 1

    postman1

     

    • Il faut copier le context du JSON re√ßu pour poursuivre le dialogue.
      {"input":{"text":"réservation"}, "context": {##à remplacer##}}

     

    POST 2

    postman2

     

  4. MariaDB

    • Cr√©er un service RDS MariaDB avec RosettaHub( lien valide uniquement pour Dauphine M2 SITN) en se dirigeant vers la console AWS.

    Maria

     

    • Modifier le groupe de s√©curit√© pour autoriser l’adresse ip 0.0.0.0/0 √† se connecter. (On autorise toutes les adresses, √† √©viter !)

    maria2

     

    • Se connecter gr√Ęce √† Adminer √† l’instance MariaDB avec vos identifiants RDS et l’adresse du point de terminaison.
    • Cr√©er la base de donn√©es poj

     maria3

     

     

  5. Application NodeJS

    deploy

    • Cr√©er l’API Key et d√©ployer.

     

    deploiement1

    • Observer le d√©ploiement dans la chaine de distribution

    chatbot4

     

    • Echec sur le d√©ploiement de l’application, c’est normal.

     

    deploy2

     

    • Modifier les variables suivantes dans le d√©pot GIT de la chaine d’outils.¬†
    var myWatsonWorkspace = "";
    var myWatsonPassword = "";

    var myRDSHost ="";
    var myRDSLogin ="";
    var myRDSPassword ="";

     

    git

     

    • L’application se redeploie automatiquement au commit de Git.

     

    • Une fois d√©ploy√©e, acc√©der √† l’application depuis votre tableau de bord.
    • Vous obtenez l’interface suivante et pouvez tester le chatbot.

     

    chatbotclient

  6. Optionnel - Déploiement en ligne de commande

     

    Si l’√©tape pr√©c√©dente ne fonctionne pas ou pour d√©couvrir un autre moyen de d√©ployer son application.

    • T√©l√©charger le code depuis le d√©p√īt Github et le d√©compresser.
    • Modifier app.js avec les identifiants.
    • Installer le client IBM Cloud
    • Ouvrir une invite de commande (CMD sous windows) et se connecter √† IBM Cloud.
    bx login
    • En se placant dans le r√©pertoire contenant le code, executer :
    bx cf push

     

    deploiement7

     

     

  7. Debogage - Journaux de l'app

    • Installer le client IBM Cloud
    • Ouvrir une invite de commande (CMD sous windows) et se connecter √† IBM Cloud.
    bx login
    • Afficher les logs de l’application en remplacant le nom de celle-ci dans la ligne de commande. On observe dans le cadre l’affichage de la r√©ponse de Watson Assistant.
    bx cf logs palais-de-l-oiseau-de-jade-nodejs --recent

     

    console

     

  8. Facebook Messenger

     

    • R√©aliser une page Facebook d√©di√©e au chatbot.
    • Se connecter √† Facebook Developer.
    • Ajouter une application.
    • Ajouter le service Messenger.

    messenger1

     

    • G√©n√©rer un token en selectionant votre page, accepter les autorisations.

     

    messenger2-1

     

    • Ajouter ce token √† myFacebookToken dans app.js en acc√©dant √† votre d√©p√īt Git (menu devOps). Le token est d√©pendant de la page Facebook.
    • ¬†Sauvegarder le fichier. L’application se red√©ploit automatiquement √† la sauvegarde. On pourra v√©rifier le bon fonctionnement dans la pipeline de distribution.
    • Configurer les webhooks, ajouter l’url de votre application¬† avec /webhook √† la fin et cocher les cases correspondantes.

     

     

     

    messenger3

     

    messenger4

     

    Si l’url webhook ne fonctione pas :

    • V√©rifier que l’application nodeJs fonctionne.
    • V√©rifier que /webhook est bien renseign√© √† la fin de l’url.
    • V√©rifier que le token Facebook est enregistr√© dans app.js et que l’application est redeploy√©e.

     

    webhookerreur

    webhookerreur

     

    • S√©l√©ctionner la page qui utilisera les webhook.

     

    messenger5

     

    • ¬†Ajouter une image pour l’application.
    • ¬†Ajouter une URL de politique de confidentialit√© pour publier votre application . https://frebourg.es/cgu

     

    messenger9

     

    • Ajouter pages_messaging dans Messenger ->parametre->Contr√īle app pour Messenger et envoyer la demande.

     

     

    • Le chatbot r√©pond au message. On pourra v√©rifier les logs (section debogage).

     

    messenger7

     

    messenger8

     

     

  9. Réserver au Palais de l'Oiseau de Jade

     

    Un magnifique h√ītel au coeur de la Bretagne, dans une r√©gion recul√©e.

     

    foretjade_hd_4

     

     

    palaisoiseaujade

     

     

    Il est temps de réserver !

    messenger10

     

    • Demander au Chatbot de r√©aliser une r√©servation.
    • V√©rifier dans la base de donn√©es l’enregistrement de la r√©servation.
    • V√©rifier apr√®s confirmation les logs et d√©terminer les informations manquantes dans le flux de donn√©es d’une r√©servation (section debogage).

     

    console

     

     

  10. Demandes de l'h√ītel

    Problème dans le processus de réservation

    Le Palais de l’Oiseau de Jade est oblig√© de rappeler les clients pour obtenir le nombre de jours de chaque r√©servation. Am√©liorer le processus de r√©servation.

    • Am√©liorer l’application en prenant en compte le nombre de jours de r√©servation.
      • Modifier le dialogue du chatbot pour prendre en compte cette nouvelle variable.
      • Ajouter une variable de contexte √† la reconnaissance de la variable num√©rique.
      • Tester le chatbot.
      • Modifier le fichier app.js de l’application NodeJs depuis le d√©p√īt Git.
      • R√©aliser une r√©servation via Messenger.
      • V√©rifier l’ajout du nombre de jours dans la base de donn√©es.

    Exemple d’ajout d’une variable de context, en cliquant sur JSON editor, ins√©rer le code encadr√© au bon endroit dans le dialogue.nbj1

     

    • Proposer des options comme Assurance annulation, Pack Romantique , Bouquet de fleurs, Acc√®s au SPA, Massage, Repas Gourmand ou Location de v√©los.
      • Ajouter une entit√© des diff√©rentes options dans le chatbot.
      • Modifier le dialogue pour prendre en compte cette entit√© en ajoutant une variable de context.
      • Tester le chatbot.
      • Ajouter une colonne option dans la table reservation de la base de donn√©es (Mariadb).
      • Modifier le fichier app.js pour inserer l’option choisie.
      • R√©aliser une r√©servation via Messenger.
      • V√©rifier l’ajout de l’option dans la base de donn√©es.

     

    Une application réaliste

    Pour √™tre √† la hauteur des exigences de ses clients, le Palais de l’Oiseau de Jade doit proposer un Chat-bot performant. Il semble n√©cessaire d’afficher le prix des options et de la r√©servation du client avant la confirmation. L’application doit √©galement r√©cup√©rer les coordonn√©es des clients, voir les enregistrer pour une future r√©servation avec un num√©ro que l’on devra leur fournir.

    • Ajouter un prix par option.
      • Modifier la base de donn√©es en ajoutant une nouvelle table option avec les prix.
    • CREATE TABLE IF NOT EXISTS `options` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `libelle` varchar(50) DEFAULT NULL,
      `prix` double NOT NULL,
      PRIMARY KEY (`id`)
      ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;

      INSERT INTO `options` (`id`, `libelle`, `prix`) VALUES
      (1, 'Assurance annulation', 50),
      (2, 'Pack Romantique', 60),
      (3, 'Bouquet de fleurs', 15),
      (4, 'Massage', 90),
      (5, 'Repas Gourmand', 150),
      (6, 'Location de vélos', 40);alter table reservation add column id_options int;
      • Modifier l’application pour renvoyer le prix correspondant au chatbot.¬†
      • Modifier le chatbot pour afficher le prix.
      • Ins√©rer l’option choisi dans la table r√©servation.
    • Donner le prix de la r√©servation au client et enregistrer celui-ci dans la base.
      • Modifer la base de donn√©es en ajoutant une table de liaison qui enregistre les options choisies pour une r√©servation.
      • Modifier l’application pour calculer le prix total.
      • Modifier le chatbot pour afficher le prix.
      • Ins√©rer les options en fonction de la r√©servation dans la base depuis l’application apr√®s la confirmation.

     

    • Permettre l’ajout des prix des chambres selon la cat√©gorie.

     

  11. What else ?

    Ces tutoriels peuvent vous intéresser :
    https://developer.ibm.com/recipes/author/l-frebourg/

Join The Discussion