Créé en 2020 et modifié le 19 Oct 2020

Chatbot IBM Cloud

L’équipe marketing de votre Hotel propose d’améliorer son service client en proposant de réserver des chambres grâce à un assistant virtuel. L’application permettra d’enregistrer dans une base de données les réservations et de les analyser sur Cognos Analytics.

 

exemples d’assistant virtuel susceptibles de changement :
https://www.facebook.com/PalaisDelOiseaudeJade
https://ibm-poj-4-quiet-tiger.eu-de.mybluemix.net

 

schema2020-2

Partie 1 – Watson Assistant

Livrable : otelo/mission7/…

 

  • Créer un service Watson Assistant nommé otelo Watson Assistant .
  • Accéder à l’outil de lancement.

 

watson

 

 

 

skill

 

  •  Explorer l’interface. J’ai utilisé les propositions de “Content Catalog” pour élaborer cet assistant virtuel.
  •  Essayer l’assistant virtuel. On pourra tester des phrases avec des mots clefs comme blague, bonjour, contact, horaire et réservation.

 

try

 

  •  Modifier la demande du chatbot avec de nouvelles variables pour correspondre aux données nécessaires (dateD,dateF,idPeriode,idchambre). Par simplification, on passera drectement l’idPerdiode et l’idChambre.

 

watsona3

 

  • réaliser un nouvel assistant
  • relier l’assistant au skill créé précédemment

assistantv2-2

 

Partie 2 – Test de l’API Watson Assistant

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

assistantv2-1-1

 

  • Utiliser une application REST comme Postman  pour tester votre assistant virtuel avec les identifiants fournis.

 

Méthode

POST


Dans Authorization ->Basic auth-> apikey et {votre api key}


Dans Body -> raw -JSON-> {« input »:{« text »: »coucou »}}

  • Obtenir un id de session avec une url de la forme (ajouter la variable http version)
    https://api.eu-gb.assistant.watson.cloud.ibm.com/instances/{instance id}/v2/assistants/{assistant id}/sessions?version=2019-02-28
  • Envoyer un message coucou avec le numero de la session obtenue et une url de la forme
    https://api.eu-gb.assistant.watson.cloud.ibm.com/instances/{instance id}/v2/assistants/{assistant id}/sessions/{idesssion}/message?version=2019-02-28
  • L’assistant virtuel répond “Bonjour, en quoi puis-je vous aider ?”.

 

postmanv2-1

 

 

Partie 3 – MySQL sur IBM Cloud

Livrable : otelo/mission7/…
Partie 3 ou 3 bis au choix

  • Créer un service compose for Mysql sur IBM Cloud
  •  Se connecter grâce à Adminer à l’instance Mysql avec vos identifiants et l’adresse de l’instance
  • Déployer votre base de données Otelo

 

maria3

 

 

Partie 3 bis –  MariaDB sur AWS

  • Créer un service RDS MariaDB gratuit accessible publiquement en se dirigeant vers la console AWS

 

rds-2

rds2

 

  • 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.
  • Déployer votre base de données Otelo

 

maria3

 

 

Partie 4  – Application NodeJS en local

Livrable : otelo/mission7/…
Partie 4, 4bis ou 4 ter au choix

 

  • Installer NodeJS
var watsonApiKey = "";
//s'arreter avant v2
var watsonURL ="https://api.eu-gb.assistant.watson.cloud.ibm.com/instances/ba3e7f27-4e83-4906-86eb";
//assistant id
var watsonID='';

var myRDSHost ="database-2.eu-west-3.rds.amazonaws.com";
var myRDSLogin ="admin";
var myRDSPassword ="";
  • Dans le répertoire de l’application, executer npm install pour déployer les paquets nécessaires
  • Executer npm start pour lancer l’application.

 

  • Une fois déployée, accéder à l’application depuis http://localhost:3000 . Vous obtenez l’interface suivante et pouvez tester l’assistant virtuel. Inspecter la console du serveur NodeJS et la console du navigateur.

 

