OpenClaw 實戰 · Google Chat · 多節點通知

2026 OpenClaw MeshMac 實戰:對接 Google Chat 空間 Webhook 廣播多節點建置狀態的最小可複現步驟

2026.04.08 Meshmac 約 6~8 分鐘閱讀

採用 Google Workspace 的團隊常希望同一 Chat 空間對齊 MeshMac 集區內各節點的 CI 結果。本文給最小可複現路徑:單一 OpenClaw 網關安裝、將 Incoming Webhook 當 Bearer 保管、送出精簡 JSON text、匯總 mesh_node_id,並收斂鑑權與有界重試多平台通知教學可沿用同一套心智模型:內部佇列與欄位表不變,只替換對外 HTTPS 端點與 JSON 版型——站內亦有 Microsoft Teams、Matrix Webhook 專文可作對照,Teams 走連接器卡片、Matrix 走房間訊息,與本文 Chat 的 text 載荷邏輯平行。

網關安裝與令牌

拓撲採網關優先:一台穩定主機(堡壘、小型 Linux VM 或指定 Mac)執行 OpenClaw、負責對外 Webhook,密鑰目錄與 daemon 環境一致。工作者節點只排程事件,不各自保存 Chat URL。安裝與多機編排可對照 多節點部署指南;事件進網關前的佇列與同步見 部署與任務佇列同步

完成 OPENCLAW_CONFIG_ROOT、引導與健康檢查後,將 Webhook 目標寫入例如 /etc/openclaw/secrets.d/google-chat/build-status.url,權限 0440、屬主 root、群組專用 openclaw-notify,避免建置帳號讀取。

檢查點 A(檔案權限)。

sudo install -d -m 0750 -o root -g openclaw-notify /etc/openclaw/secrets.d/google-chat
sudo sh -c 'umask 077; cat > /etc/openclaw/secrets.d/google-chat/build-status.url' <<'EOF'
https://chat.googleapis.com/v1/spaces/SPACE/messages?key=KEY&token=TOKEN
EOF
sudo chown root:openclaw-notify /etc/openclaw/secrets.d/google-chat/build-status.url
sudo chmod 0440 /etc/openclaw/secrets.d/google-chat/build-status.url

將佔位 URL 換成 Chat 主控台產生的實際位址。若暫無專用群組,可先以 root 可讀檔驗證流程,再上收斂為最小權限。

Google Chat incoming webhook 配置

在目標Chat 空間新增 Incoming Webhook(命名建議含儲存庫或集區代號),複製一次性完整 URL。其中 keytoken 查詢參數在效果上等同無範圍 HTTPS 密鑰;外洩時應撤銷並重建,無法只做「部分輪替」。

  • 分環境分空間,避免測試流水線誤傳「綠燈」到正式公告空間。
  • 出站:在與 daemon 相同環境的 shell 確認可連 chat.googleapis.com,且 HTTPS_PROXY 等變數與服務一致。
  • 管理政策:若 Workspace 限制自訂 Webhook,可改經核准的 Chat 應用程式或 Apps Script 端點,仍維持單一網關發送者

檢查點 B(連線)。

export HTTPS_PROXY="${HTTPS_PROXY:-}"
curl -sS -o /dev/null -w "%{http_code}\n" -I "https://chat.googleapis.com/"

預期可完成 TLS(裸 GET 常見 Google 的 404 等回應),但不可出現握手失敗或企業代理的 403。網路政策放行後再查 JSON 本文。

訊息載荷模板

應用程式產生文字時,最小可靠本體為 UTF-8 JSON,含 text 欄位;卡片與互動元件可在 plain text 驗證通過後再加。

export CHAT_URL="$(sudo cat /etc/openclaw/secrets.d/google-chat/build-status.url)"
curl -sS -X POST "$CHAT_URL" \
  -H 'Content-Type: application/json; charset=UTF-8' \
  -d '{"text":"MeshMac 網關探測:'"$(hostname -s)"' OK"}'

檢查點 C(空間可見)。數秒內應在空間看到探測行;若回應 JSON 含錯誤物件,先美化輸出修正本文,再接到 CI。

正式通知建議單行呈現:state 標籤或圖示、workflow、短 commitrun_url 連結(勿貼完整日誌);長度遵守 Chat 限制。多平台時 Teams 改為連接器卡片 JSON、Matrix 改為房間訊息,網關內部鍵仍一致。

多節點狀態聚合範例

假設三台 MeshMac 建置機在同一分鐘內結束作業:各 runner 將事件送入 Redis、NATS 或 OpenClaw 任務網格,由唯一消費端對照下列內部鍵後再格式化 text

正規化鍵 示例值 Chat 行內用途
workflowios-release前綴或標題片段
statesucceeded/failed團隊約定的圖示或標籤
mesh_node_idmm-pool-2標示池中哪台 Mac 執行
provider_run_id18451203state 組合做冪等鍵

單次 POST 渲染示例:

✅ ios-release · main · abc1234 · <https://github.com/org/repo/actions/runs/18451203> · node mm-pool-2

若同一 provider_run_idstate 重複回報,網關應在選定時間窗(常見 24~72 小時)內去重,避免重試洗版。內部佇列退避與上限請對齊 任務佇列重試步驟,與「重新跑建置」分開治理。

鑑權與重試 FAQ

Webhook URL 是 OAuth 權杖嗎?
不是。它是無範圍 HTTPS 端點密鑰。請比照 API Key:檔案 ACL、禁止進 Git、日誌僅保留主機與 token 末四碼。
哪些狀態碼應重試?
4295xx 可用指數退避加抖動並設次數上限(例如兩分鐘內至多五次)。勿對 400401 盲目重試;應修正 JSON 或輪替 Webhook。連續 404 視為連結已刪除。
如何避免重複 Chat 訊息?
成功投遞後以 provider_run_id + state 寫入 SQLite、Redis 或網關本機快取;窗內已存在則略過第二次 POST。
建置機能否暫時直連 Chat?
不建議。密鑰與出站規則會隨節點數倍增;收斂到單一網關程序才利於輪替、稽核與演練。
可抄 Runbook:0440、僅網關 POST、探測 curl、去重視窗 24~72h、重試僅 429/5xx

下一步(免登入導覽)

完成後應由單一網關對外呼叫 Chat。無需帳號即可瀏覽:首頁購買/套餐與節點選擇幫助中心(SSH/VNC 與接入說明)、部落格列表OpenClaw 索引。若需擴充多台遠端 Mac 集區,請於套餐頁依併發與地域加節點,再將網關與建置機分離並收斂出站與密鑰面。

多節點 · Google Chat · 免登入

選好套餐與節點,再收斂一個 Chat 空間

比較公開方案與多節點組合、查幫助中心完成 SSH/VNC,並以 OpenClaw 索引補齊佇列與密鑰實務。

免登入・購買/套餐