对于知识库中不存在的问题,在网络聊天中出现“无法发送重试”错误

2024-01-10

我用 C# 使用 Azure 创建了一个机器人。该机器人对于我的知识库中存在的问题运行良好。但是当我尝试不同的问题时,它给出了错误couldn't send retry在该问题下方并回复该问题Sorry, my bot code is having an issue.应该会回复的No match found代替Sorry, my bot code is having an issue。 还有一个问题是,该机器人有时会针对 Kb 中不存在的某些问题给出 KB 形式的随机答案,而不是No answer found in KB.

在网络聊天频道中,它显示以下问题 -There was an error sending this message to your bot: HTTP status code InternalServerError。 任何帮助将不胜感激。


首先,关于那个教程 https://learn.microsoft.com/en-us/azure/bot-service/dotnet/bot-builder-dotnet-luis-dialogs?view=azure-bot-service-3.0:

本文使用 Bot Framework v3 SDK。如果您对此信息的 Bot Framework v4 SDK 版本感兴趣,请参阅此 Bot Framework 文章。

它很旧并且使用 Bot Framework SDK V3。我强烈、强烈建议在 V4 中构建任何新机器人。使用反而。


InternalServerError表明您的机器人代码在某处存在问题。

您可以尝试以下一些可能导致该问题的操作:

编写处理“无应答”问题的代码

官方QnAMaker 示例 https://github.com/microsoft/BotBuilder-Samples/blob/master/samples/csharp_dotnetcore/11.qnamaker这样做here https://github.com/microsoft/BotBuilder-Samples/blob/master/samples/csharp_dotnetcore/11.qnamaker/Bots/QnABot.cs#L45:

// Query QnAMaker for Answer
var response = await qnaMaker.GetAnswersAsync(turnContext);
// If we have an answer, send it to the user
if (response != null && response.Length > 0)
{
    await turnContext.SendActivityAsync(MessageFactory.Text(response[0].Answer), cancellationToken);
}
// If we don't have an answer, tell that to the user
else
{
    await turnContext.SendActivityAsync(MessageFactory.Text("No QnA Maker answers were found."), cancellationToken);
}

确保您的 QnAMaker 服务有DefaultAnswer

如果您将机器人设置为从 QnAMaker 服务获取默认的无应答,则这可能只是一个问题。

In Azure Portal > Resource Group > QnA App Service > Configuration(注意:这不是您的机器人的应用程序服务;这是特定于 QnAMaker 的),确保DefaultAnswer is set:

Debug

假设您的机器人实际上仅在找不到 QnA 答案时才出现故障,那么这两件事应该是您唯一需要排除故障的事情。否则,以下是调试机器人的方法:

视觉工作室/C#:

  1. 在 Visual Studio 中,按 F5 或单击以下命令来运行机器人:
  1. 在模拟器中打开您的机器人

  2. 在 Visual Studio 中,转到Debug > Windows > Exception Settings:

  1. 在“异常设置”窗口中,完全选中“公共语言运行时异常”
  1. 在模拟器中,做一些让你的机器人崩溃的事情。当出现错误时,机器人应该自动停止。在这里,我强行提出了一个:

正如你所看到的,它说System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'这意味着我的数组,response没有0th 元素,因为没有返回答案。

其他问题将显示其他错误。通常,您可以通过阅读错误详细信息并在网络上搜索错误代码(如果需要其他详细信息)来相当轻松地查明问题。

VS Code

  1. 在 VS Code 中,按 F5 并选择“Node.js”(对于 Node/TypeScript 机器人)来运行机器人,或者.NET Core(对于 C# 机器人):
  1. 在模拟器中打开您的机器人

  2. 在 VS Code 中,打开“调试”菜单:

  1. 在“断点”下,选中“所有异常”(注意:在选中此框之前运行您的机器人非常重要,因为有normal机器人启动时发生的异常):
  1. 在模拟器中,做一些让你的机器人崩溃的事情。当出现错误时,机器人应该自动停止。在这里,我强行提出了一个:

正如你所看到的,它说Exception has occurred: TypeError TypeError: Cannot read property 'answer' of undefined这意味着qnaResults[0]未定义或不存在,这表明未返回任何答案。

其他问题将显示其他错误。通常,您可以通过阅读错误详细信息并在网络上搜索错误代码(如果需要其他详细信息)来相当轻松地查明问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于知识库中不存在的问题,在网络聊天中出现“无法发送重试”错误 的相关文章

  • Qt - 无法让 lambda 工作[重复]

    这个问题在这里已经有答案了 我有以下功能 我想在其中修剪我的std set
  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • 为什么基类必须有一个带有 0 个参数的构造函数?

    这不会编译 namespace Constructor0Args class Base public Base int x class Derived Base class Program static void Main string a
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • 为什么 BOOST_FOREACH 不完全等同于手工编码的?

    From 增强文档 http www boost org doc libs 1 48 0 doc html foreach html foreach introduction what is literal boost foreach li
  • 如何在 VS 中键入时显示方法的完整文档?

    标题非常具有描述性 是否有任何扩展可以让我看到我正在输入的方法的完整文档 我想查看文档 因为我可以在对象浏览器中看到它 其中包含参数的描述和所有内容 而不仅仅是一些 摘要 当然可以选择查看所有覆盖 它可能是智能感知的一部分 或者我不知道它并
  • VS30063:您无权访问 https://dev.azure.com

    我正在尝试在 asp net core 2 1 mvc 应用程序中使用以下代码连接 Azure DevOps Uri orgUrl new Uri https dev azure com xxxxx String personalAcces
  • 单元测试失败,异常代码为 c0000005

    我正在尝试使用本机单元测试项目在 Visual Studios 2012 中创建单元测试 这是我的测试 TEST METHOD CalculationsRoundTests int result Calculations Round 1 0
  • 事件日志写入错误

    很简单 我想向事件日志写入一些内容 protected override void OnStop TODO Add code here to perform any tear down necessary to stop your serv
  • C# 创建数组的数组

    我正在尝试创建一个将使用重复数据的数组数组 如下所示 int list1 new int 4 1 2 3 4 int list2 new int 4 5 6 7 8 int list3 new int 4 1 3 2 1 int list4
  • “MyClass”的类型初始值设定项引发异常

    以下是我的Windows服务代码 当我调试代码时 我收到错误 异常 CSMessageUtility CSDetails 的类型初始值设定项引发异常 using System using System Collections Generic
  • 在 C 中复制两个相邻字节的最快方法是什么?

    好吧 让我们从最明显的解决方案开始 memcpy Ptr const char a b 2 调用库函数的开销相当大 编译器有时不会优化它 我不会依赖编译器优化 但即使 GCC 很聪明 如果我将程序移植到带有垃圾编译器的更奇特的平台上 我也不
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式
  • 热重载时调用方法

    我正在使用 Visual Studio 2022 和 C 制作游戏 我想知道当您热重新加载应用程序 当它正在运行时 时是否可以触发一些代码 我基本上有 2 个名为 UnloadLevel 和 LoadLevel 的方法 我想在热重载时执行它
  • Swagger 为 ASP.CORE 3 中的字典生成错误的 URL

    当从查询字符串中提取的模型将字典作为其属性之一时 Swagger 会生成不正确的 URL 如何告诉 Swagger 更改 URL 中字典的格式或手动定义输入参数模式而不自动生成 尝试使用 Swashbuckle 和 NSwag 控制器 pu

随机推荐