0

在最近的测试期间,我们已经开始在我们的 Bot 中更多地使用 QnAMaker。我注意到,有时当我们多次调用 QnAMakerDialog(每分钟 5 到 10 次调用)时,一切都会终止并让我回到 bot 框架主循环。我已经追踪到发生了什么,我可以看到我们调用了 base(new QnAMakerService(new QnAMakerAttribute(..),...) 但是在调用之后我们又回到了 man 循环中。没有例外,没有错误没什么。

我们可能已经达到免费 QnAMaker 服务器的上限(我们已申请增加限制),但即使达到了,我仍然需要捕获它并向用户发出信号或在错误日志中记录这一事实。

其他人看到这种行为吗?

//汤米

(我会在 QnAMaker github 中提出同样的问题)

4

1 回答 1

0

我可以看到我们调用了 base(new QnAMakerService(new QnAMakerAttribute(..),...) 但是在调用之后我们又回到了 man 循环中。没有例外,没有错误,没有什么。

您说没有异常,您的机器人没有错误,要检测是否超过速率限制,您可以尝试使用您的机器人应用程序打开Application Insights,然后您可以跟踪依赖项调用以检查对 QnAMaker 服务的请求的状态。

使用结果代码 429 向 QnAMaker 服务请求:

在此处输入图像描述

此外,我使用 QnAMaker botMicrosoft.Bot.Builder v3.14.1.1和进行了测试Microsoft.Bot.Builder.CognitiveServices v1.1.2。我发现当超过速率限制时,机器人会抛出错误。

QnaDialog:

[Serializable]
public class QnaDialog : QnAMakerDialog
{
    public QnaDialog() : base(new QnAMakerService(new QnAMakerAttribute("xxxxx", "xxxxx", "Sorry, I couldn't find an answer for that", 0.5)))
    {
    }

    protected override async Task RespondFromQnAMakerResultAsync(IDialogContext context, IMessageActivity message, QnAMakerResults result)
    {
        await context.PostAsync($"I found {result.Answers.Count} answer(s) that might help...{result.Answers.First().Answer}.");
        context.Done(true);
    }
}

包.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Autofac" version="3.5.2" targetFramework="net46" />
  <package id="Chronic.Signed" version="0.3.2" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.Bot.Builder" version="3.14.1.1" targetFramework="net46" />
  <package id="Microsoft.Bot.Builder.CognitiveServices" version="1.1.2" targetFramework="net46" />
  <package id="Microsoft.Bot.Connector" version="3.14.1.1" targetFramework="net46" />
  <package id="Microsoft.IdentityModel.Logging" version="1.1.4" targetFramework="net46" />
  <package id="Microsoft.IdentityModel.Protocol.Extensions" version="1.0.4.403061554" targetFramework="net46" />
  <package id="Microsoft.IdentityModel.Protocols" version="2.1.4" targetFramework="net46" />
  <package id="Microsoft.IdentityModel.Protocols.OpenIdConnect" version="2.1.4" targetFramework="net46" />
  <package id="Microsoft.IdentityModel.Tokens" version="5.1.4" targetFramework="net46" />
  <package id="Microsoft.Rest.ClientRuntime" version="2.3.2" targetFramework="net46" />
  <package id="Microsoft.WindowsAzure.ConfigurationManager" version="3.1.0" targetFramework="net46" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net46" />
  <package id="System.IdentityModel.Tokens.Jwt" version="5.1.4" targetFramework="net46" />
</packages>

测试结果:

在此处输入图像描述

于 2018-04-24T06:20:08.243 回答