我目前正在使用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);
}
}
答案 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
}
}
}