【问题标题】:Firebase Database Function not working as it should on DialogFlowFirebase 数据库功能在 DialogFlow 上无法正常工作
【发布时间】:2019-09-03 12:17:58
【问题描述】:

我正在为聊天机器人编写代码,但我的 firebase DB 上的数据库查询出现问题,我不知道如何解决,因为它与我找到的其他示例相同。

    var ref = admin.database().ref();
    var consultasRef = ref.child('consultas')

    agent.add('Test 2')

    consultasRef.on("value", function(snap){
        agent.add('Test 3')
        agent.add(snap.val());
    });

正如所说的应该打印snap.(val)的函数。它没有按应有的方式开始。正确的语法与我使用的相同。正在打印“测试 2”,与函数内部的“测试 3”不同

对于不熟悉 Dialogflow 的人,agent.add() 与 JS 上的 console.log() 相同,但用于 Dialogflow。

【问题讨论】:

    标签: javascript node.js firebase-realtime-database dialogflow-es


    【解决方案1】:

    当您进行异步调用(例如数据库调用)时,您必须从 Intent Handler 返回一个 Promise,以便它知道调用何时完成,以便将结果发送回机器人。

    此外,您可能想要使用once() 函数,因为您不关心数据库更新(因为结果已经发送)。

    您可以使用如下所示的代码来完成这两项工作:

    return consultasRef.once('value')
      .then( snap => {
        agent.add('Test 3');
        agent.add(snap.val());
      });
    

    根据您使用的集成,添加超过一两个文本回复也可能会出现问题。

    【讨论】:

      猜你喜欢
      • 2022-12-14
      • 2020-05-18
      • 2020-02-15
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      相关资源
      最近更新 更多