Monot与Bot框架

时间:2017-01-25 19:03:25

标签: botframework direct-line-botframework

我们正在使用Microsoft Bot Framework进行聊天机器人。我们的消息控制器是标准的:

--cherry-mark

有时,机器人需要长篇独白。如果花费的时间太长,我们会收到502 Bad Gateway错误。

任何解决方案?

1 个答案:

答案 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在此工作完成之前拆除您的流程。