sidebar_position: 6 title: “Teams Meetings” description: “Set up the Microsoft Teams meeting summary pipeline with Microsoft Graph webhooks”
Microsoft Teams 会议功能
当您希望让 Hermes 获取 Microsoft Graph 会议事件、优先获取会议文字记录,在没有可用文字记录时再使用录像结合语音转文字技术,并将结构化摘要传递给下游系统时,可使用 Teams 会议处理流程。
前提条件:有关底层机器人/凭证的设置方式,请参阅 Microsoft Teams 文档。
运行
hermes gateway setup命令后选择 Teams Meetings,即可获得操作指南。
本页面主要介绍相关设置与启用步骤:
- Graph 凭证配置
- webhook 监听器设置
- Teams 会议交付模式
- 处理流程配置结构
关于后续运营、上线检查以及操作员工作表等内容,请参考专用指南:操作 Teams 会议处理流程。
此功能的作用
该处理流程具备以下功能:
- 接收 Microsoft Graph webhook 事件
- 定位相关会议,并优先使用文字记录作为输出
- 在无法获取可用文字记录时,转而下载录像并结合语音转文字技术生成内容
- 在本地存储持久化的任务状态及下游系统记录
- 能够将摘要内容写入 Notion、Linear 和 Microsoft Teams 等平台
操作员的相关操作仍通过 CLI 完成(teams-pipeline 子命令由 teams_pipeline 插件提供,可通过 hermes plugins enable teams_pipeline 命令启用该插件,或是在 config.yaml 文件中设置 plugins.enabled: [teams_pipeline] 来启用)。
hermes teams-pipeline validate
hermes teams-pipeline list
hermes teams-pipeline maintain-subscriptions
先决条件
在启用会议处理流程之前,请确保您已具备以下条件:
- 正常运行的 Hermes 安装环境
- 若需通过 Teams 进行消息发送,还需完成现有的 Microsoft Teams 机器人设置
- 包含所需权限的 Microsoft Graph 应用凭据,这些权限对应您计划使用的会议相关资源
- 一个可供 Microsoft Graph 调用以实现 webhook 消息传递的公共 HTTPS 地址
- 若需采用“录音+语音转文字”作为备用方案,则需已安装
ffmpeg工具
第一步:添加 Microsoft Graph 凭据
将仅适用于 Graph 应用的凭据添加到 ~/.hermes/.env 文件中:
MSGRAPH_TENANT_ID=<tenant-id>
MSGRAPH_CLIENT_ID=<client-id>
MSGRAPH_CLIENT_SECRET=<client-secret>
这些凭据被以下组件使用:
- Graph客户端基础框架
- 订阅维护命令
- 会议记录解析及相关文件获取功能
- 在您未提供专用Teams访问令牌时的基于Graph的Teams消息发送功能
第2步:启用Graph Webhook监听器
Webhook监听器是一个名为msgraph_webhook的网关平台。首先需要启用该平台,并设置一个客户端状态值:
MSGRAPH_WEBHOOK_ENABLED=true
MSGRAPH_WEBHOOK_PORT=8646
MSGRAPH_WEBHOOK_CLIENT_STATE=<random-shared-secret>
MSGRAPH_WEBHOOK_ACCEPTED_RESOURCES=communications/onlineMeetings
绑定主机地址取自 config.yaml 文件中平台配置的 extra.host(不存在 MSGRAPH_WEBHOOK_HOST 环境变量——详情请参阅Webhook监听器参考文档)。
该监听器提供以下接口:
/msgraph/webhook:用于接收Graph通知/health:用于执行简单的健康检查
您需要将自身的公共HTTPS端点指向该监听器。例如,若您的公共域名为 https://ops.example.com,则对应的Graph通知URL通常为:
https://ops.example.com/msgraph/webhook
第 3 步:配置团队消息传递与流程行为
会议处理流程会从现有的 teams 平台配置项中读取运行时设置。与特定流程相关的参数则存储在 teams.extra.meeting_pipeline 下。而团队向外发送消息的功能则仍遵循常规的 Teams 平台配置规则。
示例 ~/.hermes/config.yaml 文件内容:
platforms:
msgraph_webhook:
enabled: true
extra:
host: 127.0.0.1
port: 8646
client_state: "replace-me"
accepted_resources:
- "communications/onlineMeetings"
teams:
enabled: true
extra:
client_id: "your-teams-client-id"
client_secret: "your-teams-client-secret"
tenant_id: "your-teams-tenant-id"
# outbound summary delivery
delivery_mode: "graph" # or incoming_webhook
team_id: "team-id"
channel_id: "channel-id"
# incoming_webhook_url: "https://..."
meeting_pipeline:
transcript_min_chars: 80
transcript_required: false
transcription_fallback: true
ffmpeg_extract_audio: true
notion:
enabled: false
linear:
enabled: false
如果将监听器绑定到非回环地址的主机,例如 0.0.0.0,则必须同时将 allowed_source_cidrs 设置为 Microsoft 的 Webhook 出站地址范围。而回环地址绑定(127.0.0.1 / ::1)则是专为开发隧道及本地反向代理配置设计的。
Teams 传输模式
该流水线在现有的 Teams 插件中支持两种 Teams 摘要传输模式。
incoming_webhook
当您希望直接通过 Webhook 将数据发送到 Teams,而无需通过 Graph 创建频道消息时,可使用此模式。
所需配置:
platforms:
teams:
enabled: true
extra:
delivery_mode: "incoming_webhook"
incoming_webhook_url: "https://..."
graph
当您希望让 Hermes 通过 Microsoft Graph 将摘要发布到 Teams 聊天窗口或频道时,请使用此选项。
支持的目标地址:
chat_idteam_id+channel_id- 为现有 Teams 平台提供的备用地址:
team_id+home_channel
示例:
platforms:
teams:
enabled: true
extra:
delivery_mode: "graph"
team_id: "team-id"
channel_id: "channel-id"
第 4 步:启动网关
更新配置后,即可正常启动 Hermes。
hermes gateway run
或者,如果您在 Docker 环境中运行 Hermes,只需以与常规部署相同的方式启动网关即可。
检查监听端口:
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"
:::warning 图表订阅将在 72 小时后过期
- Microsoft Graph 对 webhook 订阅设置了 72 小时的时限,并且不会自动续订。在正式上线之前,您必须提前安排执行
hermes teams-pipeline maintain-subscriptions命令,否则在任何手动创建订阅后的三天后,通知功能将悄然停止。详情请参阅操作手册中的自动续订订阅,其中提供了三种方案:Hermes cron、systemd timer 以及普通 crontab。 -
::
如需了解订阅维护及上线后的后续操作流程,请继续阅读指南:运营 Teams 会议处理流程。
验证
运行内置的验证快照:
hermes teams-pipeline validate
实用的辅助检查功能:
hermes teams-pipeline token-health
hermes teams-pipeline subscriptions
故障排除
| 问题 | 检查项 |
|---|---|
| Graph webhook 验证失败 | 确认公共 URL 正确且可访问,同时确认 Graph 实际调用的路径为 /msgraph/webhook |
任务未出现在 hermes teams-pipeline list 中 | 确认 msgraph_webhook 已启用,且订阅配置指向正确的通知 URL |
| Transcript-first 模式始终失败 | 检查 Graph 对转录记录资源的权限,以及该会议是否已生成转录文件 |
| 录制回退功能失败 | 确认已安装 ffmpeg,且 Graph 应用能够访问录制文件 |
| Teams 摘要推送失败 | 重新检查 delivery_mode、目标 ID 以及 Teams 认证配置 |