Dialogflow es 在Dialogflow中从Firebase读取数据

Dialogflow es 在Dialogflow中从Firebase读取数据,dialogflow-es,chatbot,dialogflow-es-fulfillment,Dialogflow Es,Chatbot,Dialogflow Es Fulfillment,我正在构建聊天机器人,但从对话框流获取数据时遇到了问题 我想要一个用户输入他的名字,这个机器人查询Firebase并检查这个名字是否存在。如果是“用户存在”否则“用户n不在数据库中” [这是我目前使用的代码][1] function SaveName(agent){ const number = agent.parameters.number; // when I input the number in Fialogflow const docRef = db.collection('name

我正在构建聊天机器人,但从对话框流获取数据时遇到了问题

我想要一个用户输入他的名字,这个机器人查询Firebase并检查这个名字是否存在。如果是“用户存在”否则“用户n不在数据库中”

[这是我目前使用的代码][1]

function SaveName(agent){
const number = agent.parameters.number;  // when I input the number in Fialogflow
const docRef = db.collection('names').doc(sessionId);

return docRef.get()
  .then(doc => {
    if (!doc.exists) {
      agent.add('No data found in the database!');
      console.log(doc);
    } else {
      agent.add(doc.data().orders);
    }
    return Promise.resolve('Read complete');
  }).catch(() => {
    agent.add('Error reading entry from the Firestore database.');
    agent.add('Please add a entry to the database first by saying, "Write <your phrase> to the database"');
  });
 }
函数SaveName(代理){
const number=agent.parameters.number;//当我在Fialogflow中输入数字时
const docRef=db.collection('names').doc(sessionId);
返回docRef.get()
。然后(doc=>{
如果(!doc.存在){
add('在数据库中找不到数据!');
控制台日志(doc);
}否则{
agent.add(doc.data().订单);
}
返回承诺。解决(“阅读完成”);
}).catch(()=>{
add('从Firestore数据库读取条目时出错');
add('请先向数据库添加一个条目,说“Write to the database”');
});
}
这可以通过为您的代理执行

  • 转到意向,选择您的意向,然后向下滚动至履行部分
  • 为此,单击EnableWebhook调用(请参阅)
  • 创建webhook(您可以启用at实现-内联编辑器来执行此操作)
  • 在webhook中,查询Firestore(请参阅)
  • 请注意,任何人都可以知道数据库中是否存在用户。
    如果您正在为Google助手构建,请看一看。

    我遇到了一些类似的问题,获取的详细信息没有显示在代理交互中。这也发生在给定的模板上。然后,我从ReadFromFirestore Intent中删除了响应,并返回了预期的回迁查询。我再次尝试将响应放回原处并调用intent,响应在默认响应和firestore查询响应之间交替进行。
    尽管如此,如果不让它为我工作,我想它也会帮助其他人。

    它不工作,但是你能参考我的代码,看看我的错误函数SaveName(agent){store.collection('names').doc('value').get()。然后(doc=>{if(doc.exists){console.log(doc.data());res.send(doc.data());}else{res.send(“Nothing”);}}).catch(reason=>{console.log(reason);res.send(reason);}}}您可以使用代码示例工具而不是链接屏幕截图将您的代码包含在问题中吗?这会让你更容易得到帮助!