我该如何在漫游器上处理长时间运行的任务,以便客户端不要在15秒后重试发送消息。
我有一个带有botframework v3的机器人,并将客户端与直线连接
答案 0 :(得分:2)
直接线路通道连接器本身不会重试发送消息。如果在向您的漫游器发送消息后的15秒钟内未收到确认,则会抛出网关超时。
如果您使用的是 DirectLineClient ,则可以覆盖重试策略,以确保客户端不重试消息:
DirectLineClientCredentials creds = new DirectLineClientCredentials(directLineSecret);
DirectLineClient directLineClient = new DirectLineClient(new Uri("https://directline.botframework.com"), creds);
directLineClient.SetRetryPolicy(new Microsoft.Rest.TransientFaultHandling.RetryPolicy(new Microsoft.Rest.TransientFaultHandling.HttpStatusCodeErrorDetectionStrategy(), 0));
如果您的进程运行时间较长(超过15秒),请考虑将该消息排队在某个地方,以便您可以立即确认该呼叫,然后在后台线程上处理该消息。这在概念上称为主动消息传递。可以在这里找到更多信息:https://docs.microsoft.com/en-us/azure/bot-service/dotnet/bot-builder-dotnet-proactive-messages?view=azure-bot-service-3.0