C#BotFramework Prompt.Confirm显示太多尝试exception
我最近使用微软的botframework开发了一个聊天机器人。 我正在使用prompt.confirm来获取用户的是/否输入,但是当我写出基本的是/否时它会显示太多的尝试exception。 我不希望我的机器人显示太多尝试exception,而我想在内部处理它。 这是我的代码。
[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 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构造函数中传递自己的字符串来覆盖TooManyAttempts
消息,稍后将使用该构造函数来显示消息。
另外,请记住,在TooManyAttempts
exception的情况下,处理它的方法是在ResumeAfter
方法的try / catch中(在本例中是你的NextQuestionAsync
方法),围绕await
而不是在调用方法中。
我通过覆盖PromptOptions构造函数解决了这个问题,感谢ezequiel。 我使用PromptDialog.Choice实现它,但我也可以通过确认完成它。 这就是我做的
List questions = new List (); questions.Add("Yes"); // Added yes option to prompt questions.Add("No"); // Added no option to prompt string QuestionPrompt = "Are you sure?"; PromptOptions options = new PromptOptions (QuestionPrompt, "", "", questions, 1); // Overrided the PromptOptions Constructor. PromptDialog.Choice (context, NextQuestionAsync, options);