[英]Teams UpdateActivity events difference when you test in newly created teams
我们有一个团队机器人,可以在 MS 团队中发布消息。 新对话的第一个活动总是一张自适应卡片,我们偶尔会用一张新卡片更新它。 这一切正常,直到我用这个机器人组建了一个新团队。
我们正在尝试使用 UpdateActivityAsync 进行更新,返回 NotFound。
经过一些故障排除后,我注意到以下几点:
我们使用旧的 bot 框架版本 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.