【发布时间】: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