Step-by-step
-
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 assistant virtuel. L’application permettra d’enregistrer dans une base de données les réservations et de les analyser sur Cognos Analytics.
Pages de l’assistant virtuel suceptibles de changement :
https://www.facebook.com/PalaisDelOiseaudeJade
https://ibm-poj-4-quiet-tiger.eu-de.mybluemix.net/b -
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 avec IBM Cloud.
- Accéder à l’outil de lancement.
- Importer le Workspace workspace_palaisdeloiseaudejade.json dans le nouveau 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.
- Modifier le message obtenu lorsqu’on demande les horaires.
- réaliser un nouvel assistant
- relier l’assistant au skill créé précédement
-
Test de l'API Watson Assistant
- Récuperer l’url et les identifiants de l’API Watson Assistant.
- 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 ?”.
-
MySQL sur IBM Cloud
- 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
- Créer la base de données poj
-
MariaDB sur AWS
- Créer un service RDS MariaDB gratuit accessible publiquement en se dirigeant vers la console AWS
- Modifier le groupe de sécurité pour autoriser l’adresse ip 0.0.0.0/0 à se connecter. (On autorise toutes les adresses, à éviter !)
- 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
-
Application NodeJS en local
- Installer NodeJS
- Télécharger les fichiers du dépot https://github.com/cherryclass/IBM-poj
- Modifier les variables suivantes dans le fichier app.js.
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.
-
Application NodeJS sur IBM Cloud
- Cliquer sur le bouton Deploy to IBM Cloud du dépôt GitHub.
- Créer l’API Key et déployer.
- Observer le déploiement dans la chaine de distribution
- Echec sur le déploiement de l’application, c’est normal.
- Modifier les variables suivantes du fichier app.js dans le dépot GIT de la chaine 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 ="";- 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 l’assistant virtuel.
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
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
-
Application NodeJS sur AWS
- Réaliser une instance Ligthsail NodeJS sur AWS
- Connectez vous à l’instance en ssh
- Créer une application NodeJS en suivant ces étapes
https://docs.bitnami.com/oci/infrastructure/nodejs/administration/create-custom-application-nodejs/
- Télécharger les fichiers du dépot https://github.com/cherryclass/IBM-poj
- Modifier les variables suivantes dans le fichier app.js.
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.js, index.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.
-
Cognos Analytics
- S’inscrire à Cognos Analytics https://www.ibm.com/fr-fr/products/cognos-analytics
- Exporter la table reservation depuis Adminer en CSV (virgule)
- Importer le CSV dans Cognos (+ transférer un fichier)
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.
- 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
-
Facebook Messenger
Uniquement pour une application avec un domaine, 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.
- Générer un token en selectionant votre page, accepter les autorisations.
- 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.
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.
- Ajouter une image pour l’application.
- Ajouter une URL de politique de confidentialité pour publier votre application . https://frebourg.es/cgu
- L’assistant virtuel répond au message. On pourra vérifier les logs (section debogage).
- bleu pour messenger
- vert pour nodejs
- jaune pour l’assistant
-
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 de ‘assistant virtuel pour prendre en compte cette nouvelle variable.
- Ajouter une variable de contexte à la reconnaissance de la variable numérique.
- Tester l’assistant virtuel.
- 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.
- 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 l’assistant virtuel.
- Modifier le dialogue pour prendre en compte cette entité en ajoutant une variable de context.
- Tester l’assistant virtuel.
- 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 à l’assistant virtuel.
- Modifier l’assistant virtuel 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 l’assistant virtuel 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.
- Améliorer l’application en prenant en compte le nombre de jours de réservation.
-
What else ?
Ces tutoriels peuvent vous intéresser :
https://developer.ibm.com/recipes/author/l-frebourg/