🤖HermesBlog
Hermes 消息平台接入 · 第29篇2026/8/9· Easy Understand Hermes Agent

Teams 会议接入——会议纪要自动生成

Hermes 消息平台接入第29篇:Teams 会议。AI 参会、记纪要、发总结。

这篇教程讲的是:如何让 Hermes 在你开完 Teams 会后,自动把会议内容整理成结构化纪要,并推送到 Notion、Linear 或 Teams 频道里——全程不用你手动记录。

想象一下:你刚开完一场一小时的客户会,还没回到工位,Hermes 已经把“谁说了什么、下一步谁做什么”整理好发到了项目群里。这就是我们今天要搭建的东西。

准备工作

你需要先有一个能跑起来的 Hermes 环境,以及一个 Teams 机器人(用于发送纪要)。另外,去 Azure 门户给应用注册好 Graph API 权限,并准备一个公网 HTTPS 地址(用于接收微软的会议事件通知)。如果希望“录音转文字”兜底,还要装好 ffmpeg

第 1 步:填入 Graph 凭证

打开 ~/.hermes/.env,把下面几行填好:

MSGRAPH_TENANT_ID=<你的租户ID>
MSGRAPH_CLIENT_ID=<你的应用ID>
MSGRAPH_CLIENT_SECRET=<你的应用密钥>

这组凭证相当于 Hermes 的“门禁卡”,用来读取会议列表、下载转录稿和录音。

第 2 步:开启 Webhook 监听器

Webhook 就像一个“门铃”——微软一有会议动态,就按铃通知 Hermes。在 .env 里加上:

MSGRAPH_WEBHOOK_ENABLED=true
MSGRAPH_WEBHOOK_PORT=8646
MSGRAPH_WEBHOOK_CLIENT_STATE=<随便填一长串随机字符>
MSGRAPH_WEBHOOK_ACCEPTED_RESOURCES=communications/onlineMeetings

然后在 config.yaml 里把监听地址配好(注意:这里没有环境变量,只能写配置文件):

platforms:
  msgraph_webhook:
    enabled: true
    extra:
      host: 127.0.0.1
      port: 8646
      client_state: "replace-me"
      accepted_resources:
        - "communications/onlineMeetings"

最后,把你的公网域名(比如 https://ops.example.com)反向代理到这台机器的 8646 端口,通知地址就是:

https://ops.example.com/msgraph/webhook

第 3 步:配置纪要生成与发送

config.yamlteams 平台下,增加 meeting_pipeline 配置块:

platforms:
  teams:
    enabled: true
    extra:
      client_id: "your-teams-client-id"
      client_secret: "your-teams-client-secret"
      tenant_id: "your-teams-tenant-id"
      delivery_mode: "graph"   # 或 incoming_webhook
      team_id: "team-id"
      channel_id: "channel-id"
      meeting_pipeline:
        transcript_min_chars: 80
        transcript_required: false
        transcription_fallback: true
        ffmpeg_extract_audio: true
        notion:
          enabled: false
        linear:
          enabled: false

关键点delivery_mode 有两种——graph 模式走官方接口发到指定频道;incoming_webhook 模式则用 Webhook 地址直接“扔”进某个频道,适合不想配 Graph 发送权限的场景。

第 4 步:启动网关

hermes gateway run

然后验证一下监听器是否活着:

curl http://localhost:8646/health

第 5 步:创建订阅

订阅就是“告诉微软:哪些会议事件要通知我”。用插件命令创建:

hermes teams-pipeline subscribe \
  --resource communications/onlineMeetings/getAllTranscripts \
  --notification-url https://ops.example.com/msgraph/webhook \
  --client-state "$MSGRAPH_WEBHOOK_CLIENT_STATE"

hermes teams-pipeline subscribe \
  --resource communications/onlineMeetings/getAllRecordings \
  --notification-url https://ops.example.com/msgraph/webhook \
  --client-state "$MSGRAPH_WEBHOOK_CLIENT_STATE"

⚠️ 重要警告:微软的 Graph 订阅72 小时就会过期,而且不会自动续期。上线前必须配置定时任务(比如 crontab)定期执行 hermes teams-pipeline maintain-subscriptions,否则三天后通知会悄悄断掉。

验证与排错

跑一下自检命令:

hermes teams-pipeline validate
hermes teams-pipeline token-health
hermes teams-pipeline subscriptions

常见问题速查:

问题 检查点
Webhook 验证失败 公网地址是否可达、路径是否精确到 /msgraph/webhook
列表里看不到任务 msgraph_webhook 是否启用、订阅通知地址是否正确
转录稿一直拿不到 Graph 权限是否包含 transcript 资源
录音兜底失败 ffmpeg 是否安装、应用能否访问录音文件
纪要发不出去 核对 delivery_mode、目标 ID、Teams 认证配置

小结

到这里,你已经完成了 Teams 会议纪要自动化的全部核心配置:凭证、监听器、纪要管道、订阅。剩下的就是让定时任务守护订阅不过期,然后坐等第一份自动纪要诞生。

下篇预告:当纪要生成后,如何把它接入 Notion 和 Linear,实现“会议结束,任务自动进看板”——我们下期见。

📖 官方文档

本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/messaging/teams