实战:Teams 会议流水线
Hermes 实战教程第28篇:Teams 会议流水线。自动参会记纪要。
这篇教程讲的是:当你已经按官方文档开启 Teams 会议功能后,如何日常“运维”这条流水线——就像你买回一台洗衣机,现在要学的是怎么保养它、排查故障,以及确保它不会在半夜悄悄罢工。
第 1 步:先学会三个“体检”命令
任何时候改过配置,先跑一遍体检:
hermes teams-pipeline validate # 检查配置快照是否正常
hermes teams-pipeline token-health # 检查微软登录令牌是否过期
hermes teams-pipeline subscriptions # 查看当前订阅了哪些会议通知
如果怀疑令牌状态异常,加个 --force-refresh 强制刷新。
第 2 步:解决最大的坑——订阅 72 小时自动过期
这是整条流水线最容易翻车的地方。 微软的 Graph 订阅最长只能活 72 小时,如果没人续命,会议通知就会悄悄停止,表面看一切正常,实际已经“脑死亡”。
解决办法:必须定时运行 maintain-subscriptions 命令。官方给了三种定时方案,推荐前两种:
方案 A:用 Hermes 自带的定时器(适合已经跑着 Hermes 网关的用户)
先建一个脚本文件:
mkdir -p ~/.hermes/scripts
cat > ~/.hermes/scripts/maintain-teams-subscriptions.sh <<'EOF'
#!/usr/bin/env bash
exec hermes teams-pipeline maintain-subscriptions
EOF
chmod +x ~/.hermes/scripts/maintain-teams-subscriptions.sh
再注册一个每 12 小时跑一次的定时任务(留足 6 倍余量):
hermes cron create "0 */12 * * *" \
--name "teams-pipeline-maintain-subscriptions" \
--no-agent \
--script maintain-teams-subscriptions.sh \
--deliver local
方案 B:用 systemd 定时器(适合 Linux 生产环境)
创建 service 和 timer 两个文件(见官方文档),然后执行:
sudo systemctl daemon-reload
sudo systemctl enable --now hermes-teams-pipeline-maintain.timer
验证续命是否生效:等第一次定时跑完后,执行 hermes teams-pipeline subscriptions,看 expirationDateTime 是不是往后推了。如果某个功能在“恰好 72 小时”后失灵,第一个要查的就是这个定时任务有没有跑。
第 3 步:日常巡检清单
每天或定期做三件事:
hermes teams-pipeline maintain-subscriptions --dry-run # 应该显示“0 expiring soon”
hermes teams-pipeline list --status failed # 看有没有失败任务
hermes teams-pipeline list # 看最近处理了哪些会议
第 4 步:出故障了怎么排查
- 没有新任务产生 → 检查 webhook 是否启用、公网地址是否正确、订阅是否已过期
- 任务卡在重试 → 检查会议转录/录制权限、
ffmpeg是否安装、令牌是否健康 - 摘要生成了但没发到 Teams → 检查
platforms.teams.enabled、delivery_mode、incoming_webhook_url或chat_id配置
第 5 步:上线前对照清单
最重要的一条:maintain-subscriptions 必须已定时运行。 没有它,72 小时后一切静默失效。其余检查项包括:Graph 凭据正确、webhook 公网可达、转录订阅已创建、Teams 投递目标已验证、真实会议事件已跑通全流程。
总结:这条流水线本身不难,难在“别让它悄悄死掉”。记住三件事:定时续订阅、定期看失败任务、改动后先 validate。
下篇预告:当会议流水线跑通后,如何让 Hermes 自动把会议纪要整理成 Notion 页面或 Linear 任务?我们下篇聊“会议产物的自动分发”。
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/messaging/teams