C#BotFramework Prompt.Confirm显示太多尝试异常

时间:2017-02-06 15:24:30

标签: c# botframework

我最近使用微软的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)
    {

    }
}

2 个答案:

答案 0 :(得分:4)

您可以通过在PromptOptions constructor中传递自己的字符串来覆盖TooManyAttempts消息,稍后会使用here来显示消息。

此外,请注意,在TooManyAttempts例外的情况下,处理它的方法是在ResumeAfter方法的try / catch中(在这种情况下,您的NextQuestionAsync}方法),围绕await而不是调用方法。

答案 1 :(得分:3)

我通过覆盖PromptOptions构造函数解决了这个问题,感谢ezequiel。我使用PromptDialog.Choice实现它,但我也可以通过确认完成它。这就是我做的事情

    List<string> questions = new List<string>();
    questions.Add("Yes"); // Added yes option to prompt
    questions.Add("No"); // Added no option to prompt
    string QuestionPrompt = "Are you sure?";
    PromptOptions<string> options = new PromptOptions<string>(QuestionPrompt, "", "", questions, 1); // Overrided the PromptOptions Constructor.
   PromptDialog.Choice<string>(context, NextQuestionAsync, options);