前言
Microsoft Teams 是企业协作的主流平台之一,广泛应用于各类组织和公司。将 OpenClaw 连接到 Teams,可以为企业内部提供一个安全、可控的 AI 助手。本文将详细讲解从 Azure AD 应用注册到 Teams 应用部署的完整流程。
前置条件
- OpenClaw 已安装并正常运行
- 拥有 Microsoft 365 组织账户(个人账户功能受限)
- 拥有 Azure 订阅(免费层即可)
- 拥有 Teams 管理员权限(或能联系管理员审批应用)
- OpenClaw 服务可通过公网 HTTPS 地址访问
架构概览
Teams Bot 的消息流如下:
用户在 Teams 中发送消息
↓
Microsoft Bot Framework Service
↓
通过 HTTPS Webhook 发送到 OpenClaw
↓
OpenClaw 处理消息并调用 AI 模型
↓
通过 Bot Framework API 发送回复
↓
用户在 Teams 中收到回复
第一步:Azure AD 应用注册
1.1 创建应用注册
- 登录 Azure Portal
- 搜索并进入 Azure Active Directory → 应用注册
- 点击 新注册
- 填写以下信息:
| 字段 | 值 |
|---|---|
| 名称 | OpenClaw Teams Bot |
| 受支持的帐户类型 | 任何组织目录中的帐户(多租户) |
| 重定向 URI | 留空 |
- 点击 注册
1.2 记录关键信息
注册完成后,在 概述 页面记录以下信息:
应用程序(客户端) ID: 12345678-abcd-efgh-ijkl-123456789012
目录(租户) ID: 87654321-dcba-hgfe-lkji-210987654321
1.3 创建客户端密码
- 在左侧菜单点击 证书和密码
- 点击 新客户端密码
- 输入描述(如 "OpenClaw Bot Secret")
- 选择过期时间(建议 24 个月)
- 点击 添加
- 立即复制密码值(离开页面后将无法再次查看)
客户端密码: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
注意:请立即保存此密码,页面刷新后将无法再次查看!
第二步:创建 Bot 资源
2.1 创建 Azure Bot
- 在 Azure Portal 中,搜索 Azure Bot
- 点击 创建
- 填写以下信息:
| 字段 | 值 |
|---|---|
| Bot 句柄 | openclaw-teams-bot |
| 订阅 | 选择你的 Azure 订阅 |
| 资源组 | 新建或选择已有资源组 |
| 定价层 | F0(免费) |
| Microsoft 应用 ID 类型 | 多租户 |
| 创建类型 | 使用现有应用注册 |
| 应用 ID | 上一步获取的应用程序(客户端) ID |
- 点击 审阅 + 创建 → 创建
2.2 配置消息终结点
Bot 资源创建完成后:
- 进入 Bot 资源页面
- 在左侧菜单点击 配置
- 在 消息终结点 中填入:
https://your-domain.com/webhook/teams/messages
- 点击 应用
2.3 启用 Teams 频道
- 在 Bot 资源的左侧菜单点击 频道
- 在可用频道列表中点击 Microsoft Teams
- 同意服务条款
- 点击 应用
Teams 频道启用后,状态应该显示为 正在运行。
第三步:配置 OpenClaw
3.1 配置文件方式
编辑 ~/.config/openclaw/openclaw.json5:
{
channels: {
teams: {
enabled: true,
// Azure AD 应用(客户端) ID
appId: "12345678-abcd-efgh-ijkl-123456789012",
// Azure AD 客户端密码
appPassword: "your-client-secret-value",
// 租户 ID(多租户模式可以留空)
tenantId: "",
// Webhook 路径
webhookPath: "/webhook/teams/messages",
// 消息处理配置
message: {
// 在团队频道中是否需要 @Bot 才响应
mentionRequired: true,
// 在一对一聊天中自动回复
personalChatEnabled: true,
// 在群组聊天中是否启用
groupChatEnabled: true
},
// 回复配置
reply: {
// 是否使用 Adaptive Card 格式(更美观)
useAdaptiveCard: true,
// 显示"正在输入"指示器
showTyping: true,
// 长消息分割阈值
maxLength: 28000
}
}
}
}
3.2 环境变量方式
export TEAMS_APP_ID="12345678-abcd-efgh-ijkl-123456789012"
export TEAMS_APP_PASSWORD="your-client-secret-value"
3.3 重启并验证
openclaw restart
# 查看 Teams 频道日志
openclaw logs -f --component channel:teams
成功日志:
[INFO] [channel:teams] Teams Bot 服务已启动
[INFO] [channel:teams] App ID: 12345678-abcd-****-****-************
[INFO] [channel:teams] Webhook 路径: /webhook/teams/messages
[INFO] [channel:teams] 等待接收消息...
第四步:创建 Teams 应用包
要在 Teams 客户端中找到并使用 Bot,需要创建一个 Teams 应用包。
4.1 创建应用清单
创建一个 manifest.json 文件:
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.16/MicrosoftTeams.schema.json",
"manifestVersion": "1.16",
"version": "1.0.0",
"id": "12345678-abcd-efgh-ijkl-123456789012",
"developer": {
"name": "Your Organization",
"websiteUrl": "https://your-domain.com",
"privacyUrl": "https://your-domain.com/privacy",
"termsOfUseUrl": "https://your-domain.com/terms"
},
"name": {
"short": "OpenClaw AI",
"full": "OpenClaw AI Assistant for Teams"
},
"description": {
"short": "AI 智能助手",
"full": "基于 OpenClaw 的 AI 智能助手,支持多种大语言模型,为团队提供即时智能问答服务。"
},
"icons": {
"outline": "outline.png",
"color": "color.png"
},
"accentColor": "#5B5FC7",
"bots": [
{
"botId": "12345678-abcd-efgh-ijkl-123456789012",
"scopes": ["personal", "team", "groupChat"],
"supportsFiles": false,
"isNotificationOnly": false,
"commandLists": [
{
"scopes": ["personal", "team", "groupChat"],
"commands": [
{
"title": "ask",
"description": "向 AI 提问"
},
{
"title": "model",
"description": "切换 AI 模型"
},
{
"title": "reset",
"description": "重置对话上下文"
},
{
"title": "help",
"description": "显示帮助信息"
}
]
}
]
}
],
"permissions": ["identity", "messageTeamMembers"],
"validDomains": ["your-domain.com"]
}
4.2 准备图标
准备两个图标文件:
| 文件名 | 尺寸 | 说明 |
|---|---|---|
color.png |
192x192 像素 | 彩色图标,用于应用列表 |
outline.png |
32x32 像素 | 轮廓图标,透明背景白色前景 |
4.3 打包应用
将 manifest.json、color.png 和 outline.png 打包为 ZIP 文件:
zip teams-app.zip manifest.json color.png outline.png
4.4 上传到 Teams
开发者上传(个人使用):
- 打开 Teams 客户端
- 点击左侧 应用 → 管理你的应用
- 点击 上传应用 → 上传自定义应用
- 选择
teams-app.zip文件
组织级部署(管理员操作):
- 登录 Teams 管理中心
- 进入 Teams 应用 → 管理应用
- 点击 上传新应用
- 选择
teams-app.zip文件 - 审核并发布到组织应用商店
使用方式
一对一聊天
- 在 Teams 中找到 OpenClaw AI 应用
- 点击开始聊天
- 直接输入问题即可获得 AI 回复
团队频道中使用
- 在目标团队频道中 @OpenClaw AI
- 输入你的问题
@OpenClaw AI 请帮我写一份项目周报模板
群组聊天中使用
- 将 OpenClaw AI 添加到群组聊天
- @Bot 后输入问题
Adaptive Card 格式
开启 Adaptive Card 后,Bot 的回复会更加美观和结构化:
{
channels: {
teams: {
reply: {
useAdaptiveCard: true,
adaptiveCard: {
// 代码块使用等宽字体
codeStyle: true,
// 显示模型信息
showModelInfo: true,
// 显示处理耗时
showLatency: true,
// 添加"继续提问"按钮
actionButtons: true
}
}
}
}
}
Adaptive Card 会将回复格式化为带样式的卡片,包括:
- 标题区域显示 Bot 名称和模型
- 正文区域支持 Markdown 渲染
- 代码块有语法高亮和复制按钮
- 底部显示 Token 消耗和处理时间
企业部署注意事项
合规与数据安全
| 考虑点 | 建议 |
|---|---|
| 数据驻留 | 确认 AI 模型 API 的数据处理地区符合合规要求 |
| 数据保留 | 配置对话记录的保留和清理策略 |
| 审计日志 | 开启详细日志记录,满足审计要求 |
| 访问控制 | 限制可以使用 Bot 的用户和团队 |
用户权限控制
{
channels: {
teams: {
security: {
// 允许使用的用户邮箱列表
allowedUsers: [
"*@your-company.com" // 允许公司域名下所有用户
],
// 管理员用户
adminUsers: [
"[email protected]"
],
// 允许的团队 ID
allowedTeams: [],
// 每用户每日消息限制
dailyLimit: 100
}
}
}
}
高可用部署
对于企业级部署,建议:
{
channels: {
teams: {
// 请求超时设置(毫秒)
timeout: 60000,
// 重试配置
retry: {
maxAttempts: 3,
backoffMs: 1000
},
// 并发限制
concurrency: {
maxConcurrent: 50,
queueSize: 200
}
}
}
}
Webhook 与 Connector 对比
除了 Bot Framework 方式,Teams 还支持通过 Incoming Webhook 或 Connector 集成:
| 方式 | 双向通信 | 配置复杂度 | 功能丰富度 |
|---|---|---|---|
| Bot Framework | 支持 | 高 | 最丰富 |
| Incoming Webhook | 仅发送 | 低 | 基础 |
| Connector | 仅发送 | 中 | 中等 |
Bot Framework 是唯一支持接收用户消息并回复的方式,因此是 OpenClaw 的推荐方案。Webhook 和 Connector 仅适合单向通知场景。
故障排查
Bot 不响应
# 检查 OpenClaw 日志
openclaw logs --level error --component channel:teams
# 常见原因:
# 1. 消息终结点 URL 不可达
# 2. App ID 或 Password 不正确
# 3. Bot 未启用 Teams 频道
403 Forbidden 错误
# 通常是 App Password 过期或不正确
# 在 Azure AD → 应用注册 → 证书和密码 中重新生成密码
# 更新 OpenClaw 配置后重启
openclaw config set channels.teams.appPassword "new-password"
openclaw restart
应用无法上传到 Teams
确认以下几点:
- Teams 管理中心允许上传自定义应用
manifest.json中的id与 Azure AD 应用 ID 一致- 图标文件尺寸和格式正确
- ZIP 包结构正确(文件在根目录,不在子文件夹中)
回复超时
Teams Bot Framework 要求在 15 秒内回复。如果 AI 模型响应较慢:
{
channels: {
teams: {
reply: {
// 开启"正在输入"指示器,给用户反馈
showTyping: true,
// 先发送一条"处理中"的消息
thinkingMessage: "正在思考中...",
// 完成后更新原消息(而不是发送新消息)
updateMessage: true
}
}
}
}
总结
将 OpenClaw 连接到 Microsoft Teams 需要较多步骤,但能为企业提供安全可控的 AI 助手。核心流程:
- 在 Azure AD 中注册应用并获取凭据
- 创建 Azure Bot 资源并启用 Teams 频道
- 在 OpenClaw 中配置 App ID 和 Password
- 打包 Teams 应用并部署
- 配置安全策略和访问控制
对于企业场景,务必关注数据安全、合规要求和访问控制。建议先在测试团队中验证,确认一切正常后再推广到全组织。