Teams 会议流水线
通过 Hermes CLI 操作 Teams 会议摘要流水线——摘要会议、检查流水线状态、重放作业、管理 Microsoft Graph 订阅。
技能元数据
| 来源 | 捆绑(默认安装) |
| 路径 | skills/productivity/teams-meeting-pipeline |
| 版本 | 1.1.0 |
| 作者 | Hermes Agent + Teknium |
| 许可证 | MIT |
| 标签 | Teams, Microsoft Graph, Meetings, Productivity, Operations |
参考:完整 SKILL.md
信息
以下是 Hermes 在触发此技能时加载的完整技能定义。这是技能激活时代理看到的指令。
Teams 会议流水线
当用户询问有关 Microsoft Teams 会议摘要、转录稿、录音、行动项、Graph 订阅或有关 Teams 会议流水线的任何操作性问题时,使用此技能。适用于任何语言——下面的触发器仅为示例,并非详尽列表。
所有面向操作员的功能都是通过终端工具运行的 hermes teams-pipeline 子命令。此流水线没有新的模型工具——CLI 是其操作界面。
何时使用此技能
用户要求:
- 摘要 Teams 会议 / 提取行动项 / 拉取会议笔记
- 检查流水线状态、检查存储的会议作业或查看最近的会议
- 重放/重新运行失败或需要新鲜摘要的存储作业
- 在更改环境变量或配置后验证 Microsoft Graph 设置
- 排查“未收到会议摘要”或“没有新会议被摄入”的问题
- 管理 Graph webhook 订阅(创建、续订、删除、检查)
- 设置自动订阅续订(见下方的陷阱)
多语言触发器示例(非详尽):
- 英语:"summarize the Teams meeting", "pipeline status", "replay job X"
- 土耳其语:"Teams meeting özetle", "action item çıkar", "toplantı notu", "pipeline durumu", "replay job"
先决条件
在使用流水线之前,请验证 ~/.hermes/.env 中是否设置了以下变量:
MSGRAPH_TENANT_ID=...
MSGRAPH_CLIENT_ID=...
MSGRAPH_CLIENT_SECRET=...
如果缺少任何变量,请引导用户前往 /docs/guides/microsoft-graph-app-registration 处的 Azure 应用注册指南——他们需要具有管理员同意的 Graph 应用程序权限的 Azure AD 应用注册,流水线才能正常工作。
命令参考
状态和检查(从此开始)
hermes teams-pipeline validate # config snapshot — run first after any change
hermes teams-pipeline token-health # Graph token status
hermes teams-pipeline token-health --force-refresh # force a fresh token acquisition
hermes teams-pipeline list # recent meeting jobs
hermes teams-pipeline list --status failed # only failed jobs
hermes teams-pipeline show <job-id> # full detail of one job
hermes teams-pipeline subscriptions # current Graph webhook subscriptions
重新运行 / 调试
hermes teams-pipeline run <job-id> # replay a stored job (re-summarize, re-deliver)
hermes teams-pipeline fetch --meeting-id <id> # dry-run: resolve meeting + transcript without persisting
hermes teams-pipeline fetch --join-web-url "<url>" # dry-run by join URL
订阅管理
hermes teams-pipeline subscribe \
--resource communications/onlineMeetings/getAllTranscripts \
--notification-url https://<your-public-host>/msgraph/webhook \
--client-state "$MSGRAPH_WEBHOOK_CLIENT_STATE"
hermes teams-pipeline renew-subscription <sub-id> --expiration <iso-8601>
hermes teams-pipeline delete-subscription <sub-id>
hermes teams-pipeline maintain-subscriptions # renew near-expiry ones
hermes teams-pipeline maintain-subscriptions --dry-run # show what would be renewed
常见请求的决策树
- 用户询问“为什么我没有收到今天会议的摘要?” → 从
list --status failed开始,然后在相关行上执行show <job-id>。如果作业根本不存在,请检查subscriptions—— webhook 可能已过期(见下方的陷阱)。 - 用户询问“设置是否正常工作?” → 执行
validate,然后执行token-health,再执行subscriptions。如果这三项都通过,请求进行一次测试会议,并检查list以查看是否有新行。 - 用户询问“重新运行会议 X 的摘要” → 执行
list以查找作业 ID,执行run <job-id>以重放。如果再次失败,执行show <job-id>以检查错误,并执行fetch --meeting-id以干跑工件解析。 - 用户询问“将会议 X 添加到流水线” → 通常不需要这样做——流水线是由订阅驱动的,而不是针对每个会议。如果他们希望摘要特定的过去会议,请使用
fetch拉取转录稿,并在创建作业后使用run。
关键陷阱:Graph 订阅在 72 小时后过期
Microsoft Graph 将 webhook 订阅限制为 72 小时,并且不会自动续订。如果未调度 maintain-subscriptions,则在手动创建订阅 3 天后,会议通知将静默停止到达。
当用户报告“流水线昨天还正常工作,但今天没有收到任何内容”时:
- 运行
hermes teams-pipeline subscriptions—— 如果为空或所有条目显示的expirationDateTime已过去,这就是原因。 - 如上所示使用
subscribe重新创建。 - 立即通过
hermes cron add、systemd timer 或普通 crontab 设置自动续订。位于/docs/guides/operate-teams-meeting-pipeline#automating-subscription-renewal-required-for-production的操作员运行手册提供了这三种选项。12 小时间隔是安全的(相对于 72 小时限制有 6 倍的余量)。
其他陷阱
- 转录稿尚不可用。 Teams 在会议结束后需要一些时间来生成转录稿文件。对刚刚结束的会议执行
fetch --meeting-id可能会返回空结果。请等待 2-5 分钟后重试,或让 Graph webhook 自然驱动数据摄入。 - 交付模式不匹配。 如果已生成摘要(
list显示成功),但没有任何内容送达 Teams,请检查platforms.teams.extra.delivery_mode以及匹配的目标配置(incoming_webhook_url或chat_id或team_id+channel_id)。写入器会从 config.yaml 或TEAMS_*环境变量中读取这些配置。 - Graph 应用权限。 令牌获取正常(
token-health通过),但当权限已添加而未重新授予管理员同意时,Graph API 调用会返回 401/403。请让用户在 Azure 门户中重新访问应用注册,并再次点击“授予管理员同意”。
相关文档
当用户需要比本技能涵盖更深入的内容时,请引导他们参考以下文档:
- Azure 应用注册演练:
/docs/guides/microsoft-graph-app-registration - 完整流水线设置:
/docs/user-guide/messaging/teams-meetings - 操作员运行手册(续订自动化、故障排除、上线检查清单):
/docs/guides/operate-teams-meeting-pipeline - Webhook 监听器设置:
/docs/user-guide/messaging/msgraph-webhook