首页 教程 分类 Skills下载 关于
ZH EN JA KO
频道对接

OpenClaw连接Microsoft Teams教程

· 16 分钟

前言

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 创建应用注册

  1. 登录 Azure Portal
  2. 搜索并进入 Azure Active Directory应用注册
  3. 点击 新注册
  4. 填写以下信息:
字段
名称 OpenClaw Teams Bot
受支持的帐户类型 任何组织目录中的帐户(多租户)
重定向 URI 留空
  1. 点击 注册

1.2 记录关键信息

注册完成后,在 概述 页面记录以下信息:

应用程序(客户端) ID: 12345678-abcd-efgh-ijkl-123456789012
目录(租户) ID: 87654321-dcba-hgfe-lkji-210987654321

1.3 创建客户端密码

  1. 在左侧菜单点击 证书和密码
  2. 点击 新客户端密码
  3. 输入描述(如 "OpenClaw Bot Secret")
  4. 选择过期时间(建议 24 个月)
  5. 点击 添加
  6. 立即复制密码值(离开页面后将无法再次查看)
客户端密码: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
注意:请立即保存此密码,页面刷新后将无法再次查看!

第二步:创建 Bot 资源

2.1 创建 Azure Bot

  1. 在 Azure Portal 中,搜索 Azure Bot
  2. 点击 创建
  3. 填写以下信息:
字段
Bot 句柄 openclaw-teams-bot
订阅 选择你的 Azure 订阅
资源组 新建或选择已有资源组
定价层 F0(免费)
Microsoft 应用 ID 类型 多租户
创建类型 使用现有应用注册
应用 ID 上一步获取的应用程序(客户端) ID
  1. 点击 审阅 + 创建创建

2.2 配置消息终结点

Bot 资源创建完成后:

  1. 进入 Bot 资源页面
  2. 在左侧菜单点击 配置
  3. 消息终结点 中填入:
https://your-domain.com/webhook/teams/messages
  1. 点击 应用

2.3 启用 Teams 频道

  1. 在 Bot 资源的左侧菜单点击 频道
  2. 在可用频道列表中点击 Microsoft Teams
  3. 同意服务条款
  4. 点击 应用

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.jsoncolor.pngoutline.png 打包为 ZIP 文件:

zip teams-app.zip manifest.json color.png outline.png

4.4 上传到 Teams

开发者上传(个人使用)

  1. 打开 Teams 客户端
  2. 点击左侧 应用管理你的应用
  3. 点击 上传应用上传自定义应用
  4. 选择 teams-app.zip 文件

组织级部署(管理员操作)

  1. 登录 Teams 管理中心
  2. 进入 Teams 应用管理应用
  3. 点击 上传新应用
  4. 选择 teams-app.zip 文件
  5. 审核并发布到组织应用商店

使用方式

一对一聊天

  1. 在 Teams 中找到 OpenClaw AI 应用
  2. 点击开始聊天
  3. 直接输入问题即可获得 AI 回复

团队频道中使用

  1. 在目标团队频道中 @OpenClaw AI
  2. 输入你的问题
@OpenClaw AI 请帮我写一份项目周报模板

群组聊天中使用

  1. 将 OpenClaw AI 添加到群组聊天
  2. @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

确认以下几点:

  1. Teams 管理中心允许上传自定义应用
  2. manifest.json 中的 id 与 Azure AD 应用 ID 一致
  3. 图标文件尺寸和格式正确
  4. ZIP 包结构正确(文件在根目录,不在子文件夹中)

回复超时

Teams Bot Framework 要求在 15 秒内回复。如果 AI 模型响应较慢:

{
  channels: {
    teams: {
      reply: {
        // 开启"正在输入"指示器,给用户反馈
        showTyping: true,
        // 先发送一条"处理中"的消息
        thinkingMessage: "正在思考中...",
        // 完成后更新原消息(而不是发送新消息)
        updateMessage: true
      }
    }
  }
}

总结

将 OpenClaw 连接到 Microsoft Teams 需要较多步骤,但能为企业提供安全可控的 AI 助手。核心流程:

  1. 在 Azure AD 中注册应用并获取凭据
  2. 创建 Azure Bot 资源并启用 Teams 频道
  3. 在 OpenClaw 中配置 App ID 和 Password
  4. 打包 Teams 应用并部署
  5. 配置安全策略和访问控制

对于企业场景,务必关注数据安全、合规要求和访问控制。建议先在测试团队中验证,确认一切正常后再推广到全组织。

OpenClaw 是开源免费的个人AI助手,支持 WhatsApp、Telegram、Discord 等多平台接入