如何从 Node.js 验证对话流的参数



我有一个节点.js后端连接到dialogflow来制作聊天机器人,我可以发送答案,读取用户的输入。有时我需要验证一些参数作为 ID 卡号。好吧,我可以检索一条消息给用户,指出 ID 号不正确,但我需要保持在同一对话流上下文中,而不是转到下一个上下文以便能够将新值保留在同一参数中。有谁知道该怎么做? 这对于在发送快速响应时添加上一个按钮以返回到上一个问题也很有用。

我把我的代码留给你,在那里我读取一个上下文参数并验证它:

case "ingresar-telefono":
let filteredContexts = contexts.filter(function (el)
{
return el.name.includes('recibirinfo')
});
if (filteredContexts.length > 0 && contexts[0].parameters) {
numerotelefonico = (isDefined(contexts[0].parameters.fields['Telefono.original']) && contexts[0].parameters.fields['Telefono.original'] !== '') ? contexts[0].parameters.fields['Telefono.original'].stringValue: '';
console.log("Numero telefonico: "+numerotelefonico);
if (isNaN(numerotelefonico)){
console.log("Entro is not a number.");
sendTextMessage(sender, "¡Parece que tu numero de telefono tiene caracteres no permitidos!");
sendTextMessage(sender, "¡Vuelvelo a ingresar!");
}
else if(!numerotelefonico.startsWith("9")){
console.log("Entro no empieza en 9.");
sendTextMessage(sender, "¡Vuelvelo a ingresar!");
}
else{
handleMessages(messages, sender);
}
}
break;

谢谢

乔纳森·普列托

我建议您通过从对话流UI中的意图中删除输出上下文来处理此问题。检测到提供的 ID 号正确后,可以将输出上下文设置为已删除的上下文。如果提供的 ID 号不正确,请将输出上下文设置为该意图的输入上下文,并回复"请提供有效的 ID"。这将确保再次提示用户提供有效的 ID。

然后,您可以使用相同的输入上下文创建另一个意图"忘记ID",并带有一些训练短语"我不知道","我没有,...然后,您向用户解释如何获取有效 ID 或忘记 ID 后该怎么做。

上下文可以像这样设置:

agent.context.set({
'name':'context-name',
'lifespan': 5,
'parameters':{
'parameter-name':'parameter-value'
}
});

希望这是有道理的!

最新更新