我可以看到我们调用了 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>
测试结果: