当前位置: 首页 > 编程语言 > C#

如何在MicrosoftBotFramework中避免“抱歉,我的机器人代码有问题”Share

时间:2023-04-10 18:36:56 C#

如何在MicrosoftBotFramework中避免“抱歉,我的机器人代码有问题”我有一个正在运行的适用于Android的Azure+BotFramework+LUIS(通过LuisDialog)。如果用户恰好连续快速发送两条消息(在机器人有机会回答之前),他们将在FacebookMessenger或网络嵌入中看到此错误消息:抱歉,我的机器人代码出了点问题。通过bot通道模拟器调试时,发现错误是这样的:"text":"Error:Responsestatuscodedidnotindicatesuccess:429(Toomanyrequests).atSystem.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(TaskTask)forSystem.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(TaskTask)Microsoft.Bot.Builder.Luis.LuisService.d__4.MoveNext()堆栈跟踪的末尾显示错误源自MessageController.cs中的这一行:awaitConversation.SendAsync(activity,()=>newLuisRootDialogEnglish());这很奇怪,因为我使用的是LUIS的付费版本,每秒最多可以进行10次调用。无论如何,我试过将整个代码被包装到一个try/catch块中,无论异常如何,都会返回此值:代码”,这基本上意味着存在未处理的异常。如何防止向用户显示此消息或捕获异常?该消息仅发送给PostUnhandledExceptionToUserTask中的用户,因为异常已从根对话框A中逃逸。您可以通过防止未处理的异常从根对话框A中逃逸来避免这种情况。一种选择是添加一个不同的根对话框B,它只调用对话框A并忽略传递给ResumeAfter回调的IAwaitable结果。Chain.DefaultIfException提供了对话框B的实现,您可以使用BotFramework的DefaultIfException函数在内部处理异常。大概是这样的:以上就是C#学习教程的全部内容:如何在MicrosoftBotFramework中避免“Sorry,thereisaproblemwithmybotcode”,如果对大家有用还需要进一步了解C#学习教程,希望大家多多关注——awaitConversation.SendAsync(activity,()=>newDialogs.RootDialog().DefaultIfException());如需转载请注明出处: