Firebase数据库功能无法在DialogFlow上正常运行

时间:2019-04-12 17:09:16

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

我正在为聊天机器人编写代码,而我的Firebase DB上的数据库查询存在问题,我不知道如何解决,因为它与我发现的其他示例相同。 / p>

{
   {
       "id":"abc",
       "studentName": "bob",
       "classId":"en" 
   },
   {
       "id":"bcd",
       "studentName": "billy",
       "classId":"sp"},
   {
       "id":"sdf",
       "studentName": "bart",
       "classId":"en"
   }
}

如前所述,应该打印 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()); }); 的函数。它没有开始应有的状态。正确的语法与我使用的语法相同。正在打印“测试2”,与功能内部的“测试3”不同

对于不熟悉Dialogflow的用户,snap.(val)与JS上的agent.add()相同,但对于Dialogflow。

1 个答案:

答案 0 :(得分:1)

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

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

您可能可以使用看起来像这样的代码来完成这两个操作:

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

根据您使用的集成情况,添加多个一两个文本答复也可能会出现问题。