返回博客列表

Hermes Agent 接入 Microsoft Teams 全指南:6 步让你的 AI Agent 进群聊

2026-05-24T14:00:00+08:00
Hermes AgentMicrosoft TeamsAI AgentBotNous Research

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_IDCLIENT_SECRETTENANT_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 文件权限设为 600chmod 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人工智能时代,转载请注明出处。

觉得文章不错?分享给更多人!