函数和if条件之间的无限循环(Javascript、Dialogflow)

函数和if条件之间的无限循环(Javascript、Dialogflow),javascript,node.js,dialogflow-es,Javascript,Node.js,Dialogflow Es,我正在使用dialogflow制作一个天气聊天机器人,使用NodeJS和ngrok。我需要创造一种新的对话方式,比如: 用户:伦敦的天气怎么样 在我回答之前,我想知道你的名字 用户:我叫杰克 机器人:杰克,伦敦的天气很好 为此,我需要一个函数来搜索上下文中是否已经注册了名称。名称存储在上下文名称内存中 var memory = chercherContexte(req.body.queryResult.outputContexts,'memory'); 以下是函数: function ch

我正在使用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;
    }
发生的情况是webhook一直在搜索上下文,遍历if,然后重新启动。webhook将相同的操作重做三次。在dialogflow控制台中,我注意到由于这个循环,对webhook的调用被认为是失败的

我怎样才能解决这个问题


谢谢大家!

如果调用
chercherContexte(req.body.queryResult.outputContext,'memory')

在if语句中,“projects/botname/agent/sessions/id\u sessions/”+name将导致

projects/botname/agent/sessions/id\u sessions/memory

但在设置上下文时,您使用

projects/agent\u name/agent/sessions/sessions\u id/context/memory


因此,之后您将永远无法找到正确的上下文。

稍微延迟一下:问题解决了。我使用了错误的会话id。谢谢!
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);
}