You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

后端应用如何实现MS Teams单聊与群聊通知?API限制求解

需求与问题背景

我希望在应用触发特定事件时通知MS Teams中的用户,需要实现两个功能:

  • 应用触发事件时直接向单个用户发送消息
  • 创建包含多个用户的群聊,并向所有相关用户发送消息

我已在Slack中通过Slack Bot实现该功能,代码如下:

// single message
const web = new WebClient(token);
web.chat.postMessage({
  text: message,
  channel: target,
});

// group message
const conversationResponse = await web.conversations.open({
  users: targets.join(","),
});
web.chat.postMessage({
  text: message,
  channel: conversationResponse.channel.id,
});

尝试用MS Teams聊天机器人实现时,遇到限制:

Creating group chats through Bot APIs is not supported. However, this can be accomplished with Graph APIs

转而尝试Graph API,由于是后端应用,希望无需用户OAuth握手,仅通过邮箱或Teams ID发送通知,因此选择应用权限认证,但发送消息时又遇到限制:

Message POST is allowed in application-only context only for import purposes.

我是否需要采用混合方案:通过Graph API创建群聊,再用聊天机器人发送消息?恳请告知可行的实现方案。


可行实现方案

针对你的需求,以下是两种场景的具体落地方案:

1. 向单个用户发送消息

采用**Teams Bot + Graph API(应用权限)**的组合方式:

  • 第一步:通过Graph API的应用权限,查询目标用户的Teams对话ID或用户ID。
  • 第二步:使用Teams Bot的API,通过获取到的对话ID发送一对一消息。需提前将Bot通过管理员批量部署到租户,无需用户手动授权。
  • 注意:首次发送前,需通过Graph API触发创建用户与Bot的一对一对话,后续可直接复用对话ID发送消息。

2. 创建群聊并发送消息

Graph API创建群聊 + Teams Bot发送消息是当前符合你"无用户OAuth握手"需求的唯一可行路径:

  • 第一步:使用Graph API的应用权限(需Chat.ReadWrite.All权限)创建群聊,添加目标用户到群聊中。
  • 第二步:通过Graph API将Teams Bot添加为群聊成员(或创建群聊时直接包含Bot)。
  • 第三步:使用Teams Bot的API,通过群聊的对话ID发送消息。

关键权限说明

  • Graph API侧:需申请Chat.ReadWrite.All应用权限,用于创建群聊、查询对话信息及添加Bot成员。
  • Teams Bot侧:需启用GroupChat权限范围,确保Bot具备在群聊中发送消息的权限。

补充替代方案(若允许首次用户授权)

如果可接受用户完成一次OAuth授权,可使用Graph API的委托权限:

  • 单用户消息:直接调用接口发送消息。
  • 群聊消息:创建群聊后直接发送消息,无需依赖Bot。但此方案不符合你"无用户OAuth握手"的核心需求,仅作扩展参考。

内容的提问来源于stack exchange,提问作者Jayd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 19:53:38