Dialoq axını ilə bir chatbot necə yaradılır | Fəsil 4 - İcra üçün Xarici API

Bu fəsildə xarici veb saytdan müəyyən ticker məlumatlarını almaq üçün RESTFUl API-lərindən istifadə edən "StockTracker" botu yaradırıq. [Əgər həll edəcəyimiz jarqonları başa düşməsəniz, narahat olmayın.]

Fəsil 1: Chatbot haqqında Gyaan-ı başa düşmək və Dialoq Axını mühitini qurmaq

Fəsil 2: Dialoq axınının bloklarını anlamaq

Fəsil 3: TripPlanner Bot yaratmaq üçün xətti, arxada və qeyri-xətti dialoqlardan istifadə

İcra üçün xarici API istifadə edin

Modulun icmalı:

  • Əməliyyatları tamamlamaq mətn cavabından daha çox tələb edir
  • Veb baxışları ilə əməliyyatlar həyata keçirin [webhooks yalnız poçt sorğusu ilə bildirilə bilən HTTP geri çağırışlardır]
  • Firebase üçün bulud funksiyaları olan ana kod
  • AWS Lambdas kimi digər xarici son nöqtələr də işləyir

Qisa xülasə:

İcra

İstifadəçinin niyyətini təmin etmək üçün istifadəçinin tələb etdiyi əməliyyatı yerinə yetirən kodun icrası.

Kod üçün verilənlər bazasını yeniləməyimiz lazım ola bilər

Kod yaradıldıqdan sonra istifadəçiyə göndərilən Tex cavabına cavab yaranır. Bu da öz növbəsində agentə (bot) göndərilir, bu da istifadəçinin agentinizlə əlaqə qurduğu tətbiqə göndərilir.

... ..

Misal:

Xarici bir mənbədən Apple'ın pay qiymətini alacağıq.

İntrinio platforması

Hindistan bazarı üçün alternativ ola bilər: https://kite.trade/startups

Giriş edin və hesabınıza keçin. API giriş açarlarınızı burada tapmalısınız

API tədqiqatçısı:

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

sənədlər

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

İmtahan:

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

Bir sorğu istifadəçi adınızı və şifrənizi tələb edəcəkdir. Hesabım səhifəsinə keçin və belə bir JSON cavabı alın.

demo

  • Firebase üçün bulud funksiyaları ilə birja izləyicisi üçün icrası qurun.
  • Xarici API-lərə daxil olmaq üçün səviyyəyə çatdıqda Blaze pay istifadə edin

Addım 1: Axın dialoqunda yeni bir agent qurun

Addım 2: müəssisələr qurun

Addım 3: niyyət

İcra:

'ciddi istifadə edin'; const funksiyaları = tələb ('firebase-functions'); // const {WebhookClient} = tələb ('informasiya axını-yerinə yetirilməsi'); // const {Card, Suggestion} = tələb ('informasiya axınının yerinə yetirilməsi'); //process.env.DEBUG = 'informasiya axını: debug'; // lib ayıklama hesabatlarının ixracına imkan verir. trump sucks "; response.setHeader ('Content-Type', 'application / json'); response.send (JSON.stringify ({" icra mətni ": chat}));});

Bu bir səhv səbəb olacaq

Webhook zəngi alınmadı. Xəta: webhook JSON cavabını təhlil etmək olmur: Sahə: google.cloud.dialogflow.v2.WebhookResponse mesajındakı dil tapılmadı.

Bunun səbəbi, Dialogflow-un 2-ci versiyasında dil və ekran mətninin "yerinə yetirmə mətni" ilə əvəz olunmasıdır.

>

GetStockPrice niyyəti daxilində webhooku yerinə yetirmə kimi aktivləşdirin

İndi webhook zamanı çağırılacaq xüsusi bir əməliyyatı adlandırdığımızdan əmin olmalıyıq.

Niyyəti Əməliyyat və Parametrlər hissəsində əməliyyatı təyin edin:

Kod:

Çıxış:

Qarşılaşa biləcəyiniz bəzi səhvlər:

  1. Blaze Pay-ə yüksəldin
Xəta: Faturalandırma hesabı konfiqurasiya edilmədi. Xarici şəbəkəyə giriş olmur və kvotalar ciddi dərəcədə məhduddur. Bu məhdudiyyətləri aradan qaldırmaq üçün faturalandırma hesabını konfiqurasiya edin

2. Mülkiyyət əməliyyatı oxunmur

Əvvəlcə yazdı

fəaliyyətə icazə verin = istək.bədəni. nəticə; hərəkət;

və bu səhv var:

TypeError: tanımlanmamış 'fəaliyyət' xassəsi 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) altında /var/tmp/worker/worker.js:684:7 altında /var/tmp/worker/worker.js:668:9 altında _combinedTickCallback (internal / process / next_tick.js: 73: 7) at process._tickDomainCallback (internal / process / next_tick.js: 128: 9)

Ancaq başlığı və istəklərin sayını yazdırmaq Dialogflow v2-nin işləri bir az dəyişdirdiyini göstərdi.

Sorğu mətni: {"responseId": "b539a7bf-eccc-43a9-9f6b-a1fe6ea41763", "queryResult": {"queryText": "dünən", "Action": "input.getStockPrice", "Parametr": {"Date" : "2018-07-18T12: 00: 00 + 05: 30", "Şirkət Adı": "Alma", "Qiymət Növü": "Yüksək"}, "AllRequiredParamsPresent": Doğru, "FulfillmentMessages": [{"Mətn": {"text": [""]}], "purpose": {"name": "projects / stocktracker-9268f / agent / intents / 7ccfc0ff-7271-4a60-83ce-868d6eea03a0", "displayName": "GetStockPrice" }, "purposeDetectionConfidence": 1, "languageCode": "en"}, "originalDetectIntentRequest": {"payload": {}}, "session": "projects / stocktracker-9268f / agent / session / 4c4870db-0d23 -ecc0 -823e-de2bde1716f9 "}

buna görə "sorğu" yerinə "queryResult" əlavə edin

fəaliyyətə icazə verin = istək.body.Queryresult.action;

Xülasə:

Bu fəsildə nə öyrəndik? İstifadəçi tələbini təhlil etmək üçün botumuzu istifadə etdik və RESTFUL API vasitəsilə üçüncü bir veb saytdan məlumat götürən və Firebase-də yerləşdirilən bir bulud funksiyası yaratmaq üçün dialoqun yerinə yetirilməsi modulundan istifadə etdik. qaytarıla bilər.

Gözləyin, amma həqiqətən bunu etdik? İndiyə qədər Slack və ya Twitter-də xarici bir mühitdə bot paylamadıq / yerləşdirmədik, belə ki istifadəçi həqiqətən botumuzla qarşılıqlı əlaqə qura bilsin.

Növbəti fəsildə tətbiqimizi Slack kanalına inteqrasiya edəcəyik / yerləşdirəcəyik / paylayacağıq və istifadəçilərin chatbotumuzla qarşılıqlı əlaqədə olmasını təmin edəcəyik.

İstinadlar:

Janani Ravi tərəfindən pluralsight kursu

Google-un informasiya axını sənədləri

Bu hekayə, Mediumun ən böyük sahibkarlıq nəşri olan The Startup-da yer aldı və ardından 351.974-dən çox insan izlədi.

Ən yaxşı hekayələrimizə burada abunə olun.