3

我想将我的对话流聊天机器人连接到这个API。这样,每当我写“古兰经在哪里谈论真主”时,它都会转到这个 api 并向https://islam360api.herokuapp.com/Allah发出 HTTP 获取请求并返回响应。

我已经在意图中打开了“Webhook”,并将 api 链接添加为对话流实现 url。但是如何教对话流在每个对https://islam360api.herokuapp.com的 api 调用之后连接单词“Allah”或用户可能说的任何其他内容,并发出 HTTP 获取请求并返回响应?我需要使用动作吗?做什么的?或者我是否需要使用内联编辑器,而不是实现下的“Webhook”?

编辑

应用程序.js

const sqlite3 = require('sqlite3').verbose();

const express = require("express");

// Notice that the execution mode is set to verbose to produce long stack traces.

var app = express();

var ayats=[];


app.get("/:find",function(request, response)

{

    let db = new sqlite3.Database("./file.db",(err) => {

        if (err){

        console.log("Not connected to sqlite")

        }

        else{

            console.log("Connected to sqlite")

        }

    });

    // The sqlite3.Database() returns a Database object and opens the database connection automatically.

    

    let sql = `SELECT SuratNameEng, AyatNo, English FROM surah`;

 

db.all(sql, [], (err, rows) => {

  if (err) {

    throw err;

  }

  rows.forEach((row) => {

    ayats.push(JSON.stringify({Translation: row.English,SuratName: row.SuratNameEng,AyatNo: row.AyatNo}));

  });

  console.log(ayats);

  ayats.forEach(function(element) {

    if (element.toLowerCase().includes(request.params.find.toLowerCase())===true)

    {

      element=JSON.parse(element)

      response.write(JSON.stringify({speech: "In"+ element.SuratName+", Ayat Number: "+element.AyatNo+", Quran says: "+ element.Translation, displayText: "In"+ element.SuratName+", Ayat Number: "+element.AyatNo+", Quran says: "+ element.Translation}))

    }

  });

  response.send();

});



empty();

function empty() {

    ayats.length = 0;

}


db.close((err) => {

    if (err) {

      return console.error(err.message);

    }

    console.log('Close the database connection.');

  });

    

})

 

// It is a good practice to close a database connection when you are done with it. 

var port = process.env.PORT || 3000;

app.listen(port,()=>console.log("Active"));

Github 仓库:https ://github.com/ukashasohail/i360-api

4

1 回答 1

2

实际上,您需要编写自己的服务器并在 dialogflow 实现中提供链接,我建议您使用 firebase 函数作为您的服务器,因为它易于理解。

您还需要使用 sys.any 实体,因为您的用户可能会说任何内容,例如用户可能还会说“古兰经在哪里谈论 {sys.any}” 任何表示任何文本字符串,我建议您进行此培训阶段模板模式而不是示例模式中的意图。(https://dialogflow.com/docs/intents/training-phrases

https://youtu.be/XfTQ3Z_-6Sk

https://youtu.be/QqMdzrvfNBo

https://youtu.be/eLocziyi-Qw

作为参考 观看这些视频,我正在教如何使用 firebase 函数作为履行 webhook 以及如何使用数据库来存储您的客户酒店预订,而不是使用您需要发出 https 请求的数据库(理想情况下使用 npm 请求模块https:/ /www.npmjs.com/package/request

注意:给定的视频链接位于已过时的 dialogflow v1 上,但它仍然传达了基本思想,因此仍然有用注意:firebase 功能不允许您在自由模式下发出 http 请求,内联编辑器也是 firebase 功能,其他选项是结合heroku的快速服务器注意:这些视频使用json请求响应dialogflow,最终我建议您为此目的使用dialogflow实现库(https://github.com/dialogflow/dialogflow-fulfillment-nodejs )

于 2019-03-16T09:04:03.830 回答