【发布时间】:2016-09-21 07:07:57
【问题描述】:
我有一个在 Azure + Bot Framework + LUIS 上运行的机器人(通过 LuisDialog)。
如果用户碰巧连续快速发送两条消息(在机器人有机会回答之前),他们会在 Facebook Messenger 或网络嵌入中看到此错误消息:
抱歉,我的机器人代码有问题。
通过bot通道模拟器调试时,我看到错误是这样的:
"text": "错误:响应状态码不表示成功:429 (请求太多)。在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务) Microsoft.Bot.Builder.Luis.LuisService.d__4.MoveNext()
堆栈跟踪的末尾显示错误源自我的 MessageController.cs 中的这一行:
await Conversation.SendAsync(activity, () => new LuisRootDialogEnglish());
这很奇怪,因为我使用的是付费版本的 LUIS,每秒最多允许 10 个调用。
在任何情况下,我都尝试将 MessageController.cs 中的整个代码包装到 try/catch 块中,并在不考虑异常的情况下返回此值:
return Request.CreateResponse(HttpStatusCode.OK);
不过,用户仍会看到错误消息“抱歉,我的机器人代码有问题”,这基本上意味着存在未处理的异常。
如何防止向用户显示此消息,或捕获异常?
【问题讨论】:
标签: c# botframework azure-language-understanding