Comment construire un chatbot avec un flux de dialogue | Chapitre 4 - API externe pour l'exécution

Dans ce chapitre, nous allons créer un robot “StockTracker” qui extraira des données de ticker spécifiques à partir d'un site Web externe via les API RESTFUl. [Ne vous inquiétez pas si vous ne comprenez pas le jargon, nous allons le décomposer]

Chapitre 1: Gyaan de base sur les chatbots et la configuration de l’environnement de flux de dialogue

Chapitre 2: Comprendre les éléments constitutifs de Dialogflow

Chapitre 3: Utilisation de dialogues linéaires, de suivi et non linéaires pour créer un bot «TripPlanner»

Utilisation d'une API externe pour l'exécution

Vue d'ensemble du module:

  • La réalisation des actions nécessite plus qu'une réponse textuelle
  • Effectuer des actions à l'aide de Webhooks [Les Webhooks ne sont que des rappels HTTP qui peuvent être notifiés à l'aide de post request]
  • Code hôte utilisant les fonctions de nuage pour Firebase
  • D'autres points de terminaison externes tels que AWS lambdas fonctionneront également.

Récapitulation rapide:

Accomplissement

Exécuter le code qui complétera l'action demandée par l'utilisateur pour répondre à l'intention de l'utilisateur.

Le code peut nous obliger à mettre à jour la base de données

Une fois le code généré, une réponse est générée à la réponse tex qui est envoyée à l’utilisateur.

… ..

Exemple:

Nous allons obtenir le cours des actions d'Apple d'une source externe.

La plateforme Intrinio

L’alternative au marché indien pourrait être: https://kite.trade/startups

Inscrivez-vous et accédez à votre section ccount..vous devriez trouver vos clés d'accès à l'API

API explorer:

https://intrinio.com/api-explorer?formula=historical_data&values=eyJpZGVudGlmaWVyIjoiQUFQTCIsIml0ZW0iOiIiIJJZZXF1ZW5jZSI6MH0%3D

Documentation

http://docs.intrinio.com/#introduction

Tester:

https://api.intrinio.com/historical_data?identifier=AAPL&item=open_price&start_date=2018-07-12&end_date=2018-07-12

Une invite vous demandera votre nom d'utilisateur et votre mot de passe… récupérez-les à partir de votre page «Mon compte» et vous obtiendrez une réponse JSON comme ci-dessous.

Démo

  • Exécution de la configuration du tracker boursier à l’aide des fonctions de cloud pour Firebase.
  • Utilisez le niveau de paiement au fur et à mesure de Blaze pour accéder à des API externes

Étape 1: configuration d'un nouvel agent dans le flux de dialogue

Étape 2: Configuration des entités

Étape 3: Intention

Accomplissement:

'use strict';
 
fonctions const = require ('firebase-functions');
// const {WebhookClient} = require ('dialogflow-accomplissement');
// const {Carte, Suggestion} = require ('dialogflow-accomplissement');
 
//process.env.DEBUG = 'dialogflow: debug'; // active les instructions de débogage de lib
 
exports.dialogflowFirebaseFulfillment = functions.https.onRequest ((demande, réponse) = = {
  // agent const = new WebhookClient ({requête, réponse});
  var chat = "voici un exemple de réponse: atout suce";
  
  response.setHeader ('Content-Type', 'applicaiton / json');
  response.send (JSON.stringify ({"applymentText": chat}));
});

Cela va jeter une erreur

L'appel Webhook a échoué. Erreur: Impossible d'analyser la réponse JSON webhook: Champ introuvable: parole dans le message google.cloud.dialogflow.v2.WebhookResponse.

C’est parce que la parole et le texte d’affichage ont été remplacés par «accomplissementTexte» dans la v2 de Dialogflow.

>

Activer Webhook en tant que réalisation dans le but GetStockPrice

Maintenant, nous devons nous assurer qu'une action spécifique est nommée et qu'elle est appelée lors de la connexion Web.

Définissez l’action dans la section action et paramètres de l’intention:

Code:

Sortie:

Quelques erreurs que vous pourriez rencontrer:

  1. Passez à Blaze Pay as you go
Erreur:
Compte de facturation non configuré. Le réseau externe n'est pas accessible et les quotas sont sévèrement limités. Configurer le compte de facturation pour supprimer ces restrictions

2. Impossible de lire l'action de propriété

Avait initialement écrit

let action = request.body.result.action;

et j'ai cette erreur:

TypeError: Impossible de lire la propriété 'action' de non définie
    sur exports.dialogflowFirebaseFulfillment.functions.https.onRequest (/user_code/index.js:9:37)
    at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:26:47)
    à /var/tmp/worker/worker.js:684:7
    à /var/tmp/worker/worker.js:668:9
    à _combinedTickCallback (internal / process / next_tick.js: 73: 7)
    at process._tickDomainCallback (internal / process / next_tick.js: 128: 9)

mais l'impression de l'en-tête et du corps des requêtes a montré que dialogflow v2 a légèrement changé les choses.

Corps de la demande: {"responseId": "b539a7bf-eccc-43a9-9f6b-a1fe6ea41763", "queryResult": {"queryText": "hier", "action": "input.getStockPrice", "paramètres": {"date ":" 2018-07-18T12: 00: 00 + 05: 30 "," nom_entreprise ":" pomme "," type_prix ":" élevé "}," allRequiredParamsPresent ": true," message d'accomplissement ": [{" texte " : {"text": [""]}}], "intention": {"name": "projects / stocktracker-9268f / agent / intents / 7ccfc0ff-7271-4a60-83ce-868d6eea03a0", "displayName": " GetStockPrice "}," intentDetectionConfidence ": 1," languageCode ":" en "}," originalDetectIntentRequest ": {" payload ": {}}," session ":" projects / stocktracker-9268f / agent / sessions / 4c4870db-0d23 -ecc0-823e-de2bde1716f9 "}

donc au lieu de "requête" ajouter "queryResult"

let action = request.body.Queryresult.action;

Sommaire:

Alors qu'avons-nous appris dans ce chapitre? Nous avons utilisé notre bot pour analyser la demande de l’utilisateur et le module d’exécution de dialogflow pour créer une fonction de cloud hébergée sur firebase afin d’extraire les données d’un site tiers via une API RESTFUL et de revenir à l’utilisateur.

Attendez, mais avons-nous vraiment pensé? Jusqu’à présent, nous n’avons pas distribué / déployé de bot dans un environnement externe, que ce soit sur le jeu ou sur Twitter, pour permettre à l’utilisateur d’interagir réellement avec notre bot.

Dans le chapitre suivant, nous intégrerons / déploierons / distribuerons notre application sur un canal lâche et laisserons les utilisateurs interagir avec notre chatbot.

Références:

Cours Pluralsight par Janani Ravi

Documentation de Google sur les dialogues

Cette histoire est publiée dans The Startup, la plus importante publication d’entrepreneurs de Medium, suivie de plus de 351 974 personnes.

Abonnez-vous pour recevoir nos meilleures histoires ici.