Come costruire un chatbot con Dialog flow | Capitolo 4: API esterna per l'adempimento

In questo capitolo creeremo un bot "StockTracker" che estrarrà i dati di un ticker specifico da un sito Web esterno tramite le API RESTFUl. [Non ti preoccupare se non capisci i gerghi, lo analizzeremo]

Capitolo 1: Gyaan di base sui chatbot e impostazione dell'ambiente del flusso di dialogo

Capitolo 2: Comprensione dei mattoni di Dialogflow

Capitolo 3: Utilizzo di finestre di dialogo lineari, di follow-up e non lineari per creare un bot "TripPlanner"

Utilizzo dell'API esterna per l'adempimento

Panoramica del modulo:

  • Il completamento delle azioni richiede più di una risposta testuale
  • Compiere le azioni usando i webhook [i webhook sono solo callback HTTP che possono essere notificati usando la richiesta post]
  • Codice host utilizzando le funzioni cloud per Firebase
  • Anche altri endpoint esterni come AWS lambdas funzioneranno

Riepilogo rapido:

Compimento

Esecuzione del codice che completerà l'azione richiesta dall'utente per soddisfare l'intento dell'utente.

Il codice potrebbe richiedere di aggiornare la base dati

Una volta generato il codice, viene generata una risposta alla risposta tex inviata all'utente ... che viene a sua volta inviata all'agente (bot) che a sua volta viene inviato all'app che l'utente ha usato per interagire con il proprio agente.

... ..

Esempio:

Otterremo il prezzo delle azioni di Apple da una fonte esterna.

La piattaforma Intrinio

L'alternativa per il mercato indiano potrebbe essere: https://kite.trade/startups

Iscriviti e vai alla sezione di account .. dovresti trovare le tue chiavi di accesso API

API explorer:

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

Documentazione

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

Test:

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

Un prompt ti chiederà il tuo nome utente e password ... ottenerlo dalla tua pagina "il mio account" e otterrai una risposta JSON come di seguito.

dimostrazione

  • Completamento della configurazione per il tracker del mercato azionario utilizzando le funzioni cloud per Firebase.
  • Usa il pagamento Blaze man mano che procedi per accedere alle API esterne

Passaggio 1: installare un nuovo agente nella finestra di dialogo Flusso

Passaggio 2: impostare le entità

Passaggio 3: intento

Compimento:

'usa rigoroso';
 
const funzioni = require ('firebase-Functions');
// const {WebhookClient} = require ('dialogflow-adempimento');
// const {Card, Suggerimento} = Require ('dialogflow-adempimento');
 
//process.env.DEBUG = 'dialogflow: debug'; // abilita le istruzioni di debug della lib
 
exports.dialogflowFirebaseFulfillment = Functions.https.onRequest ((richiesta, risposta) => {
  // const agent = new WebhookClient ({richiesta, risposta});
  var chat = "ecco una risposta di esempio: trump fa schifo";
  
  response.setHeader ( 'Content-Type', 'applicaiton / json');
  response.send (JSON.stringify ({"satisfmentText": chat}));
});

Ciò genererà un errore

Chiamata Webhook non riuscita. Errore: impossibile analizzare la risposta JSON del webhook: impossibile trovare il campo: discorso nel messaggio google.cloud.dialogflow.v2.WebhookResponse.

Questo perché il discorso e il testo di visualizzazione sono stati sostituiti con "clementText" nella v2 di Dialogflow.

>

Abilita webhook come adempimento nell'intento GetStockPrice

Ora dobbiamo assicurarci che un'azione specifica sia chiamata e che sia chiamata durante il webhook.

Imposta l'azione nella sezione azione e parametri dell'intento:

Codice:

Produzione:

Pochi errori che potresti riscontrare:

  1. Passa a Blaze Pay mentre procedi
Errore:
Account di fatturazione non configurato. La rete esterna non è accessibile e le quote sono fortemente limitate. Configurare l'account di fatturazione per rimuovere queste restrizioni

2. Impossibile leggere l'azione della proprietà

Inizialmente aveva scritto

let action = request.body.result.action;

e ho ottenuto questo errore:

TypeError: impossibile leggere la proprietà 'action' di undefined
    at 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)
    su /var/tmp/worker/worker.js:684:7
    su /var/tmp/worker/worker.js:668:9
    su _combinedTickCallback (internal / process / next_tick.js: 73: 7)
    at process._tickDomainCallback (internal / process / next_tick.js: 128: 9)

ma la stampa dell'intestazione e il corpo delle richieste hanno mostrato che dialogflow v2 ha cambiato un po 'le cose.

Corpo della richiesta: {"responseId": "b539a7bf-eccc-43a9-9f6b-a1fe6ea41763", "queryResult": {"queryText": "ieri", "action": "input.getStockPrice", "Parametri": {"data ":" 2018-07-18T12: 00: 00 + 05: 30" , "company_name": "mela", "tipo_prezzo": "alto"}, "allRequiredParamsPresent": true, "fulfillmentMessages": [{ "testo" : { "testo": [ ""]}}], "intenzione": { "name": "progetti / stocktracker-9268f / agente / intenti / 7ccfc0ff-7271-4a60-83ce-868d6eea03a0", "displayName":" GetStockPrice "}," intentDetectionConfidence ": 1," languageCode ":" en "}," originalDetectIntentRequest ": {" payload ": {}}," sessione ":" I progetti / stocktracker-9268f / agente / sessioni / 4c4870db-0d23 -ecc0-823e-de2bde1716f9" }

quindi invece di "query" aggiungi "queryResult"

let action = request.body.Queryresult.action;

Sommario:

Quindi cosa abbiamo imparato in questo capitolo? Abbiamo utilizzato il nostro bot per analizzare la richiesta dell'utente e abbiamo utilizzato il modulo di evasione di dialogflow per creare una funzione cloud ospitata su firebase per estrarre i dati da un sito di terze parti tramite un'API RESTFUL e ripristinare l'utente.

Aspetta, ma abbiamo davvero pensato? Fino ad ora non abbiamo distribuito / distribuito un bot in un ambiente esterno, sia su slack che su twitter, per consentire all'utente di interagire realmente con il nostro bot.

Nel prossimo capitolo integreremo / implementeremo / distribuiremo la nostra app su un canale lento e permetteremo agli utenti di interagire con il nostro chatbot.

Riferimenti:

Corso di pluralsight di Janani Ravi

Documentazione del flusso di dialogo di Google

Questa storia è pubblicata in The Startup, la più grande pubblicazione sull'imprenditoria di Medium seguita da oltre 351.974 persone.

Iscriviti per ricevere le nostre storie migliori qui.