我正在为聊天机器人编写代码,但我的 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)
的函数。它没有按应有的方式开始。正确的语法与我使用的语法相同。正在打印“Test 2”,与函数内部的“Test 3”不同
对于那些不熟悉 Dialogflow 的人来说,agent.add()
与 JS 上的 console.log()
相同,但适用于 Dialogflow。
最佳答案
当您进行异步调用(例如数据库调用)时,您必须从 Intent Handler 返回一个 Promise,以便它知道调用何时完成,以便将结果发送回机器人。
此外,您可能希望使用 once()
函数,因为您不关心数据库更新(因为结果已经发送)。
您可能可以使用如下所示的代码来完成这两个操作:
return consultasRef.once('value')
.then( snap => {
agent.add('Test 3');
agent.add(snap.val());
});
添加超过一两个文本回复也可能会出现问题,具体取决于您使用的集成。
关于javascript - Firebase 数据库功能无法在 DialogFlow 上正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55656602/