teams-meeting-pipeline
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTeams Meeting Pipeline
Teams 会议管道
Use this skill whenever the user asks about Microsoft Teams meeting summaries, transcripts, recordings, action items, Graph subscriptions, or any operational question about the Teams meeting pipeline. Works in any language — the triggers below are examples, not an exhaustive list.
Everything operator-facing is a subcommand run via the terminal tool. There are no new model tools for this pipeline — the CLI is the surface.
hermes teams-pipeline当用户询问Microsoft Teams会议摘要、转录文本、录制内容、行动项、Graph订阅或任何关于Teams会议管道的操作问题时,使用此技能。支持任意语言——以下触发词仅为示例,并非详尽列表。
所有面向操作人员的功能均为通过终端工具运行的子命令。此管道没有新的模型工具——CLI是唯一操作界面。
hermes teams-pipelineWhen to use this skill
何时使用此技能
The user is asking to:
- summarize a Teams meeting / extract action items / pull meeting notes
- check pipeline status, inspect a stored meeting job, or see recent meetings
- replay / re-run a stored job that failed or needs a fresh summary
- validate Microsoft Graph setup after changing env or config
- troubleshoot "meeting summary never arrived" or "no new meetings are ingesting"
- manage Graph webhook subscriptions (create, renew, delete, inspect)
- set up automated subscription renewal (see pitfall below)
Multilingual trigger examples (not exhaustive):
- English: "summarize the Teams meeting", "pipeline status", "replay job X"
- Turkish: "Teams meeting özetle", "action item çıkar", "toplantı notu", "pipeline durumu", "replay job"
用户提出以下需求时:
- 总结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"
Prerequisites
前置条件
Before using the pipeline, verify these are set in :
~/.hermes/.envbash
MSGRAPH_TENANT_ID=...
MSGRAPH_CLIENT_ID=...
MSGRAPH_CLIENT_SECRET=...If any are missing, direct the user to the Azure app registration guide at — they need an Azure AD app registration with admin-consented Graph application permissions before the pipeline will work.
/docs/guides/microsoft-graph-app-registration使用管道前,请确认中已配置以下内容:
~/.hermes/.envbash
MSGRAPH_TENANT_ID=...
MSGRAPH_CLIENT_ID=...
MSGRAPH_CLIENT_SECRET=...如果缺少任何一项,请引导用户查看位于的Azure应用注册指南——他们需要一个已获得管理员同意的Graph应用权限的Azure AD应用注册,管道才能正常工作。
/docs/guides/microsoft-graph-app-registrationCommand reference
命令参考
Status and inspection (start here)
状态与检查(从这里开始)
bash
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 subscriptionsbash
hermes teams-pipeline validate # 配置快照——任何更改后先运行此命令
hermes teams-pipeline token-health # Graph令牌状态
hermes teams-pipeline token-health --force-refresh # 强制获取新令牌
hermes teams-pipeline list # 近期会议任务
hermes teams-pipeline list --status failed # 仅查看失败任务
hermes teams-pipeline show <job-id> # 查看单个任务的完整详情
hermes teams-pipeline subscriptions # 当前Graph webhook订阅Re-running / debugging
重新运行/调试
bash
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 URLbash
hermes teams-pipeline run <job-id> # 重放已存储任务(重新生成摘要、重新交付)
hermes teams-pipeline fetch --meeting-id <id> # 试运行:解析会议+转录文本但不持久化
hermes teams-pipeline fetch --join-web-url "<url>" # 通过加入URL进行试运行Subscription management
订阅管理
bash
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 renewedbash
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 # 续订即将过期的订阅
hermes teams-pipeline maintain-subscriptions --dry-run # 显示将要续订的内容Decision tree for common asks
常见请求决策树
- User asks "why didn't I get a summary for today's meeting?" → start with , then
list --status failedon the relevant row. If the job doesn't exist at all, checkshow <job-id>— the webhook may have expired (see pitfall below).subscriptions - User asks "is setup working?" → , then
validate, thentoken-health. If all three pass, request a test meeting and checksubscriptionsfor a fresh row.list - User asks "re-run summary for meeting X" → to find the job ID,
listto replay. If it fails again,run <job-id>to inspect the error andshow <job-id>to dry-run the artifact resolution.fetch --meeting-id - User asks "add meeting X to the pipeline" → usually you don't — the pipeline is subscription-driven, not per-meeting. If they want a specific past meeting summarized, use to pull transcript +
fetchafter a job is created.run
- 用户询问“为什么我没有收到今天会议的摘要?” → 先运行,然后对相关行执行
list --status failed。如果任务根本不存在,检查show <job-id>——webhook可能已过期(见下方注意事项)。subscriptions - 用户询问“设置是否正常?” → 运行,然后
validate,再token-health。如果三项都通过,请求一场测试会议并检查subscriptions是否有新条目。list - 用户询问“重新运行会议X的摘要” → 使用找到任务ID,执行
list重放。如果再次失败,使用run <job-id>查看错误信息,并使用show <job-id>试运行工件解析。fetch --meeting-id - 用户询问“将会议X添加到管道中” → 通常不需要——管道是由订阅驱动的,而非按会议单独添加。如果他们想要总结某个特定的过往会议,使用拉取转录文本,然后在任务创建后执行
fetch。run
Critical pitfall: Graph subscriptions expire in 72 hours
关键注意事项:Graph订阅72小时后过期
Microsoft Graph caps webhook subscriptions at 72 hours and will not auto-renew them. If is not scheduled, meeting notifications silently stop arriving 3 days after any manual subscription creation.
maintain-subscriptionsWhen the user reports "the pipeline worked yesterday but nothing is arriving today":
- Run — if it's empty or all entries show
hermes teams-pipeline subscriptionsin the past, that's the cause.expirationDateTime - Recreate with as shown above.
subscribe - Set up automated renewal immediately via , a systemd timer, or plain crontab. The operator runbook at
hermes cron addhas all three options. 12-hour interval is safe (6x headroom against the 72h limit)./docs/guides/operate-teams-meeting-pipeline#automating-subscription-renewal-required-for-production
Microsoft Graph将webhook订阅的有效期限制为72小时,并且不会自动续订。如果未计划运行,在手动创建订阅3天后,会议通知会静默停止。
maintain-subscriptions当用户反馈“管道昨天还能用,但今天没有任何内容进来”时:
- 运行——如果结果为空或所有条目的
hermes teams-pipeline subscriptions都在过去,那就是问题所在。expirationDateTime - 按照上述示例使用重新创建订阅。
subscribe - 立即设置自动续订,可通过、systemd定时器或普通crontab实现。位于
hermes cron add的操作人员手册提供了这三种选项。12小时的间隔是安全的(相对于72小时限制有6倍的余量)。/docs/guides/operate-teams-meeting-pipeline#automating-subscription-renewal-required-for-production
Other pitfalls
其他注意事项
- Transcript not available yet. Teams takes some time after a meeting ends to generate the transcript artifact. on a just-ended meeting may return empty. Wait 2-5 minutes and retry, or let the Graph webhook drive ingestion naturally.
fetch --meeting-id - Delivery mode mismatch. If summaries are produced (shows success) but nothing lands in Teams, check
listand the matching target config (platforms.teams.extra.delivery_modeORincoming_webhook_urlORchat_id+team_id). The writer reads these from config.yaml orchannel_idenv vars.TEAMS_* - Graph app permissions. A token acquires cleanly (passes) but Graph API calls return 401/403 when permissions were added but admin consent wasn't re-granted. Have the user revisit the app registration in the Azure portal and click "Grant admin consent" again.
token-health
- 转录文本尚未生成。会议结束后,Teams需要一些时间来生成转录文本工件。对刚结束的会议执行可能返回空结果。等待2-5分钟后重试,或让Graph webhook自然驱动导入。
fetch --meeting-id - 交付模式不匹配。如果已生成摘要(显示成功)但未在Teams中收到,请检查
list以及对应的目标配置(platforms.teams.extra.delivery_mode或incoming_webhook_url或chat_id+team_id)。写入器会从config.yaml或channel_id环境变量中读取这些配置。TEAMS_* - Graph应用权限。令牌获取成功(通过)但Graph API调用返回401/403错误,这可能是因为添加了权限但未重新获得管理员同意。让用户重新访问Azure门户中的应用注册,再次点击“授予管理员同意”。
token-health
Related docs
相关文档
Point the user to these when they need more depth than this skill covers:
- Azure app registration walkthrough:
/docs/guides/microsoft-graph-app-registration - Full pipeline setup:
/docs/user-guide/messaging/teams-meetings - Operator runbook (renewal automation, troubleshooting, go-live checklist):
/docs/guides/operate-teams-meeting-pipeline - Webhook listener setup:
/docs/user-guide/messaging/msgraph-webhook
当用户需要比本技能更深入的内容时,引导他们查看以下文档:
- 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