消息传递平台
Microsoft Teams
“进入此地者,当放弃一切希望。”
更新日期:2026-01-21 状态:支持文本 + 私聊附件;频道/群组文件发送需要 sharePointSiteId + Graph 权限(参见在群聊中发送文件)。投票通过 Adaptive Cards 发送。
所需插件
Microsoft Teams 作为插件提供,不包含在核心安装包中。破坏性变更 (2026.1.15): MS Teams 已从核心中移出。如果您使用它,必须安装插件。解释:保持核心安装更轻量,并让 MS Teams 依赖项可以独立更新。通过 CLI (npm 注册表) 安装:
openclaw plugins install @openclaw/msteams
本地检出(从 git 仓库运行时):
openclaw plugins install ./extensions/msteams
如果您在配置/引导过程中选择了 Teams 并且检测到 git 检出,OpenClaw 将自动提供本地安装路径。详情:插件
快速设置(初学者)
- 安装 Microsoft Teams 插件。
- 创建一个 Azure Bot(应用 ID + 客户端密钥 + 租户 ID)。
- 使用这些凭据配置 OpenClaw。
- 通过公共 URL 或隧道暴露
/api/messages(默认端口 3978)。 - 安装 Teams 应用包并启动网关。
最小配置:
{
channels: {
msteams: {
enabled: true,
appId: "<APP_ID>",
appPassword: "<APP_PASSWORD>",
tenantId: "<TENANT_ID>",
webhook: { port: 3978, path: "/api/messages" },
},
},
}
注意:群聊默认被阻止 (channels.msteams.groupPolicy: "allowlist")。要允许群组回复,请设置 channels.msteams.groupAllowFrom(或使用 groupPolicy: "open" 允许任何成员,但需提及门控)。
目标
- 通过 Teams 私聊、群聊或频道与 OpenClaw 对话。
- 保持路由确定性:回复始终返回到消息来源的频道。
- 默认采用安全的频道行为(除非另行配置,否则需要提及)。
配置写入
默认情况下,Microsoft Teams 允许写入由 /config set|unset 触发的配置更新(需要 commands.config: true)。通过以下方式禁用:
{
channels: { msteams: { configWrites: false } },
}
访问控制(私聊 + 群组)
私聊访问
- 默认:
channels.msteams.dmPolicy = "pairing"。未知发件人在批准前将被忽略。 channels.msteams.allowFrom应使用稳定的 AAD 对象 ID。- UPN/显示名称是可变的;直接匹配默认禁用,仅在
channels.msteams.dangerouslyAllowNameMatching: true时启用。 - 当凭据允许时,向导可以通过 Microsoft Graph 将名称解析为 ID。
群组访问
- 默认:
channels.msteams.groupPolicy = "allowlist"(除非您添加groupAllowFrom,否则被阻止)。当未设置时,使用channels.defaults.groupPolicy覆盖默认值。 channels.msteams.groupAllowFrom控制哪些发件人可以在群聊/频道中触发(回退到channels.msteams.allowFrom)。- 设置
groupPolicy: "open"以允许任何成员(默认仍受提及门控)。 - 要禁止所有频道,请设置
channels.msteams.groupPolicy: "disabled"。
示例:
{
channels: {
msteams: {
groupPolicy: "allowlist",
groupAllowFrom: ["user@org.com"],
},
},
}
Teams + 频道允许列表
- 通过将团队和频道列在
channels.msteams.teams下来限定群组/频道回复的范围。 - 键可以是团队 ID 或名称;频道键可以是对话 ID 或名称。
- 当
groupPolicy="allowlist"且存在团队允许列表时,仅接受列出的团队/频道(提及门控)。 - 配置向导接受
Team/Channel条目并为您存储。 - 启动时,OpenClaw 将团队/频道和用户允许列表名称解析为 ID(当 Graph 权限允许时)并记录映射关系;未解析的条目保持键入时的原样。
示例:
{
channels: {
msteams: {
groupPolicy: "allowlist",
teams: {
"My Team": {
channels: {
General: { requireMention: true },
},
},
},
},
},
}
工作原理
- 安装 Microsoft Teams 插件。
- 创建一个 Azure Bot(应用 ID + 密钥 + 租户 ID)。
- 构建一个引用该机器人并包含以下 RSC 权限的 Teams 应用包。
- 将 Teams 应用上传/安装到团队中(或用于私聊的个人范围)。
- 在
~/.openclaw/openclaw.json(或环境变量)中配置msteams并启动网关。 - 网关默认监听
/api/messages上的 Bot Framework webhook 流量。
Azure Bot 设置(先决条件)
在配置 OpenClaw 之前,您需要创建一个 Azure Bot 资源。
步骤 1:创建 Azure Bot
-
前往 创建 Azure Bot
-
填写 基 础 选项卡:
字段 值 机器人句柄 您的机器人名称,例如 openclaw-msteams(必须唯一)订阅 选择您的 Azure 订阅 资源组 新建或使用现有 定价层 免费 用于开发/测试 应用类型 单租户(推荐 - 参见下面的说明) 创建类型 创建新的 Microsoft 应用 ID
弃用通知: 2025-07-31 之后已弃用创建新的多租户机器人。对于新机器人,请使用单租户。
- 点击 查看 + 创建 → 创建(等待约 1-2 分钟)
步骤 2:获取凭据
- 前往您的 Azure Bot 资源 → 配置
- 复制 Microsoft 应用 ID → 这是您的
appId - 点击 管理密码 → 转到应用注册
- 在 证书和密码 → 新建客户端密码 → 复制 值 → 这是您的
appPassword - 前往 概述 → 复制 目录(租户)ID → 这是您的
tenantId