有没有办法从 Microsoft Bot Builder 的对话中开始对话?
Is there a way to begin a dialogue from within a dialogue in Microsoft Bot Builder?
我正在尝试做的是使用 Bot Builder 实现一个问题树。这是我现在拥有的:
bot.dialog('initialDialogue', [
function (session) {
builder.Prompts.text(session, "What can I do for you?");
},
function (session, results) {
userInput = session.message.text;
switch(initialDialogueParse(userInput)) {
case "error":
session.send("I'm not sure what you're asking. I'll figure this out sometime! Try again");
session.beginDialog('initialDialogue');
case "changePassword":
session.beginDialog('changePassword');
case "deleteAccount":
session.beginDialog('deleteAccount');
case "changeEmail":
session.beginDialog('changeEmail');
}
session.endDialog();
}
])
initialDialogueParse 方法有效并且完美地完成了它的工作,问题是在那之后。例如,当我输入提示 'changePassword' 案例的响应时,我得到:
- 控制台出现 "Error: Dialogue[] not found" 错误
- 机器人说出来自 changePassword
的提示
- 机器人然后说 "Oops. Something went wrong and we need to start over."。
- 它再次循环到 initialDialogue
我想让它做的基本上是退出 initialDialogue 对话,然后切换到 changePassword 对话。然后这个循环将重复,直到提问行完成。
编辑:我的 switch 语句中没有中断。下面的答案也有效,但错误是我没有阅读文档
您可以对初始对话中的所有选项使用session.replaceDialog('your_dialog_option'),当您在他自己的对话框中完成该选项要求的所有操作时,您使用session.replaceDialog( 'initialDialogue') 返回初始对话。这样,循环将重复您想要的所有时间。
我正在尝试做的是使用 Bot Builder 实现一个问题树。这是我现在拥有的:
bot.dialog('initialDialogue', [
function (session) {
builder.Prompts.text(session, "What can I do for you?");
},
function (session, results) {
userInput = session.message.text;
switch(initialDialogueParse(userInput)) {
case "error":
session.send("I'm not sure what you're asking. I'll figure this out sometime! Try again");
session.beginDialog('initialDialogue');
case "changePassword":
session.beginDialog('changePassword');
case "deleteAccount":
session.beginDialog('deleteAccount');
case "changeEmail":
session.beginDialog('changeEmail');
}
session.endDialog();
}
])
initialDialogueParse 方法有效并且完美地完成了它的工作,问题是在那之后。例如,当我输入提示 'changePassword' 案例的响应时,我得到:
- 控制台出现 "Error: Dialogue[] not found" 错误
- 机器人说出来自 changePassword 的提示
- 机器人然后说 "Oops. Something went wrong and we need to start over."。
- 它再次循环到 initialDialogue
我想让它做的基本上是退出 initialDialogue 对话,然后切换到 changePassword 对话。然后这个循环将重复,直到提问行完成。
编辑:我的 switch 语句中没有中断。下面的答案也有效,但错误是我没有阅读文档
您可以对初始对话中的所有选项使用session.replaceDialog('your_dialog_option'),当您在他自己的对话框中完成该选项要求的所有操作时,您使用session.replaceDialog( 'initialDialogue') 返回初始对话。这样,循环将重复您想要的所有时间。