watsonhtml

Partie 4 bis – Application NodeJS sur IBM Cloud

Livrable : otelo/mission7/…

 

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 du fichier app.js dans le dépot GIT de la chaîne d’outils.

var watsonApiKey = «  »;
//s’arreter avant v2
var watsonURL = »https://api.eu-gb.assistant.watson.cloud.ibm.com/instances/ba3e7f27-4e83-4906-86eb »;
//assistant id
var watsonID= »;

var myRDSHost = »database-2.eu-west-3.rds.amazonaws.com »;
var myRDSLogin = »admin »;
var myRDSPassword = » »;

git

 

  • L’application se redéploie 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 l’assistant virtuel.

 

watsonhtml

 

 

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

 

 

Optionnel –  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.
    • vert pour nodejs
    • jaune pour l’assistant

bx cf logs palais-de-l-oiseau-de-jade-nodejs –recent

assistantconsole

 

Partie 4 ter – Application NodeJS sur AWS

 

  • Réaliser une instance Ligthsail NodeJS sur AWS

light

 

  • Connectez vous à l’instance en ssh

 

nodejs

 

 

var watsonApiKey = "";
//s'arreter avant v2
var watsonURL ="https://api.eu-gb.assistant.watson.cloud.ibm.com/instances/ba3e7f27-4e83-4906-86eb";
//assistant id
var watsonID='';

var myRDSHost ="database-2.eu-west-3.rds.amazonaws.com";
var myRDSLogin ="admin";
var myRDSPassword ="";
  • Dans le répertoire /opt/bitnami/apps/myapp/htdocs, déployer les fichiers app.jsindex.html et package.json (on pourra faire des copier- coller, sudo nano monfichier  ou  sudo rm monfichier)

 

  • Dans le repertoire de l’application, executer sudo npm install pour déployer les paquets nécessaires
  • Executer npm start pour lancer l’application.

 

  • Une fois déployée, accéder à l’application depuis son IP. Vous obtenez l’interface suivante et pouvez tester l’assistant virtuel. Inspecter la console du serveur NodeJS et la console du navigateur.

 

watsonhtml

Partie 5 – Enregistrement de la réservation

Livrable : otelo/mission7/…

  • Modifier les lignes 214 à 240 pour permettre l’enregistrement de la réservation et de la ligne_reservation
  • Intégrer le chatbot au site Otelo, trois solutions
    • via une url externe
    • en utilisant l’intégration d’IBM Cloud (assistant->integrations->webchat-embed)
    • en intégrant la page HTML (risque de probleme CORS)

 

 

 

 

 

 

 

Partie 6 – Cognos Analytics

Remarque : Il est possible de relier une base de données hébergées sur IBM Cloud directement à Cognos Analytics. Nous ne pouvons pas créer d’instance Mysql avec le compte d’essai. de même, il n’est pas possible de se connecter à une base de données depuis Cognos avec la version d’essai de celui ci.

cognos2

 

  • Utiliser l’assistant Cognos en anglais pour générer les graphiques suivants :
    • Le nombre de chambres réservées par catégorie
    • Le nombre de réservation par date
    • Le nombre de chambres réservées depuis 1 an par date

cognos

Partie 7 – Facebook Messenger

Uniquement pour une application avec un domaine (exemple http:// zorg.zh), dans notre cas IBM Cloud.

  • Réaliser une page Facebook dédiée à l’assistant virtuel.
  • Se connecter à Facebook Developer.
  • Ajouter une application.
  • Ajouter le service Messenger.

messenger1

 

  • Générer un token en sélectionnant 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. Pour AWS, relancer l’application.
  • 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 redéployée.

 

webhookerreur

webhookerreur

 

 

 

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

 

messenger9

 

 

 

 

  • L’assistant virtuel répond au message. On pourra vérifier les logs (section débogage).
    • bleu pour messenger
    • vert pour nodejs
    • jaune pour l’assistant

 

facbookconsole