我正在为聊天机器人编写代码,而我的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。
答案 0 :(得分:1)
进行异步调用(例如数据库调用)时,您必须从Intent Handler返回Promise,以便它知道调用何时完成,以便将结果发送回给机器人。
另外,您可能想使用once()
函数,因为您不关心数据库更新(因为结果已经发送了)。
您可能可以使用看起来像这样的代码来完成这两个操作:
return consultasRef.once('value')
.then( snap => {
agent.add('Test 3');
agent.add(snap.val());
});
根据您使用的集成情况,添加多个一两个文本答复也可能会出现问题。