Microsoft Teams 会议

当您希望 Hermes 摄取 Microsoft Graph 会议事件、首先获取转录、在需要时回退到录音加 STT,并将结构化摘要投递到下游接收端时,请使用 Teams 会议流水线。

此页面聚焦于设置和启用:

  • Graph 凭证
  • webhook 监听器配置
  • Teams 投递模式
  • 流水线配置结构

有关日常操作、上线检查和操作员工作表,请使用专门的指南:操作 Teams 会议流水线

此功能的作用

流水线:

  1. 接收 Microsoft Graph webhook 事件
  2. 解析会议,优先使用转录产物
  3. 在没有可用转录时,回退到录音下载加 STT
  4. 在本地存储持久的作业状态和接收端记录
  5. 可以写入 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 可调用的公共 HTTPS URL,用于 webhook 投递
  • 如果您想要录音加 STT 回退,需要安装 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 出站投递

第二步:启用 Graph Webhook 监听器

Webhook 监听器是一个名为 msgraph_webhook 的网关平台。至少启用它并设置一个 client state 值:

MSGRAPH_WEBHOOK_ENABLED=true
MSGRAPH_WEBHOOK_PORT=8646
MSGRAPH_WEBHOOK_CLIENT_STATE=<random-shared-secret>
MSGRAPH_WEBHOOK_ACCEPTED_RESOURCES=communications/onlineMeetings

监听器暴露:

  • /msgraph/webhook 用于 Graph 通知
  • /health 用于简单的健康检查

您需要将公共 HTTPS 端点路由到该监听器。例如,如果您的公共域名是 https://ops.example.com,您的 Graph 通知 URL 通常是:

https://ops.example.com/msgraph/webhook

第三步:配置 Teams 投递和流水线行为

会议流水线从现有的 teams 平台条目读取其运行时配置。流水线特定的设置位于 teams.extra.meeting_pipeline 下。Teams 出站投递保留在常规的 Teams 平台配置面上。

示例 ~/.hermes/config.yaml

platforms:
  msgraph_webhook:
    enabled: true
    extra:
      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"
 
      # 出站摘要投递
      delivery_mode: "graph" # 或 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

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_id
  • team_id + channel_id
  • 现有 Teams 平台的 team_id + home_channel 回退

示例:

platforms:
  teams:
    enabled: true
    extra:
      delivery_mode: "graph"
      team_id: "team-id"
      channel_id: "channel-id"

第四步:启动网关

更新配置后正常启动 Hermes:

hermes gateway run

或者,如果您在 Docker 中运行 Hermes,按照您部署的方式启动网关。

检查监听器:

curl http://localhost:8646/health

第五步:创建 Graph 订阅

使用插件 CLI 创建和检查订阅。

示例:

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 Graph 订阅在 72 小时后过期

Microsoft Graph 将 webhook 订阅上限设为 72 小时,且不会自动续订。您必须在上线前安排 hermes teams-pipeline maintain-subscriptions 的运行,否则通知将在手动创建订阅后的三天内静默停止。请参阅操作手册中的自动化订阅续订——三种选项(Hermes 定时任务、systemd 定时器、普通 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
转录优先从未成功检查转录资源的 Graph 权限,以及该会议的转录产物是否存在
录音回退失败确认已安装 ffmpeg 且 Graph 应用可以访问录音产物
Teams 摘要投递失败重新检查 delivery_mode、目标 ID 和 Teams 认证配置

相关文档