【问题标题】:Taking user input and searching through Firebase Database接受用户输入并通过 Firebase 数据库进行搜索
【发布时间】:2018-12-28 12:23:24
【问题描述】:

我目前正在使用DialogFlowFirebase 数据库做一个项目。我主要关心的是,我一直试图弄清楚很长时间,我如何接受用户输入并在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


【解决方案1】:

您只需要设计意图来捕获用户的日期。将此日期传递给 webhook 并使用类似“select event from DB where date = userProvidedDate”的内容
您应该根据日期从数据库中获取事件,而不是 if else。你需要寻找你将如何做到这一点。

【讨论】:

    猜你喜欢
    • 2022-08-17
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    相关资源
    最近更新 更多