繁体   English   中英

在新创建的团队中进行测试时,团队 UpdateActivity 事件会有所不同

[英]Teams UpdateActivity events difference when you test in newly created teams

我们有一个团队机器人,可以在 MS 团队中发布消息。 新对话的第一个活动总是一张自适应卡片,我们偶尔会用一张新卡片更新它。 这一切正常,直到我用这个机器人组建了一个新团队。

我们正在尝试使用 UpdateActivityAsync 进行更新,返回 NotFound。

经过一些故障排除后,我注意到以下几点:

  1. 新团队有一个不同的名称:19:...@thread.tacv2 而不是 19:...@thread.skype。
  2. 当我使用较老的团队时,它会按预期工作。
  3. 当我仅使用文本更新活动时(因此没有自适应卡作为附件),它将始终按预期更新。
  4. 使用文本更新后,我们可以使用自适应卡进行一次更新。 使用自适应卡进行一次更新后,任何后续使用自适应卡的更新都将返回 NotFound。
  5. 因此,作为一种解决方法,我现在首先使用文本进行更新,然后立即使用卡发送更新。 这是一个糟糕的 UI 事情(闪烁),但它现在有效。

我们使用旧的 bo​​t 框架版本 3,我知道它不再维护,但据我所知,它应该仍然有效(不打算停止运行)。 还考虑到上述几点(特别是第 4 点),我希望它在后台使用相同的调用。

因此,这适用于较旧的团队,但不适用于使用 @thread.tacv2 的团队

await connector.Conversations.UpdateActivityAsync(
      teamsConversationId,
      activityId,
      (Activity)messageWithCard);

对于使用@thread.tacv2团队,我们现在必须使用它

var messageWithText = Activity.CreateMessageActivity();
messageWithText.ChannelId = teamsConversationId;
messageWithText.Id = activityId;
messageWithText.Type = ActivityTypes.Message;
messageWithText.Text = "Updated";

await connector.Conversations.UpdateActivityAsync(
      teamsConversationId,
      activityId,
      (Activity)messageWithText);

await connector.Conversations.UpdateActivityAsync(
      teamsConversationId,
      activityId,
      (Activity)messageWithCard);

异常没有提供太多细节:

操作返回了无效的状态代码“NotFound”

未找到对话。

有谁知道如何避免团队之间的这种变化并允许使用卡片更新活动?

另外(这不太重要,但我认为添加它很有用)我注意到有时(我现在已经看过两次)Teams 似乎无法呈现自适应卡片并显示 URIObject XML,其中包含错误:cards.unsupported . 但是,如果我退出客户端并重新启动它,它会呈现出很好的效果……到目前为止,我从未在旧频道中看到过这种情况。

Teams 客户端版本 1.3.00.362(64 位)(无开发模式)。 普通 Azure 租户(无预览/试用)

编辑 11/05/2020 似乎这也发生在具有“旧”名称(@thread.skype)的团队中。 所以 '@thread.tacv2' 似乎无关。

我们无法在您提供的确切时间戳处找到日志,但确实在这些日期找到了对话 ID 的日志,并在 UTC 中看到了具有相同分钟和秒数的 404。 我们假设提供的时间戳以不同的时区表示。

从日志中,我们看到以下模式:

Bot sends PUT activity with card - 404 returned
Bot sends PUT activity with text - 200 returned
Bot sends PUT activity with card - 200 returned

这看起来与您在原始帖子中分享的模式相同。

有一种情况会导致 404 在 PUTS 上返回,每当机器人尝试在将新消息发送到回复链后使用完全相同的卡片更新现有卡片消息时

这些是回购步骤:

 Bot send card to reply chain (can be root message or reply message)
    Any user sends a message to the chain
    Bot attempts to update message with the exact same card

您的机器人是否有可能遇到这种情况? 有没有办法检查您的机器人在第一个 PUT 请求中发送的卡片是否与原始消息中已经存在的卡片相同

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM