是否可以在Dialogflow意图中查找数据库?

时间:2018-06-04 13:43:48

标签: dialogflow

我正在尝试使用DialogFlow制作应用,该应用在特定位置找到特定对象。

这是一个通用的例子。

用户会说"我在哪里可以找到欧洲的狗"该应用程序将回复"狗可以通过以下方式在欧洲找到:繁殖,在野外找到它或通过购买它"

将Dog视为输入1,将欧洲视为输入2

理想情况下,应用应该能够交叉引用input1和input2以找到正确的响应。我可以实现像结构这样的数据库吗?

5 个答案:

答案 0 :(得分:0)

您无法直接从Dialogflow访问数据库,但您可以构建自己的fulfillment backend,可以执行任何操作。它通过Dialogflow Webhook格式的HTTP请求/响应与Dialogflow进行通信。

答案 1 :(得分:0)

以下是从Firebase数据库中读取数据的示例履行 - https://github.com/actions-on-google/dialogflow-updates-nodejs

答案 2 :(得分:0)

您不能直接在Dialog流中访问数据库,但是可以构建自己的实现后端。我一直在使用Airtable作为数据库,并一直在使用Integromat和Webhooks来查询数据库并将结果解析回Dialogflow。作为新手程序员,我发现这是最简单的方法。

答案 3 :(得分:0)

KaySubb是正确的,您可以实现从Firebase数据库(或Firestore)读取数据的实现。

您可以在目标页面的底部执行此操作。

  1. 首先转到https://console.firebase.google.com/(使用Google帐户登录),您应该可以看到自己的Google云平台项目。

  2. 要使用firebase,您需要先安装它。首先需要npm来获取node.js。我不确定您使用的是哪种操作系统,但进入命令行或终端并键入。

    npm install firebase --save
    

    然后输入:

    firebase login
    

    这将验证您的登录名并在部署时连接您的项目。

  3. 然后使用转到您要在其中创建项目的目录:

    firebase init functions
    

选择您的项目并选择javascript,安装所有依赖项

  1. 现在转到函数并打开index.js文件。在这里,您可以更改编写js所需的代码。

  2. 编写您的函数并输入:

    firebase deploy
    
    在命令行

    中打开文件目录。完成后,它将 给你一个链接。这是dialogflow中的webhook URL(应该以 https://us-central)。如果您仅看到1个链接,其中显示 console.firebase.google.com .......然后在浏览器中打开该链接,点击 屏幕左侧的“功能”,然后从那里获取链接。

这应该使您开始使用Firebase,现在您可以将您的项目链接到Firebase实现。这里有很棒的消防说明 https://www.youtube.com/watch?v=kdk6MhhI8oc

但是我给您一个简短的解释:

  1. 在index.js文件的顶部,您将需要:

    const functions = require('firebase-functions');
    var admin = require("firebase-admin");
    admin.initializeApp(functions.config().firebase);
    var firestore = admin.firestore();
    
  2. 基本代码在这里:

    exports.webhook = functions.https.onRequest((request, response) => {
    
    switch(request.body.result.action){
    
        case 'saveData':
        let params = request.body.result.parameters
        firestore.collection('colName').doc('docName').add({
                name:params.name
                age:params.age
            }).then(() => {
               response.send({
                    speech:
                    `this is a response for "${params.name}".`
                });
            })
        .catch((e => {
    
                console.log('Error getting documents', e);
    
                response.send({
                    speech:
                        `Sorry, something has gone wrong. Try again and if the problem persists, please report it.`
    
                });
            }))
       break;
    
    default:
    
    }
    })
    

我将解释其作用:

您需要开关来决定要执行的意图。 request.body.result.action返回操作名称(在对话框流的参数上方写上该名称)。

一旦确定request.body.result.parameters,就会从意图中为您提供参数。参数。______为您提供参数。

我绝对建议您阅读官方文档:

https://firebase.google.com/docs/firestore/quickstart

帮助您理解数据结构,从而帮助您创建理想的数据库。从本质上来说,集合是一个列表,而其中的一个文档就是一个文档。您可以使用param中的条目为自己命名。

respond.send是漫游器将回复用户的内容,我还展示了如何在响应中使用参数。

.catch只会将所有错误存储在日志中,您可以在console.firebase.google.com中阅读日志。...打开项目,然后单击功能。那里将有一个读取日志的地方。您可以检查那里遇到的任何错误。

默认值:将在意图底部输出您在dialogflow上编写的任何默认响应。

希望这对您有任何帮助。我尽可能地简明扼要地经历了很多事情。如果您遇到很多麻烦,这将需要一些时间来习惯并熟练掌握,请遵循文档和youtube视频!

如果您遇到了更多麻烦,请多多帮助我可以帮助您的人。

答案 4 :(得分:0)

我在https://www.youtube.com/watch?v=Ic1HZQVCXsM

上有使用dialogflow开发具有数据库的聊天机器人的教程