H繁中版
文件user-guideteams meetings
<!-- Source: https://hermesbible.com/docs/user-guide/messaging/teams-meetings -->

Section: Messaging Platforms · URL: https://hermesbible.com/docs/user-guide/messaging/teams-meetings

Microsoft Teams Meetings

當你希望 Hermes 接收 Microsoft Graph 會議事件、優先取得逐字稿、在沒有可用逐字稿時退回使用錄音搭配語音轉文字,並將結構化摘要送到下游目標時,請使用 Teams 會議管線。

前置需求:請參閱 Microsoft Teams 了解基礎的 Bot/憑證設定。

執行 hermes gateway setup 並選擇 Teams Meetings,即可啟動引導式設定流程。

本頁面著重於設定與啟用:

  • Graph 憑證
  • Webhook 監聽器設定
  • Teams 傳送模式
  • 管線設定結構

關於日常運維、上線檢查及操作手冊,請參閱專屬指南:操作 Teams 會議管線

此功能的運作方式

該管線會:

  1. 接收 Microsoft Graph webhook 事件
  2. 解析會議並優先取得逐字稿產出
  3. 當沒有可用的逐字稿時,退回使用錄音下載搭配語音轉文字
  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 bot 設定
  • 具備所需權限的 Microsoft Graph 應用程式憑證(對應你計畫訂閱的會議資源)
  • 一個可被 Microsoft Graph 呼叫的公開 HTTPS URL(用於 webhook 傳送)
  • 若需要錄音搭配語音轉文字的退回機制,請安裝 ffmpeg

步驟一:新增 Microsoft Graph 憑證

將 Graph 應用程式專用憑證加入 ~/.hermes/.env

MSGRAPH_TENANT_ID=<tenant-id>
MSGRAPH_CLIENT_ID=<client-id>
MSGRAPH_CLIENT_SECRET=<client-secret>

這些憑證會被以下功能使用:

  • Graph 客戶端基礎模組
  • 訂閱維護指令
  • 會議解析與產出取得
  • 基於 Graph 的 Teams 外送功能(當你未提供專用 Teams 存取權杖時)

步驟二:啟用 Graph Webhook 監聽器

Webhook 監聽器是一個名為 msgraph_webhook 的閘道平台。至少需要啟用它並設定一個客戶端狀態值:

MSGRAPH_WEBHOOK_ENABLED=true
MSGRAPH_WEBHOOK_HOST=127.0.0.1
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:
      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"

      # 外送摘要功能
      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

若你將監聽器綁定至非本機迴路位址(如 0.0.0.0),則必須同時設定 allowed_source_cidrs 為 Microsoft 的 webhook 出站 IP 範圍。本機迴路綁定(127.0.0.1 / ::1)則適用於開發隧道與本地反向代理的設定。

Teams 傳送模式

該管線在既有的 Teams 外掛中支援兩種 Teams 摘要傳送模式。

incoming_webhook

當你想透過簡易的 webhook POST 方式將內容送入 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
  • team_id + home_channel(退回使用既有 Teams 平台的預設頻道)

範例:

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"

警告——Graph 訂閱的有效期限為 72 小時

Microsoft Graph 將 webhook 訂閱的最長有效期限制為 72 小時,且不會自動續約。你必須在正式上線前排程執行 hermes teams-pipeline maintain-subscriptions,否則在任何手動訂閱建立後的三天內,通知會靜默停止。請參閱操作手冊中的自動化訂閱續約——提供三種方案(Hermes 排程作業、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
逐字稿優先策略始終失敗檢查 Graph 的逐字稿資源權限,以及該會議是否存在逐字稿產出
錄音退回機制失敗確認 ffmpeg 已安裝,且 Graph 應用程式可存取錄音產出
Teams 摘要傳送失敗重新檢查 delivery_mode、目標 ID 及 Teams 認證設定

相關文件



Microsoft Teams