Microsoft Teams 是企业环境中使用最广泛的协作平台之一。OpenClaw 通过 Azure Bot Framework 接入 Teams,支持私信、群组聊天和频道。本文覆盖从零配置到进阶功能的完整流程。
官方文档注解:「Abandon all hope, ye who enter here.」Teams 配置是 OpenClaw 中最复杂的频道,请耐心阅读。
第一步:安装 Teams 插件
openclaw plugins install @openclaw/msteams重要:2026.1.15 起 Teams 已从核心移至插件,必须单独安装。
第二步:创建 Azure Bot
- 打开 Azure Portal,搜索并创建 Azure Bot 资源
- 选择 Multi Tenant(适用于大多数场景)
- 记录 App ID、Client Secret(在 App 注册 → Certificates & secrets 中创建)、Tenant ID
第三步:配置消息端点
在 Azure Bot 的 Configuration 页面,设置 Messaging endpoint:
https://your-domain.com/api/messages
本地开发时可以用隧道工具(如 ngrok、Tailscale Funnel)临时暴露:
ngrok http 3978
# 将 https://xxxx.ngrok.io/api/messages 填入 Azure Bot 配置第四步:启用 Teams 频道
在 Azure Bot 的 Channels 页面,点击 Microsoft Teams 并启用。
第五步:配置 OpenClaw
{
"channels": {
"msteams": {
"enabled": true,
"appId": "<APP_ID>",
"appPassword": "<APP_PASSWORD>",
"tenantId": "<TENANT_ID>",
"webhook": {
"port": 3978,
"path": "/api/messages"
}
}
}
}群组聊天默认被阻止(
groupPolicy: "allowlist")。允许群组回复需设置groupAllowFrom,或改为groupPolicy: "open"(需 @提及)。
RSC 权限与 Teams 清单(Manifest)
Teams 应用需要打包 Manifest 并上传到 Teams 管理中心或开发者门户。核心 RSC 权限:
| 权限 | 说明 |
|---|---|
ChatMember.Read.Chat | 读取聊天成员 |
ChatMessage.Read.Chat | 读取聊天消息历史 |
ChannelMessage.Read.Group | 读取频道消息 |
TeamsActivity.Send.User | 发送活动通知 |
两种能力模式
仅 RSC 模式(无 Graph API 权限):
- ✅ 私信和群组聊天(Bot 已安装的场景)
- ✅ 文本和表情回复
- ❌ 群组文件发送(需要 SharePoint)
- ❌ 频道历史记录读取
RSC + Microsoft Graph(完整功能):
- ✅ 上述所有功能
- ✅ 群组文件发送(通过 SharePoint)
- ✅ 频道历史记录和媒体访问
群组文件发送(SharePoint)
在群组聊天中发送文件需要配置 SharePoint:
{
"channels": {
"msteams": {
"sharePoint": {
"siteId": "your-sharepoint-site-id",
"driveId": "your-drive-id"
}
}
}
}文件会先上传到 SharePoint,再通过分享链接发送给用户。DM 文件发送无需 SharePoint,直接通过 Bot 附件 API 发送。
回复风格:线程 vs 新帖
{
"channels": {
"msteams": {
"replyStyle": "thread"
}
}
}thread(默认):在原消息线程内回复post:发新帖回复
投票(Adaptive Cards)
Teams 投票通过 Adaptive Cards 实现:
message action=send channel=msteams target="chat:<chatId>" pollQuestion="选择方案" pollOption=["方案A", "方案B", "方案C"]已知限制
- Webhook 超时:Teams 要求 Bot 在 5 秒内响应,长任务需用异步回复模式
- 格式限制:Teams 支持 Markdown 子集,部分格式(如表格)渲染效果有限
- 私有频道:需要额外的 RSC 权限,配置更复杂
常见问题
Bot 无法接收消息? Azure Bot 的 Messaging endpoint URL 必须与实际 Gateway 地址一致,且可以从微软服务器访问。
RSC 权限不生效? 清单中的 RSC 权限需要在 Teams 管理员同意后才能激活,重新上传清单不会自动刷新权限。
Manifest 上传报错?
检查 id 字段是否为有效 GUID,version 格式是否为 x.x.x,validDomains 是否包含你的 Bot 域名。
原文:Microsoft Teams - OpenClaw | 来源:OpenClaw 官方文档