我们正在使用Microsoft Bot Framework进行聊天机器人。我们的消息控制器是标准的:
--cherry-mark
有时,机器人需要长篇独白。如果花费的时间太长,我们会收到502 Bad Gateway错误。
任何解决方案?
答案 0 :(得分:2)
Bot Framework在15秒后调用超时。您的机器人必须在15秒内返回成功的HTTP状态代码,以便Direct Line考虑成功发送的消息。
如果您的机器人进行了大量的离线工作或发送了多条消息,您应该将该工作移至后台线程,以便传入的请求在15秒内完成。
这是一个正确处理ASP.Net和其他托管环境中托管的负载的代码段。
if (HostingEnvironment.IsHosted)
{
HostingEnvironment.QueueBackgroundWorkItem(c => DoWorkAsync());
}
else
{
Task.Run(() => DoWorkAsync());
}
...
private async Task DoWorkAsync()
{
// do some stuff
}
Task.Run更简单,但HostingEnvironment.QueueBackgroundWorkItem阻止ASP.Net在此工作完成之前拆除您的流程。