為何改走 Workflows 與官方依據
微軟已公告 Office 365 連接器退場,涵蓋多數舊式 Incoming Webhook;組織應改以 Teams Workflows/Power Automate 取得綁定頻道的 POST URL。官方依據見 連接器退場說明。MessageCard 多可沿用,變更重心在URL 與治理,網關架構不必重寫。
安裝與驗證網關(唯一出站端)
- 拓樸:準備一台穩定主機(跳板、管理用 Mac 或小型 VM)執行 OpenClaw;所有 MeshMac 建置節點只把事件(含
provider_run_id、分支、commit、state)送入共享佇列,不在 Runner 上存放 Teams URL。佇列語意可與 任務佇列與重試步驟對齊。 - 安裝:設定
OPENCLAW_CONFIG_ROOT,完成 onboard/doctor 類健康檢查,並以 LaunchDaemon 或 systemd 固定帶入與手動測試相同的代理環境變數。 - 出站探測:在網關 shell 對租戶實際使用的 Webhook 主機(常見於
*.webhook.office.com等)做curl -I或經公司正向代理的 CONNECT 測試;此處失敗則正式環境必敗。
頻道綁定與授權檢核
在 Teams 開啟 Workflows,選擇「HTTP Webhook 觸發後貼訊至頻道」類範本(用語依用戶端語系可能不同),於精靈中明確選定團隊與頻道,完成後只複製一次 HTTPS URL。將完整字串視為 Bearer 憑證,寫入例如 /etc/openclaw/secrets.d/teams/workflows-build.url,權限 0440、root 擁有、僅通知服務帳號所屬群組可讀。
授權清單:擁有者核准流程;共用頻道須符合租戶政策;測試/正式頻道分離;連接器遭封鎖時預先開票。除錯勿列印完整 URL,只留主機與 token 尾段。
流式回覆:網關分段發送
完整 Bot Framework 串流需 Graph,對建置通知往往過重。實務上將「流式」定義為生命週期分段 POST:排程中 → 執行中 → 終態摘要,每階段送出一則精簡 MessageCard 或 Adaptive Card;若希望單一討論串乾淨,可固定第一則為錨點,後續以留言回覆串起來。每則請求應帶正規化欄位 phase,並與 provider_run_id 形成冪等家族,避免重試時刷頻。若回應 429,優先遵守 Retry-After,否則指數退避並加抖動;高併發池可對非關鍵更新節流數百毫秒,搭配網關既有全局限流。
多節點建置摘要廣播
當矩陣建置、分片測試或容錯重派導致多台 MeshMac參與同一邏輯流水號時,請在事件上強制 mesh_node_id、workflow、state、run_url。網關將分片完成事件合併為單張摘要卡:每節點一行附耗時與日誌連結;或待佇列記錄的「待完成分片數」歸零後再送唯一終局廣播,避免三台 Mac 各刷一條「成功」橫幅。若需分片途中亦公告,請以 provider_run_id+phase+可選 shard_id 做去重鍵。
權杖輪替與失敗重試
輪替:URL 外洩或負責人離職時,停用或刪除舊流程、建立新流程,以原子方式替換密鑰檔並 reload OpenClaw,變更應帶工單編號與時間戳寫入內部 Runbook。
重試:對 5xx 與 429 採有上限的指數退避(例如兩分鐘內至多五次),並設抖動;對 400/401 不要盲目重試,先修正 JSON 或憑證;對 404 視為端點不存在,換新 URL 前勿無限重排通知。建議將成功投遞收據以 provider_run_id + phase 為鍵保存至少 72 小時,避免 Worker 重試導致 Teams 重複噪音。
常見 HTTP 錯誤與 FAQ
400:多為 MessageCard/Adaptive Card JSON 不符合必填欄位或體積過大。請在網關上用最小合法 payload先行 curl 驗證。
401:URL 被撤銷或複製截斷。重新產生 Workflows URL 並更新密鑰檔。
404:流程遭刪或頻道遷移。至 Teams 確認流程啟用並取得新 URL。
200 無訊息:可能被用戶端或政策隱藏;核對頻道綁定與測試環境。
僅部分節點異常:疑有繞過網關;撤銷節點直出,統一走佇列。
結語與公開頁 CTA
2026 年請以 Teams Workflows(或租戶核准的等效端點)承接 Webhook,維持單一 OpenClaw 網關作為對 Microsoft 邊界、以分段訊息提供流式體感、以多節點摘要廣播讓頻道可讀;並用權杖輪替與有界重試滿足實務運維。
無需登入即可瀏覽:MeshMac 首頁、購買/方案、說明與協助;更多 OpenClaw 與遠端 Mac 主題見 OpenClaw 專欄與 部落格列表。