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 會議管線。
此功能的運作方式
該管線會:
- 接收 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 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_idteam_id+channel_idteam_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 認證設定 |