我目前正在玩 Bots 和 LUIS。所以我有一个正在运行的机器人。在我的 RootDialog 中,我处理从 LUIS 获得的所有意图。现在我想检查一个实体是否缺少意图。
if (result.Entities.Count == 0) {
var ct = new CancellationToken();
await context.Forward(new ParameterDialog(), ResumeAfterParameterDialog, message, ct);
如果没有实体,我将创建一个新的子对话框。
public class ParameterDialog : IDialog<object> {
public async Task StartAsync(IDialogContext context) {
context.Wait(MessageReceivedAsync);
}
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument) {
argument = new PromptDialog.PromptString("Please enter a parameter", "please try again", 2);
var prompt = await argument;
await context.PostAsync($"Your Parameter is: {prompt}");
context.Done(prompt);
}
}
如果我可以获得用户输入,我会将其传递回我的父对话框。
现在我真的不知道如何停止 Bot 并让它等待用户输入。有人可以解释我如何做到这一点吗?谢谢!