如何处理Teams单向通知类机器人的消息反应以避免触发额外通知
问题根因
你遇到的通知触发逻辑和你机器人回调接口的返回值没有任何关联,该通知是Teams客户端针对可反应消息的默认行为,无论你对messageReaction事件返回什么状态码/响应体,都不会影响这个通知的触发。
解决方案(两种可选,优先选第一种)
方案1:发消息时直接禁用反应功能(最彻底)
从根源上取消用户对机器人消息的反应权限,用户看不到表情反应按钮,自然不会触发对应通知。你只需要在C#发送主动消息的逻辑中,给Activity添加channelData配置,禁用反应即可:
var credentials = new MicrosoftAppCredentials(appId, appPassword); var connectorClient = new ConnectorClient(new Uri(serviceUrl), credentials); // 新增部分:禁用当前消息的反应功能 activity.ChannelData = new { allowReactions = false }; var response = await connectorClient.Conversations.SendToConversationAsync(conversationId, activity);
方案2:保留反应功能,仅关闭事件回调
如果你需要允许用户加表情反应,只是不想接收messageReaction类型的回调请求,可以修改你的Teams应用清单(manifest.json),在bots配置项中添加如下配置,Teams就不会再给你的回调地址推送反应事件:
"bots": [ { "botId": "你的机器人ID", "scopes": ["personal"], "supportsReactions": false } ]
注意这个方案只会停止向你推送反应事件,用户加反应时的客户端通知依然会存在。
现有PHP代码的调整
你当前messageReaction分支的处理逻辑不需要做任何修改,保持返回HTTP 200空响应就完全符合Bot Framework的规范,不需要额外添加参数。
内容的提问来源于stack exchange,提问作者Ravi
相关产品推荐
相关产品推荐

