












Hermes Agent(GitHub 164k star)不只是終端裡的編碼助手。通過它的消息網關,Agent 可以接入 24 個消息平臺——Telegram、Discord、Slack、微信、飛書、釘釘、Microsoft Teams 等。你在一個平臺上配置好的 Agent 能力(Skills、工具調用、審批流程),在所有平臺上通用。
這篇聚焦 Microsoft Teams 的接入方法:6 步讓你的 AI Agent 機器人出現在 Teams 群聊裡。
Teams 群聊 ←── HTTPS Webhook ──→ Hermes Gateway (端口 3978) ←──→ Agent + LLM
和 Slack 的 Socket Mode 不同,Teams 通過公共 HTTPS Webhook 推送消息。你的 Hermes 實例需要一個公網可達的端點——本地開發用隧道工具,生產環境用真實域名。
| 場景 | 行為 |
|---|---|
| 私聊(1:1) | 每條消息都觸發 Agent 回覆,不需要 @ |
| 群聊(Group Chat) | 只有 @機器人 時才回復 |
| 頻道(Channel) | 只有 @機器人 時才回復 |
Teams 把 @mention 作為 <at>BotName</at> 標籤傳遞,Hermes 自動剝離後處理。
Microsoft 的 @microsoft/teams.cli 自動化 Bot 註冊,不需要 Azure Portal:
npm install -g @microsoft/teams.cli@preview
teams login
驗證登錄並獲取你的 AAD Object ID(後面配置白名單要用):
teams status --verbose
Teams 不能向 localhost 推送消息。本地開發需要隧道工具:
# Microsoft devtunnel(推薦,URL 持久)
devtunnel create hermes-bot --allow-anonymous
devtunnel port create hermes-bot -p 3978 --protocol https
devtunnel host hermes-bot
# 或 ngrok
ngrok http 3978
# 或 cloudflared
cloudflared tunnel --url http://localhost:3978
記下輸出的 https:// URL,下一步要用。開發期間保持隧道運行。
teams app create \
--name "Hermes" \
--endpoint "https://<your-tunnel-url>/api/messages"
CLI 輸出 CLIENT_ID、CLIENT_SECRET 和 TENANT_ID。立即保存 Client Secret——不會再顯示第二次。
添加到 ~/.hermes/.env:
# 必填
TEAMS_CLIENT_ID=<your-client-id>
TEAMS_CLIENT_SECRET=<your-client-secret>
TEAMS_TENANT_ID=<your-tenant-id>
# 限制訪問用戶(強烈建議)
# 用 teams status --verbose 獲取 AAD Object ID
TEAMS_ALLOWED_USERS=<your-aad-object-id>
也可以用 config.yaml 配置:
platforms:
teams:
enabled: true
extra:
client_id: "your-client-id"
client_secret: "your-secret"
tenant_id: "your-tenant-id"
port: 3978
HERMES_UID=$(id -u) HERMES_GID=$(id -g) docker compose up -d gateway
驗證是否運行:
curl http://localhost:3978/health
# 應返回: ok
docker logs -f hermes
# 看到: [teams] Webhook server listening on 0.0.0.0:3978/api/messages
teams app get <teamsAppId> --install-link
打開輸出的鏈接,在 Teams 客戶端中安裝。安裝完成後給機器人發一條消息——它已經就緒了。
這是 Teams 集成最實用的功能之一。當 Agent 需要執行危險命令(刪除文件、執行 shell 命令等),它不會讓你手動輸入 /approve,而是發送一張 Adaptive Card,帶 4 個按鈕:
| 按鈕 | 行為 |
|---|---|
| Allow Once | 批准這一次特定命令 |
| Allow Session | 本會話內自動批准同類命令 |
| Always Allow | 永久批准該模式 |
| Deny | 拒絕執行 |
點擊按鈕後,卡片立即更新為審批決定,Agent 繼續執行或停止。
Hermes Agent 的 Teams 集成不僅支持聊天,還能自動推送會議紀要。開啟 Teams Meeting Pipeline 插件後,會議結束後自動生成紀要並推送到指定 Teams 頻道或聊天。
兩種推送模式:
| 模式 | 適用場景 | 限制 |
|---|---|---|
incoming_webhook |
簡單推送到頻道 | 不支持線程、沒有回覆功能 |
graph |
以 Bot 身份發帖,支持線程 | 需要 Microsoft Graph 權限 |
graph 模式配置:
platforms:
teams:
enabled: true
extra:
client_id: "..."
client_secret: "..."
tenant_id: "..."
delivery_mode: "graph"
chat_id: "19:meeting_..." # 推送到聊天
# 或
# team_id: "..."
# channel_id: "..." # 推送到頻道
本地開發用隧道,生產環境用真實域名:
# 創建 Bot 時直接用生產域名
teams app create \
--name "Hermes" \
--endpoint "https://your-domain.com/api/messages"
# 已有 Bot 更新端點
teams app update --id <teamsAppId> --endpoint "https://your-domain.com/api/messages"
要求:
- 端口 3978(或 TEAMS_PORT 指定的端口)可從公網訪問
- TLS 證書有效(Teams 拒絕自簽名證書)
⚠️ 必須設置 TEAMS_ALLOWED_USERS,否則任何能找到或安裝你的 Bot 的人都可以與它交互。
安全最佳實踐:
TEAMS_ALLOWED_USERS 填入授權用戶的 AAD Object ID,未授權消息靜默丟棄TEAMS_CLIENT_SECRET 當作密碼對待,定期輪換~/.hermes/.env 文件權限設為 600:chmod 600 ~/.hermes/.env/api/messages 由 Teams Bot Framework 認證——沒有有效 JWT 的請求會被拒絕| 變量 | 說明 |
|---|---|
TEAMS_CLIENT_ID |
Azure AD App(客戶端)ID |
TEAMS_CLIENT_SECRET |
Azure AD 客戶端密鑰 |
TEAMS_TENANT_ID |
Azure AD 租戶 ID |
TEAMS_ALLOWED_USERS |
逗號分隔的 AAD Object ID 白名單 |
TEAMS_ALLOW_ALL_USERS |
設 true 跳過白名單(不推薦) |
TEAMS_HOME_CHANNEL |
定時/主動消息的對話 ID |
TEAMS_PORT |
Webhook 端口(默認 3978) |
| 問題 | 解決方案 |
|---|---|
| health 端點正常但 Bot 不響應 | 檢查隧道是否仍在運行,Bot 端點是否匹配隧道 URL |
KeyError: 'teams' 日誌錯誤 |
重啟容器 |
| 認證錯誤 | 驗證 CLIENT_ID、CLIENT_SECRET、TENANT_ID |
| Bot 收到消息但忽略 | AAD Object ID 不在 ALLOWED_USERS 中 |
| 隧道 URL 重啟後變化 | devtunnel 用命名隧道 URL 持久;ngrok 免費版每次變,需用 teams app update 更新 |
No inference provider configured |
檢查 ANTHROPIC_API_KEY(或其他 LLM key)已配置 |
Teams 只是其中之一。Hermes Agent 同時支持:
Telegram、Discord、Slack、WhatsApp、Signal、Email、SMS(Twilio)、Home Assistant、Mattermost、Matrix、釘釘、飛書/Lark、企業微信、企業微信回調、微信、iMessage(BlueBubbles)、QQ Bot、元寶、Microsoft Teams、Teams Meetings、LINE、SimpleX Chat、ntfy、Open WebUI、Webhooks。
同一個 Agent,一套 Skills 和工具配置,全部平臺通用。
作者: itech001
來源: 公眾號:AI人工智能時代
網站: https://www.theaiera.cn/
每日分享最前沿的AI新聞資訊和技術研究。
本文首發於 AI人工智能時代,轉載請註明出處。
此內容由慣性聚合(RSS閱讀器)自動聚合整理,僅供閱讀參考。 原文來自 — 版權歸原作者所有。