Kako napraviti chatbot s dijaloškim protokom Poglavlje 4 - Vanjski API za ispunjenje

U ovom ćemo poglavlju stvoriti "StockTracker" bot koji će pomoću RESTFUl API-ja izvući određene podatke o tikerima s vanjske web stranice. [Ne brinite ako ne razumijete žargone, rastavit ćemo ih]

Poglavlje 1: Osnovni Gyaan o chatbotovima i postavljanju okruženja za dijaloški tok

Poglavlje 2: Razumijevanje građevnih blokova Dialogflowa

Poglavlje 3: Korištenje linearnih, pratećih i nelinearnih dijaloga za izradu "TripPlanner" robota

Korištenje vanjskog API-ja za ispunjenje

Pregled modula:

  • Za dovršavanje radnji potreban je više od tekstualnog odgovora
  • Izvršite radnje pomoću web-kukica [webhooks su samo HTTP povratni pozivi koji se mogu obavijestiti korištenjem posta zahtjeva]
  • Kôd domaćina pomoću Cloud funkcije za Firebase
  • Ostale vanjske krajnje točke kao što su AWS lambdas će također raditi

Brzi prepis:

Ispunjenje

Izvršavanje koda koji će dovršiti radnju koju je korisnik zatražio radi ispunjenja namjere korisnika.

Kod nas može zahtijevati da ažuriramo bazu podataka

Jednom kada se generira kôd, generira se odgovor na tex odgovor koji je poslan korisniku..što se zauzvrat šalje agentu (bot) koji se zauzvrat šalje aplikaciji koju je korisnik koristio za interakciju s vašim agentom.

... ..

Primjer:

Dobit ćemo cijenu dionica Applea iz vanjskog izvora.

Platforma Intrinio

Alternativa za indijsko tržište mogla bi biti: https://kite.trade/startups

Registrirajte se i idite na odjeljak s brojevima. Trebali biste pronaći API pristupne ključeve

API Explorer:

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

Dokumentacija

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

Brzo će tražiti vaše korisničko ime i lozinku ... preuzmite ga sa stranice "moj račun" i dobit ćete JSON odgovor kao u nastavku.

Demo

  • Izvršenje postavljanja za praćenje dionica pomoću cloud funkcija za firebase.
  • Za pristup vanjskim API-jevima upotrebljavajte pretplatu po pretplati

Korak 1: Postavljanje novog agenta u dijaloškom toku

Korak 2: Postavljanje entiteta

3. korak: Namjera

Ispunjenje:

'koristiti strogi';
 
const funkcije = zahtijevaju ('firebase-funkcije');
// const {WebhookClient} = zahtjev ('dijalog-ispunjenje');
// const {Card, Suggestion} = tražiti ('dijalog-ispunjenje');
 
//process.env.DEBUG = 'dijalog: debug'; // omogućuje izjave za uklanjanje pogrešaka lib
 
export.dialogflowFirebaseFulfillment = funkcije.https.onRequest ((zahtjev, odgovor) => {
  // const agent = novi WebhookClient ({zahtjev, odgovor});
  var chat = "ovdje je primjer odgovora: adut je sranje";
  
  response.setHeader ( 'Sadržaj-tip', 'applicaiton / json');
  response.send (JSON.stringify ({"ispunjenjeText": chat}));
});

To će dovesti do pogreške

Poziv putem Webhooka nije uspio. Pogreška: Neuspjelo analiziranje webhooka JSON odgovor: Ne mogu pronaći polje: govor u poruci google.cloud.dialogflow.v2.WebhookResponse.

To je zato što je govor i prikazni tekst zamijenjen s "ispunjenjeText" u v2 u Dialogflowu.

>

Omogući webhook kao ispunjenje u GetStockPrice namjeri

Sada moramo biti sigurni da je određena akcija imenovana i da se ona poziva tijekom webhoka.

Radnju postavite u odjeljku djelovanja i parametara namjere:

Kodirati:

Izlaz:

Nekoliko pogrešaka na koje naiđete:

  1. Nadogradite na Blaze Pay kako idete
pogreška:
Račun za naplatu nije konfiguriran. Vanjska mreža nije dostupna, a kvote su strogo ograničene. Konfigurirajte račun za naplatu da biste uklonili ta ograničenja

2. Ne može se pročitati radnja sa svojstvom

Prvotno je napisao

neka akcija = request.body.result.action;

i dobila ovu pogrešku:

TypeError: Ne može pročitati svojstvo 'akcija' nedefiniranog
    at export.dialogflowFirebaseFulfillment.functions.https.onRequest (/user_code/index.js:9:37)
    at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:26:47)
    na /var/tmp/worker/worker.js:684:7
    na /var/tmp/worker/worker.js:668:9
    na _combinedTickCallback (interni / proces / next_tick.js: 73: 7)
    at process._tickDomainCallback (interni / proces / next_tick.js: 128: 9)

ali ispis zaglavlja i tijela zahtjeva pokazao je da je dijalog flow v2 malo promijenio stvari.

Tijelo zahtjeva: {"responseId": "b539a7bf-eccc-43a9-9f6b-a1fe6ea41763", "queryResult": {"queryText": "jučer", "akcija": "input.getStockPrice", "parametri": {"datum ":" 2018-07-18T12: 00: 00 + 05: 30" , "Naziv tvrtke": "jabuka", "price_type": "visoke"}, "allRequiredParamsPresent": istina, "fulfillmentMessages": [{ "tekst" : { "text": [ ""]}}] "namjera": { "": "ime projekti / stocktracker-9268f / sredstva / namjere / 7ccfc0ff-7271-4a60-83ce-868d6eea03a0", "DISPLAYNAME"” GetStockPrice "}" intentDetectionConfidence ": 1," languageCode ":" en "}" originalDetectIntentRequest ": {" teret ": {}}" sesije ":" projekti / stocktracker-9268f / sredstvo / sesije / 4c4870db-0d23 -ecc0-823e-de2bde1716f9" }

pa umjesto "upita" dodajte "upit".

neka akcija = request.body.Queryresult.action;

Sažetak:

Pa što smo naučili u ovom poglavlju? Pomoću našeg bota razišli smo zahtjev korisnika i pomoću modula za ispunjenje dijaloškog toka stvorili smo funkciju oblaka koja se nalazi na vatrogasnoj bazi kako bismo izvadili podatke s web stranice treće strane putem RESTFUL API-ja i vratili se korisniku.

Čekaj, ali jesmo li stvarno? Do sad nismo distribuirali / rasporedili bot u vanjskom okruženju bilo da je u slacku ili twitteru kako bi korisnik stvarno mogao komunicirati s našim robotom.

U sljedećem ćemo poglavlju integrirati / rasporediti / distribuirati našu aplikaciju na labavi kanal i omogućiti korisnicima da komuniciraju s našim chatbotom.

Reference:

Tečaj pluralnosti Janani Ravi

Googleova dokumentacija za dijaloški tijek

Ova priča objavljena je u najvećoj poduzetničkoj publikaciji The Startup, koju prati 351,974 i više ljudi.

Pretplatite se za primanje naših najboljih priča ovdje.