在最近的测试期间,我们已经开始在我们的Bot中更多地使用QnAMaker。我注意到,有时当我们经常调用QnAMakerDialog (每分钟5-10次调用)时,一切都会终止,并将我抛回bot框架主循环。我追踪到了发生了什么,我可以看到我们称之为base(新的QnAMakerService(新的QnAMakerAttribute(.),.)但打完电话我们又回到男人圈了。没有例外,没有错误,没有任何东西。
我们可能已经达到了免费QnAMaker服务器的上限(我们已经申请了增加限制),但是即使我们达到了上限,我仍然需要捕获它并向用户发出信号,或者在错误日志中记录事实。
还有人见过这种行为吗?
//汤米
(我将在QnAMaker github中提出同样的问题)
发布于 2018-04-24 06:20:08
我可以看到我们调用base(新的QnAMakerService(新的QnAMakerAttribute(.),.)但打完电话我们又回到男人圈了。没有例外,没有错误,没有任何东西。
您说过没有例外,您的bot没有错误,要检测是否超过了费率限制,您可以尝试在bot应用程序中打开应用洞察,然后跟踪依赖调用以检查请求到QnAMaker服务的状态。
使用结果代码429:对QnAMaker服务的请求:

此外,我还使用QnAMaker bot和Microsoft.Bot.Builder v3.14.1.1和Microsoft.Bot.Builder.CognitiveServices v1.1.2进行了测试。当超过利率限制时,我发现bot会抛出错误。
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);
}
}packages.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>测试结果:

https://stackoverflow.com/questions/49649021
复制相似问题