MS Teams 聊天机器人 - 无法访问应用程序。请再试一次

问题描述 投票:0回答:2

我正在聊天机器人中的特定输入表单用户上调用 MS Teams Bot 中的第三方 REST API。 有时,第三方 REST API 响应时间比平常慢。在这种情况下。 MS Teams 使用红色警告图标向用户显示以下消息 - “无法访问应用程序。请重试。” 然而,在出现红色警告的几秒钟内,Teams 就会在聊天窗口中成功显示 API 返回的正确数据。

如何在 Teams 聊天机器人中优雅地处理因调用外部 REST API 导致的延迟而导致的此类情况(“红色警告”)。我必须修改 Microsoft Teams 应用程序中的任何超时值才能消除此类警告吗?

谢谢!

bots warnings delay microsoft-teams rest
2个回答
3
投票

可能会发生 10 或 15 秒的超时,如果确实如此,我认为这会导致您所看到的情况。如需了解更多信息,请访问 https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-howto-long-operations-guidance?view=azure-bot-service-4.0,其中指出:

如果机器人未在 10 到 15 秒内完成操作(具体取决于通道),Azure 机器人服务将超时并向客户端报告 504:GatewayTimeout,如机器人如何工作中所述。

简而言之,一个简单的方法可能是:

  1. 让您的机器人立即回复消息
  2. 将长时间运行的操作放入队列中的某处(例如 Azure),并使用后台处理器来处理它(例如 Azure Function)
  3. 操作完成后,让后台处理器发送主动消息

本文中的示例提供了一些指导,例如使用另一种对话框等方法来处理此类长时间运行的操作。

更新: 这实际上可能会提供一些有用的对话背景,因此请了解主动消息传递如何适应:https://hilton.giesenow.com/how-bot-calls-actually-work

更新 2:这是一个相对较新的主动消息传递示例,希望它有用:https://github.com/pnp/teams-dev-samples/tree/master/samples/bot-proactive-messaging


0
投票

看来这个问题可以通过调整Token Exchange URL来解决。具体来说,您应该使用在步骤 1.3 中获取的应用程序 ID URL,如 Microsoft Teams 示例机器人对话 SSO 快速入门设置指南中所述。虽然互联网上的许多示例和文档建议将此字段留空,但我发现填写令牌交换 URL 字段可以有效解决 Python 中的“无法访问应用程序。请重试”错误。

© www.soinside.com 2019 - 2024. All rights reserved.