【发布时间】:2018-12-28 12:23:24
【问题描述】:
我目前正在使用DialogFlow 和Firebase 数据库做一个项目。我主要关心的是,我一直试图弄清楚很长时间,我如何接受用户输入并在Firebase 数据库中搜索它?
正如您在代码中看到的那样,我现在有 if else 语句可以帮助我将其过滤掉,但是随着越来越多的事件被存储在数据库中,我发现 if else 语句将不高效且不可行。所以,请告诉我如何最好地接受用户的输入并根据他们的请求搜索数据库。例如,他们可能会问“8 月 15 日有什么活动?”,然后该功能应在数据库中搜索 8 月 15 日,并告知他们当天的任何活动。希望尽快收到您的来信!
function askDate(agent) {
const date1 = agent.parameters.date;
return admin.database().ref('date').transaction((date)=>
{
let askdate = date.askDate;
let activity = date.activity;
let askdate1 = date.twelfthAugust.askDate;
let activity1 = date.twelfthAugust.activity;
let askdate2 = date.fourthAugust.askDate;
let activity2 = date.fourthAugust.activity;
let askdate3 = date.ninthAugust.askDate;
let activity3 = date.ninthAugust.activity;
if (date1 == askdate)
{
agent.add("We have " + activity);
}
else if (date1 == askdate1)
{
agent.add("We have " + activity1);
}
else if (date1 == askdate2)
{
agent.add("We have " + activity2);
}
else if (date1 == askdate3)
{
agent.add("We have " + activity3);
}
else
{
agent.add("We do not have any events on this day!");
}
return date;
},
function (error, isSuccess) {
console.log('Success: ' + isSuccess);
});
}
【问题讨论】:
-
请分享用例。
-
@AbhinavTyagi 您好,基本上,用户可以向 google home 询问一些事情,例如活动和课程。例如,在这种情况下,用户希望询问 Google Home 是否有 2018 年 8 月 5 日的活动。然后,对话流将引用数据库,搜索用户指定的日期,并通知他们该日期是否有事件。我担心的是,如果我继续使用 if else 语句,它的效率不会很高,因为会添加更多事件。因此,有没有办法简化 if-else 语句?
标签: node.js firebase firebase-realtime-database dialogflow-es google-home