我最近使用 Microsoft 的 botframework 开发了一个聊天机器人。我正在使用 prompt.confirm 接受用户的是/否输入,但是当我写基本的是/否时它显示太多尝试异常。我不希望我的机器人显示太多尝试异常,而是我想在内部处理它。这是我的代码。
[LuisIntent("None")]
public async Task NoneIntent(IDialogContext context, LuisResult result)
{
try
{
PromptDialog.Confirm(context, NextQuestionAsync, QuestionPrompt, attempts: 1, promptStyle: PromptStyle.Auto);
}
catch (Exception ex)
{
await context.PostAsync("Something really bad happened.");
}
}
public async Task NextQuestionAsync(IDialogContext context, IAwaitable<bool> result)
{
try
{
if (await result)
{
await context.PostAsync($"Ok, alarm 0 disabled.");
//context.Wait(NoneIntent);
}
else
{
await context.PostAsync("You Said No");
}
}
catch (Exception e)
{
}
}
最佳答案
您可以通过在 PromptOptions constructor 中传递您自己的字符串来覆盖 TooManyAttempts
消息, 稍后使用 here显示消息。
此外,请记住,在 TooManyAttempts
异常的情况下,处理它的方法是在 ResumeAfter
方法的 try/catch 中(在本例中您的 NextQuestionAsync
方法)围绕着 await
而不是在调用方方法中。
关于C# BotFramework Prompt.Confirm 显示太多尝试异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42071335/