OpenClaw Microsoft Teams 頻道
透過 Azure Bot Resource 使用 Bot Framework 將 OpenClaw 連接到 Microsoft Teams。此基於外掛的整合讓您的 AI 助手可以在 Teams 中運作 — 處理個人私訊、群組聊天和頻道對話。OpenClaw 透過 /api/messages 接收來自 Bot Framework 的 Webhook 事件,並透過 Teams 訊息 API 回覆,支援串接式回覆、Adaptive Cards、表情回應、透過 SharePoint 分享檔案,以及針對個別團隊或頻道的設定覆寫。
Microsoft Teams 支援功能
文字訊息
支援
媒體與檔案
支援
表情回應
支援
討論串
支援
語音訊息
不支援
群組聊天
支援
Microsoft Teams 前置條件
- 具有建立 Azure Bot 資源權限的 Azure 帳號
- 已註冊的 Azure Bot,包含 App ID、App Password(用戶端密碼)和 Tenant ID(建議使用單一租用戶)
- Teams App Manifest(manifest.json),包含機器人設定、範圍和圖示(outline.png 32×32、color.png 192×192)
- OpenClaw Gateway 已執行,且可透過公開 HTTPS URL 或通道存取(預設 Webhook 連接埠 3978)
- 已安裝 Teams 外掛:openclaw plugins install @openclaw/msteams
Microsoft Teams 快速設定
建立 Azure Bot 資源
前往 Azure Portal → 建立資源 → 搜尋「Azure Bot」。以 Single Tenant 類型建立。在 App Registration 中產生用戶端密碼。複製 App ID、用戶端密碼和 Tenant ID — 這三個都是 OpenClaw 設定所需的。
安裝 Teams 外掛並進行設定
執行 'openclaw plugins install @openclaw/msteams' 以安裝外掛。在 openclaw.json 中新增 Teams 頻道設定,填入 appId、appPassword 和 tenantId。也可以使用環境變數 MSTEAMS_APP_ID、MSTEAMS_APP_PASSWORD 和 MSTEAMS_TENANT_ID。
設定訊息端點並啟用 Teams 頻道
在 Azure Portal 中,導覽至您的 Bot 資源 → Configuration。將訊息端點設為 'https://<your-domain>/api/messages'。然後前往 Channels → Add Microsoft Teams → Configure。如需本機開發,請使用通道(ngrok 或 Tailscale Funnel)以公開連接埠 3978。
建立並安裝 Teams App
建立 manifest.json,將機器人的 App ID 設為 botId,設定 scopes(personal、team、groupChat)和 RSC 權限。與 outline.png 和 color.png 一起壓縮成 zip 檔。透過 Teams Developer Portal 或 Teams Admin Center 上傳。如需測試,可側載應用程式套件。
測試機器人
在 Teams 中找到您的機器人,傳送一則私訊。如果使用預設的 pairing 策略,請在終端機中透過 'openclaw pairing approve msteams <code>' 核准發送者。機器人應該會以 AI 產生的回覆進行回應。
Microsoft Teams 設定範例
{
"channels": {
"msteams": {
"enabled": true,
"appId": "YOUR_APP_ID",
"appPassword": "YOUR_APP_PASSWORD",
"tenantId": "YOUR_TENANT_ID",
"webhook": {
"port": 3978,
"path": "/api/messages"
}
}
}
}Microsoft Teams 深入了解
架構概述
Azure Bot 設定與 App Registration
{
"channels": {
"msteams": {
"appId": "<APP_ID>",
"appPassword": "<APP_PASSWORD>",
"tenantId": "<TENANT_ID>"
}
}
}Teams App Manifest 與 RSC 權限
私訊政策
{
"channels": {
"msteams": {
"dmPolicy": "allowlist",
"allowFrom": [
"user@org.com",
"40a1a0ed-4ff2-4164-a219-55518990c197"
]
}
}
}群組聊天與頻道管理
{
"channels": {
"msteams": {
"groupPolicy": "allowlist",
"groupAllowFrom": ["user@org.com"],
"teams": {
"My Team": {
"channels": {
"General": {
"requireMention": true
}
}
}
}
}
}
}回覆樣式與串接
{
"channels": {
"msteams": {
"replyStyle": "thread",
"teams": {
"19:abc...@thread.tacv2": {
"channels": {
"19:xyz...@thread.tacv2": {
"replyStyle": "top-level"
}
}
}
}
}
}
}檔案處理與 SharePoint
{
"channels": {
"msteams": {
"sharePointSiteId": "YOUR_SHAREPOINT_SITE_ID",
"mediaAllowHosts": ["*.microsoft.com", "*.sharepoint.com"],
"mediaAuthAllowHosts": ["graph.microsoft.com"]
}
}
}Adaptive Cards 與投票
Teams ID 擷取
Microsoft Teams 設定參考
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | 啟用或停用 Microsoft Teams 頻道 |
| appId | string | "" | Azure Bot App ID(Microsoft App ID)。也可使用 MSTEAMS_APP_ID 環境變數 |
| appPassword | string | "" | Azure Bot 用戶端密碼。也可使用 MSTEAMS_APP_PASSWORD 環境變數 |
| tenantId | string | "" | 用於單一租用戶驗證的 Azure AD Tenant ID。也可使用 MSTEAMS_TENANT_ID 環境變數 |
| webhook.port | number | 3978 | 用於接收 Bot Framework 事件的 Webhook 監聽連接埠 |
| webhook.path | string | "/api/messages" | 接收 Bot Framework 訊息的 Webhook 端點路徑 |
| dmPolicy | string | "pairing" | 控制誰可以私訊機器人。選項:pairing、allowlist、open、disabled |
| allowFrom | string[] | [] | 允許私訊機器人的 AAD 物件 ID、UPN 或顯示名稱(當 dmPolicy 為 allowlist 時) |
| groupPolicy | string | "allowlist" | 群組/頻道存取控制。選項:allowlist、open、disabled |
| groupAllowFrom | string[] | [] | 群組聊天中允許的發送者。若未設定則回退至 allowFrom |
| teams | object | {} | 針對個別團隊和頻道的設定覆寫(replyStyle、requireMention、tools) |
| requireMention | boolean | true | 在頻道和群組聊天中要求 @mention。搭配 RSC 權限設為 false 可回應所有訊息 |
| replyStyle | string | "thread" | 回覆版面配置樣式。選項:thread(傳統 Posts)、top-level(類似 Slack 的 Threads) |
| configWrites | boolean | true | 允許 /config set|unset 命令在執行時修改頻道設定 |
| textChunkLimit | number | — | 外送訊息在分段前的最大字元數 |
| chunkMode | string | "length" | 文字分段策略。選項:length(硬性分割)、newline(段落感知) |
| sharePointSiteId | string | "" | 用於群組聊天/頻道檔案上傳的 SharePoint 網站 ID |
| mediaAllowHosts | string[] | MS/Teams domains | 允許下載媒體附件的主機 |
| mediaAuthAllowHosts | string[] | Graph + Bot Framework | 下載媒體時接收 Authorization 標頭的主機 |
| dmHistoryLimit | number | 50 | 每個對話中作為 AI 脈絡包含的近期私訊數量 |
| historyLimit | number | 50 | 作為 AI 脈絡包含的最大頻道/群組訊息數 |
啟用或停用 Microsoft Teams 頻道
Azure Bot App ID(Microsoft App ID)。也可使用 MSTEAMS_APP_ID 環境變數
Azure Bot 用戶端密碼。也可使用 MSTEAMS_APP_PASSWORD 環境變數
用於單一租用戶驗證的 Azure AD Tenant ID。也可使用 MSTEAMS_TENANT_ID 環境變數
用於接收 Bot Framework 事件的 Webhook 監聽連接埠
接收 Bot Framework 訊息的 Webhook 端點路徑
控制誰可以私訊機器人。選項:pairing、allowlist、open、disabled
允許私訊機器人的 AAD 物件 ID、UPN 或顯示名稱(當 dmPolicy 為 allowlist 時)
群組/頻道存取控制。選項:allowlist、open、disabled
群組聊天中允許的發送者。若未設定則回退至 allowFrom
針對個別團隊和頻道的設定覆寫(replyStyle、requireMention、tools)
在頻道和群組聊天中要求 @mention。搭配 RSC 權限設為 false 可回應所有訊息
回覆版面配置樣式。選項:thread(傳統 Posts)、top-level(類似 Slack 的 Threads)
允許 /config set|unset 命令在執行時修改頻道設定
外送訊息在分段前的最大字元數
文字分段策略。選項:length(硬性分割)、newline(段落感知)
用於群組聊天/頻道檔案上傳的 SharePoint 網站 ID
允許下載媒體附件的主機
下載媒體時接收 Authorization 標頭的主機
每個對話中作為 AI 脈絡包含的近期私訊數量
作為 AI 脈絡包含的最大頻道/群組訊息數
Microsoft Teams 常見問題
Microsoft Teams 故障排除
Graph API 權限未授予或缺少管理員同意。機器人收到的是內容摘要而非實際檔案。
機器人預設在頻道和群組聊天中需要 @mention,或 RSC 權限未設定。
Teams 會積極快取應用程式中繼資料。仍在使用舊的 manifest。
OpenClaw 設定中的 appId、appPassword 或 tenantId 與 Azure Bot 註冊不符,或在未使用正確 Azure JWT Token 的情況下手動測試。
Microsoft Teams 過去對私人頻道的機器人支援有限。自 2026 年初起,微軟正在逐步推出私人頻道的完整應用程式支援,但可能尚未在所有租戶中可用。