0

我在 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 而不是No answer found in KB.

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

4

1 回答 1

0

首先,关于那个教程

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

它很旧并且使用 Bot Framework SDK 的 V3。我强烈推荐在 V4 中构建任何新的机器人。请改用添加自然语言理解教程


InternalServerError表示您的机器人代码在某个地方存在问题。

您可以尝试以下一些可能导致问题的方法:

编写处理 No Answer 的代码

官方QnAMaker 示例这里执行此操作:

// 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 服务获取默认的非回答,这可能只是一个问题。

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

在此处输入图像描述

调试

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

视觉工作室/C#

  1. 在 Visual Studio 中,按 F5 或单击运行您的机器人:

在此处输入图像描述

  1. 在模拟器中打开你的机器人

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

在此处输入图像描述

  1. 在 Exception Settings 窗口中,全选“Common Language Runtime Exceptions”

在此处输入图像描述

  1. 在模拟器中,做让你的机器人崩溃的事情。出现错误时,机器人应自动停止。在这里,我强迫了一个:

在此处输入图像描述

如您所见,它说System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'这意味着我的数组response没有第一个0元素,因为没有返回任何答案。

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

VS 代码

  1. 在 VS Code 中,通过按 F5 并选择“Node.js”(适用于 Node/TypeScript 机器人)或.NET Core(适用于 C# 机器人)来运行您的机器人:

在此处输入图像描述

  1. 在模拟器中打开你的机器人

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

在此处输入图像描述

  1. 在“BREAKPOINTS”下,选中“All Exceptions”(注意:在选中此框之前运行您的机器人很重要,因为在机器人启动时会发生正常异常):

在此处输入图像描述

  1. 在模拟器中,做让你的机器人崩溃的事情。出现错误时,机器人应自动停止。在这里,我强迫了一个:

在此处输入图像描述

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

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

于 2019-06-17T18:29:07.650 回答