Hermes Agent 接入 Microsoft Teams 全指南:6 步让你的 AI Agent 进群聊
Hermes Agent(GitHub 164k star)不只是终端里的编码助手。通过它的消息网关,Agent 可以接入 24 个消息平台——Telegram、Discord、Slack、微信、飞书、钉钉、Microsoft Teams 等。你在一个平台上配置好的 Agent 能力(Skills、工具调用、审批流程),在所有平台上通用。
这篇聚焦 Microsoft Teams 的接入方法:6 步让你的 AI Agent 机器人出现在 Teams 群聊里。
这篇文章涵盖什么
- Hermes Agent + Teams 的架构
- 6 步接入流程
- 交互式审批卡片
- 会议纪要自动推送
- 生产环境部署
- 安全配置
架构
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 自动剥离后处理。
6 步接入
第 1 步:安装 Teams CLI
Microsoft 的 @microsoft/teams.cli 自动化 Bot 注册,不需要 Azure Portal:
npm install -g @microsoft/teams.cli@preview
teams login验证登录并获取你的 AAD Object ID(后面配置白名单要用):
teams status --verbose第 2 步:暴露 Webhook 端口
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,下一步要用。开发期间保持隧道运行。
第 3 步:创建 Bot
teams app create \
--name "Hermes" \
--endpoint "https:///api/messages" CLI 输出 CLIENT_ID、CLIENT_SECRET 和 TENANT_ID。立即保存 Client Secret——不会再显示第二次。
第 4 步:配置环境变量
添加到 ~/.hermes/.env:
# 必填
TEAMS_CLIENT_ID=
TEAMS_CLIENT_SECRET=
TEAMS_TENANT_ID=
# 限制访问用户(强烈建议)
# 用 teams status --verbose 获取 AAD Object ID
TEAMS_ALLOWED_USERS= 也可以用 config.yaml 配置:
platforms:
teams:
enabled: true
extra:
client_id: "your-client-id"
client_secret: "your-secret"
tenant_id: "your-tenant-id"
port: 3978第 5 步:启动网关
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第 6 步:在 Teams 中安装应用
teams app get --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 --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)已配置 |
Hermes Agent 支持的 24 个消息平台
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人工智能时代,转载请注明出处。