C#BotFramework PromptDialog.Choice()尝试处理程序过多

时间:2019-05-21 02:29:41

标签: c# botframework

我目前正在使用ChatBot,因此基本上我想要一种在用户达到最大尝试次数时处理“太多尝试”消息的方法。基于PromptDialog.Choice() link here的此文档。该消息可以更改,但是没有参数或任何内容可以处理该方法的下一次出现。

我已经尝试研究我研究过的scorable-bot,但是在我的范围内,我无法更改ChatBot的流程,因此在开发ChatBot时我会陷入瀑布式方法。

任何建议都会很好。谢谢。

这也是我正在处理的代码片段:

[Serializable]
public class CustomPromptDialog : IDialog<string>
{
    public async Task StartAsync(IDialogContext context)
    {
        List<string> choices = new List<string>();
        choices.Add("Choice 1");
        choices.Add("Choice 2");
        PromptDialog.Choice(context, ResumeAfter, choices, "Title", "Wrong!", 5);

    }
    public async Task ResumeAfter(IDialogContext context, IAwaitable<string> result)
    {
            var choice = await result;
            //A Too Many Attempts handler here

            //Returns the choice to the caller
            context.Done(choice);
    }
}

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,但我不知道这是否符合道德标准。 因此,当出现“太多尝试”消息时,它会向ResumtAfter抛出异常。所以我只需要处理异常。就是这样,但是对于那些对我的问题有更好解决方案的人,请分享。

[Serializable]
public class CustomPromptDialog : IDialog<string>
{
    public async Task StartAsync(IDialogContext context)
    {
        List<string> choices = new List<string>();
        choices.Add("Choice 1");
        choices.Add("Choice 2");
        PromptDialog.Choice(context, ResumeAfter, choices, "Title", "Wrong!", 5);

    }
    public async Task ResumeAfter(IDialogContext context, IAwaitable<string> result)
    {
            try{ 
                 var choice = await result;
                context.Done(choice);
            }catch(Exception e){
                // Code here after "Too Many Attempts" message
            }

    }
}