【发布时间】:2018-10-19 13:43:40
【问题描述】:
我正在使用多个对话框。有些使用 formbuilder,有些使用 ResultAfter 方法来自定义提示值。我想要一种方法来检查退出词(如停止、退出等)的传入消息。
我认为 StartAsync 函数将是一个好的开始。看到所有对话框都是从我的 RootDialog 转发的,我已经在 RootDialog 中实现了这个:
public override async Task StartAsync(IDialogContext context)
{
string[] stopStrings = { "quit", "cancel", "exit" };
var msg = context.Activity.AsMessageActivity().Text;
if (stopStrings.Any(msg.Contains))
{
await context.PostAsync("You cancelled.");
context.Done(true);
}
else
{
context.Wait(this.MessageReceived);
}
}
当我要求机器人“停止”时,它成功地告诉我我取消了。但是在我发送的下一条消息中,我收到了这个错误:
Exception thrown: 'System.Collections.Generic.KeyNotFoundException'
在我的 MessageController 中的这一行:
await Conversation.SendAsync(activity, () => new RootDialog());
现在我不确定没有找到什么密钥,以及为什么它会向我发送这个。感谢您的帮助!
【问题讨论】:
标签: frameworks bots azure-language-understanding mbf