跳到內容

整合 OpenClaw 與 Synology Chat:5 分鐘完成設定

每次想把自動化通知整合到公司的 NAS 系統,總是要寫一堆重複的 Webhook 邏輯,處理訊息格式和安全性問題真的很煩人。如果你正在尋找一個簡單的方法讓 Synology Chat 變成你的自動化助手,這篇教學就是為你準備的。

我們讓 Synology Chat 透過 plugin 支援私訊頻道。這個 plugin 會接收來自 Synology Chat outgoing webhooks 的訊息,並透過 incoming webhook 回傳回覆。

Synology Chat 是以 plugin 為基礎的,並未包含在預設的核心頻道安裝中。

從本地路徑安裝:

Terminal window
openclaw plugins install ./path/to/local/synology-chat-plugin

詳細資訊請參考:Plugins

  1. 安裝並啟用 Synology Chat plugin。
    • 現在 openclaw onboard 會在頻道設定清單中顯示 Synology Chat,就像 openclaw channels add 一樣。
    • 非互動式設定:openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
  2. 在 Synology Chat 的整合設定中:
    • 建立一個「傳入 Webhook」並複製它的 URL。
    • 建立一個「傳出 Webhook」並設定你的 secret token。
  3. 將傳出 Webhook 的 URL 指向你的 OpenClaw gateway:
    • 預設為 https://gateway-host/webhook/synology。
    • 或是你自定義的 channels.synology-chat.webhookPath。
  4. 在 OpenClaw 完成設定。
    • 引導模式:openclaw onboard
    • 直接設定:openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
  5. 重啟 gateway 並傳送一則私訊給 Synology Chat 機器人。

最小化配置範例:

{
channels: {
"synology-chat": {
enabled: true,
token: "synology-outgoing-token",
incomingUrl: "https://nas.example.com/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=...",
webhookPath: "/webhook/synology",
dmPolicy: "allowlist",
allowedUserIds: ["123456"],
rateLimitPerMinute: 30,
allowInsecureSsl: false,
},
},
}

針對預設帳號,你可以使用以下環境變數:

  • SYNOLOGY_CHAT_TOKEN
  • SYNOLOGY_CHAT_INCOMING_URL
  • SYNOLOGY_NAS_HOST
  • SYNOLOGY_ALLOWED_USER_IDS (以逗號分隔)
  • SYNOLOGY_RATE_LIMIT
  • OPENCLAW_BOT_NAME

設定檔中的數值會覆蓋環境變數。

  • 建議預設使用 dmPolicy: "allowlist"。
  • allowedUserIds 接受一個清單(或逗號分隔的字串),填入 Synology user ID。
  • 在 allowlist 模式下,如果 allowedUserIds 清單為空,會被視為設定錯誤且 webhook 路由不會啟動(若要允許所有人,請使用 dmPolicy: "open")。
  • dmPolicy: "open" 允許任何傳送者。
  • dmPolicy: "disabled" 阻擋所有私訊。
  • 回覆對象的綁定預設會固定在穩定的數字 user_id。channels.synology-chat.dangerouslyAllowNameMatching: true 是一個緊急相容模式,可以重新啟用可變動的使用者名稱/暱稱來尋找回覆對象。
  • 配對審核可以使用以下指令:
    • openclaw pairing list synology-chat
    • openclaw pairing approve synology-chat <CODE>

請使用數字形式的 Synology Chat user ID 作為目標。

範例:

Terminal window
openclaw message send --channel synology-chat --target 123456 --text "Hello from OpenClaw"
openclaw message send --channel synology-chat --target synology-chat:123456 --text "Hello again"

支援透過 URL 傳送媒體檔案。

在 channels.synology-chat.accounts 下支援多個 Synology Chat 帳號。每個帳號都可以覆蓋 token、incoming URL、webhook path、私訊政策與限制。私訊對話在每個帳號與使用者之間是獨立的,因此兩個不同 Synology 帳號上相同的數字 user_id 不會共享對話狀態。

請為每個啟用的帳號提供獨立的 webhookPath。OpenClaw 現在會拒絕重複的完整路徑,並在多帳號設定中拒絕啟動那些僅繼承共享 webhook path 的具名帳號。如果你刻意需要具名帳號使用舊有的繼承機制,請在該帳號或 channels.synology-chat 設定 dangerouslyAllowInheritedWebhookPath: true,但重複的精確路徑仍會因安全考量而被拒絕。建議為每個帳號設定明確的路徑。

{
channels: {
"synology-chat": {
enabled: true,
accounts: {
default: {
token: "token-a",
incomingUrl: "https://nas-a.example.com/...token=...",
},
alerts: {
token: "token-b",
incomingUrl: "https://nas-b.example.com/...token=...",
webhookPath: "/webhook/synology-alerts",
dmPolicy: "allowlist",
allowedUserIds: ["987654"],
},
},
},
},
}
  • 務必保護好你的 token,如果外洩請立即更換。
  • 除非你明確信任自簽署的本地 NAS 憑證,否則請保持 allowInsecureSsl: false。
  • 傳入的 Webhook 請求會經過 token 驗證,並針對每個傳送者進行速率限制。
  • 生產環境建議優先使用 dmPolicy: "allowlist"。
  • 除非你明確需要舊版的使用者名稱回覆功能,否則請關閉 dangerouslyAllowNameMatching。
  • 除非你明確接受多帳號設定中共享路徑的路由風險,否則請關閉 dangerouslyAllowInheritedWebhookPath。

想要更快速完成設定嗎?試試我們的 AI Setup Assistant。

OpenClaw

OpenClaw Expert

還是卡住了?

如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。