Dialogflow es 输入无效后重新提示用户
我正在使用Dialogflow设置重置密码意图,通过webhooks执行一些验证。不幸的是,我不知道如何在验证失败的情况下重新提示用户 我曾尝试使用事件再次触发意图,但它似乎不起作用。我也尝试过设置相同的输入上下文来再次触发意图,但这两种方法似乎都不起作用 因此,我在intent中创建了两个参数,通过提示填充,然后执行验证。代码如下:Dialogflow es 输入无效后重新提示用户,dialogflow-es,Dialogflow Es,我正在使用Dialogflow设置重置密码意图,通过webhooks执行一些验证。不幸的是,我不知道如何在验证失败的情况下重新提示用户 我曾尝试使用事件再次触发意图,但它似乎不起作用。我也尝试过设置相同的输入上下文来再次触发意图,但这两种方法似乎都不起作用 因此,我在intent中创建了两个参数,通过提示填充,然后执行验证。代码如下: function getPasscode(agent) { console.log(agent.parameters); if(/^\d{6}$/.tes
function getPasscode(agent) {
console.log(agent.parameters);
if(/^\d{6}$/.test(agent.parameters.code1) && agent.parameters.code1 == agent.parameters.code2) {
// Reset passcode call
} else {
return new Promise((resolve, reject) => {
agent.add("Your codes don't match. Please try again.");
var output = JSON.stringify({"followupEvent": {"name": "GetPasscode", "data": {}}})
resolve(output);
});
}
}
bot正确输出文本,但没有按预期触发事件
我遗漏了什么吗?请记住,意图代表的是用户的行为,而不是您的行为。一般来说,你不会“触发”一个意图——用户会
因此,如果您正在“重新编程”用户,请在回复中发送该提示。然后确保设置的目的是捕获他们的回复。这可能涉及在设置输出上下文以缩小哪些意图被评估以考虑答复。
您不能既发送回响应,又用事件触发意图。从履行中发送事件几乎是不必要的,完成后,将丢弃您可能已经为响应设置的任何内容。它所做的只是触发注册事件的意图。(您的代码在这方面有两个问题-您都试图发送响应,并且您试图错误地发送后续事件。)在您的用例中,根据我的理解,您不需要调用事件。更好的方法是:
- 在询问、确认密码并存储密码的位置设置意图
- 在webhook中验证这一点
if validationPassed {
call your api to reset password
send reset password confirmation output to user
}
if validationFailed {
setup output context to ask-password intent again
send output to user to re-enter the password
}
正如@capture所说,你不会触发意图,用户会触发。一旦触发意图,我们将进行处理并发送响应。希望有帮助。我理解,但事件是用来触发意图的,有必要的参数,对吗?所以我不能调用事件本身来重新提示吗?意图不会“提示”-它们会响应。理论上,您可以触发一个事件,该事件将发送一个意图所做的回复,但这并不意味着“等待用户说些什么”。我澄清了一下我的答案。