【问题标题】:Message extension response time消息扩展响应时间
【发布时间】:2020-01-14 02:47:37
【问题描述】:

在一些 RND 和我的代码实验中,我发现如果我的消息扩展响应没有在 15 秒内出现,那么我的消息扩展结果框中会出现错误。 我使用 SharePoint Online 作为后端,它查询 2000 多个项目以形成我的消息扩展结果窗口的自适应卡片。我使用 caml 查询根据消息中输入的关键字过滤来自 SharePoint-online 列表的结果扩展搜索框,然后将数据绑定到自适应卡片。 那么有没有什么方法可以加快进程并在 15 秒内获得响应,或者我可以在 bot 框架中将阈值提高 15 秒以上 我正在使用 C# 使用 bot 框架 v3

【问题讨论】:

  • 在控制台的网络选项卡中,它给出的错误是“调用代理操作失败,状态码:BadGateway”
  • 如果 SharePoint 列表没有持续更新,请检查您是否在应用程序级别缓存数据。您可能需要在特定时间段后使新记录失效并获取新记录。
  • @wajeed,我将我的代码划分为小功能,发现从 SharePoint 获取数据并将其绑定到自适应卡并不需要太多时间。但是我正在从 AAD 获取用户图像,并且在一个请求中我试图从 AAD 获取至少 50 张图像,所以这需要很多时间,对此有什么建议吗?
  • 试试这个:当您收到消息扩展请求时,不要直接获取图像,而是在构造卡片时传递 yourendpoint/profile?id=userId 并在收到实际的个人资料图像时获取实际的个人资料图像获取请求。

标签: c# botframework sharepoint-online microsoft-teams


【解决方案1】:

我现在似乎找不到它,但我确实记得读过一些关于此时间限制很短的内容,以便 MS 可以强制执行响应式 UI,而不会因为第 3 方而被称为“慢” (比如你的应用)。

这里有一个替代设计建议:当使用消息扩展时,它可以调用一个任务模块,这就是你现在正在做的。然后在您的任务模块中,您可以返回 EITHER 自适应卡片 嵌入式 Web 视图。有关详细信息,请参阅 [此处](带有嵌入式 Web 视图)。在您的情况下,考虑切换到嵌入式 Web 视图,而不是自适应卡,然后在您的自定义网页上,您可以向用户显示一个不错的“加载”屏幕或动画,同时您在 REST 调用中从 SharePoint 加载数据到后端 API。

希望对您有所帮助。

【讨论】:

  • 我有坚定的业务要求,仅在自适应卡中显示数据,如果我必须在网页中显示数据,那么首先为什么我要为机器人框架和团队,而不是我会简单地创建带有搜索功能的网页。
  • 我想我没有解释得太清楚,对此感到抱歉。我绝对不是说“创建一个单独的 Web 应用程序”或类似的东西。我的意思是:当您创建消息扩展时,它能够调用“任务模块”。在这种情况下,任务模块基本上是 Teams 内的弹出窗口。但是,您可以将两个选项放入任务模块中:(a) 自适应卡或 (b) 嵌入式 Web 视图(它是您在某处托管的网页的 iframe)。所以,简而言之,我建议你显示任务模块可以做什么的 other 选项。
  • 看看这里:docs.microsoft.com/en-us/microsoftteams/platform/… 然后看到有一个关于“使用自适应卡”的部分,然后下面的部分是“使用嵌入式网络视图”
  • 我更新了答案,希望它更清楚
  • 我知道任务模块并且已经在我的应用程序中实现了其他功能,但是自适应卡不能被任务模块替换。我出于特定原因使用的卡,以便可以将其发送到聊天窗口,频道中的每个人都可以看到它并使用该卡上的一些按钮。所以任务模块在任何情况下都不能作为选项。
【解决方案2】:

Direct Line 频道(和其他一些频道)确实有 15 秒的请求完成时间限制。您应该使用主动消息来解决时间限制。请参阅here 了解更多信息和here 获取示例。

意识到我应该补充一点说明。机器人需要启动一个新线程,以便机器人可以返回它的响应。你可以回复一条消息,说“正在努力”或其他什么。然后,您的结果会以主动消息的形式出现。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多