跳到主要内容

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 天后,会议通知将静默停止到达。

当用户报告“流水线昨天还正常工作,但今天没有收到任何内容”时:

  1. 运行 hermes teams-pipeline subscriptions —— 如果为空或所有条目显示的 expirationDateTime 已过去,这就是原因。
  2. 如上所示使用 subscribe 重新创建。
  3. 立即通过 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_urlchat_idteam_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