【问题标题】:Infinite loop between a function and if condition (Javascript, Dialogflow)函数和 if 条件之间的无限循环(Javascript,Dialogflow)
【发布时间】:2018-06-18 10:37:08
【问题描述】:

我正在使用 dialogflow 制作天气聊天机器人,使用 NodeJS 和 ngrok。我需要创建一种新的对话,像这样:

  • 用户:伦敦的天气怎么样?
  • 机器人:在我回答之前,我想知道你的名字
  • 用户:我叫杰克
  • 机器人:杰克,伦敦的天气等等……

为此,我需要一个函数来搜索名称是否已在上下文中注册。名称存储在上下文名称内存中

var memory = chercherContexte(req.body.queryResult.outputContexts,'memory');

这里是函数:

function chercherContexte(outputContexts, nom) {


    for (var i=0; i<outputContexts.length; i++) {
          console.log(outputContexts[i])
          if (outputContexts[i].name === "projects/botname/agent/sessions/id_sessions/"+nom ) {
          console.log("Context is found");
          return outputContexts[i]
          }
      }
     return undefined;
    }

然后,我需要检查名称是否已定义(或未定义)。如果找不到名称,我需要设置新的上下文和事件。

var first_name = '';
if ((memory !== undefined) && (memory.parameters['first_name']!==undefined)) 
   first_name=memory.parameters['first_name'];

if (first_name === '' ) {
    out = construireReponse("");
    out.outputContexts = [{name:'projects/botname/agent/sessions/id_sessions/memory', lifespanCount:5, parameters:{intention:'question', intention_action:'openWeatherMap',parameters_Action:req.body.queryResult.parameters}}];
    out.followupEventInput = {name:'askName'}
    console.log("Done");
    res.json(out);
}

发生的情况是 webhook 不断搜索上下文,执行 if,然后重新启动。 webhook 重做同样的操作 3 次。在 dialogflow 控制台中,我注意到由于此循环,对 webhook 的调用被视为失败。

我该如何解决这个问题?

谢谢!

【问题讨论】:

    标签: javascript node.js dialogflow-es


    【解决方案1】:

    如果您拨打chercherContexte(req.body.queryResult.outputContexts,'memory')

    在你的 if 语句中 "projects/botname/agent/sessions/id_sessions/" + name 会导致

    projects/botname/agent/sessions/id_sessions/memory

    但是在设置上下文时,你使用

    projects/agent_name/agent/sessions/sessions_id/contexts/memory

    所以之后你将永远找不到正确的上下文。

    【讨论】:

    • 稍等片刻:问题解决了。我使用了错误的会话 ID。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 2013-03-11
    • 2017-10-13
    • 2020-09-02
    • 2020-06-25
    • 1970-01-01
    相关资源
    最近更新 更多