安裝
快速設定
- 安裝外掛(如上)。
- 在 Synology Chat integrations 中:
- 建立一個 incoming webhook 並複製其 URL。
- 使用你的秘密 token 建立一個 outgoing webhook。
- 將 outgoing webhook URL 指向你的 OpenClaw 閘道:
- 預設為
https://gateway-host/webhook/synology。 - 或你的自訂
channels.synology-chat.webhookPath。
- 預設為
- 在 OpenClaw 中完成設定。Synology Chat 會在兩種流程的同一個頻道設定清單中出現:
- 引導式:
openclaw onboard或openclaw channels add - 直接:
openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
- 引導式:
- 重新啟動閘道,並傳送 DM 給 Synology Chat bot。
- OpenClaw 會先從
body.token接受 outgoing webhook token,接著是?token=...,再來是 headers。 - 接受的 header 形式:
x-synology-tokenx-webhook-tokenx-openclaw-tokenAuthorization: Bearer <token>
- 空白或缺少 token 會失敗關閉。
- Payload 可以是
application/x-www-form-urlencoded或application/json;token、user_id和text為必填。
環境變數
對於預設帳號,你可以使用 env vars:SYNOLOGY_CHAT_TOKENSYNOLOGY_CHAT_INCOMING_URLSYNOLOGY_NAS_HOSTSYNOLOGY_ALLOWED_USER_IDS(以逗號分隔)SYNOLOGY_RATE_LIMITOPENCLAW_BOT_NAME
SYNOLOGY_CHAT_INCOMING_URL 和 SYNOLOGY_NAS_HOST 不能從 workspace .env 設定;請參閱 Workspace .env 檔案。
DM 政策與存取控制
- 支援的
dmPolicy值:allowlist(預設)、open和disabled。Synology Chat 沒有配對流程;請將傳送者的數字 Synology user ID 加入allowedUserIds以核准。 allowedUserIds接受 Synology user ID 的清單(或以逗號分隔的字串)。- 在
allowlist模式中,空的allowedUserIds清單會被視為設定錯誤,且網路鉤子路由不會啟動。 dmPolicy: "open"只有在allowedUserIds包含"*"時才允許公開 DM;若有嚴格限制的項目,則只有符合的使用者可以聊天。open搭配空的allowedUserIds清單也會拒絕啟動該路由。dmPolicy: "disabled"會封鎖 DM。- 回覆收件者綁定預設會維持在穩定的數字
user_id。channels.synology-chat.dangerouslyAllowNameMatching: true是緊急相容模式,會重新啟用可變的使用者名稱/暱稱查找以進行回覆傳遞。
對外傳遞
使用數字 Synology Chat user ID 作為目標。接受synology-chat:、synology_chat: 和 synology: 前綴。
範例:
http 或 https,且私有或其他被封鎖的網路目標會在 OpenClaw 將 URL 轉送給 NAS 網路鉤子前被拒絕。
多帳號
多個 Synology Chat 帳號在channels.synology-chat.accounts 下受支援。
每個帳號都可以覆寫 token、incoming URL、網路鉤子路徑、DM 政策和限制。
私訊工作階段會依帳號與使用者隔離,因此同一個數字 user_id
在兩個不同的 Synology 帳號上不會共用 transcript 狀態。
請為每個啟用的帳號提供不同的 webhookPath。OpenClaw 會拒絕重複的精確路徑,
且在多帳號設定中,會拒絕啟動僅繼承共用網路鉤子路徑的具名帳號。
如果你有意需要具名帳號的 legacy 繼承,請在該帳號或 channels.synology-chat 設定
dangerouslyAllowInheritedWebhookPath: true,
但重複的精確路徑仍會失敗關閉並被拒絕。建議明確設定每帳號路徑。
安全性注意事項
- 請將
token保密,若外洩請輪換。 - 除非你明確信任自簽的本機 NAS 憑證,否則請保持
allowInsecureSsl: false。 - 傳入的網路鉤子請求會按 token 驗證,並依傳送者進行速率限制(
rateLimitPerMinute,預設 30)。 - 無效 token 檢查會使用固定時間的秘密比較並失敗關閉;重複的無效 token 嘗試會暫時鎖定來源 IP。
- 傳入訊息文字會針對已知的 prompt-injection 模式進行清理,並在 4000 個字元處截斷。
- 生產環境建議使用
dmPolicy: "allowlist"。 - 除非你明確需要 legacy username-based 回覆傳遞,否則請關閉
dangerouslyAllowNameMatching。 - 除非你明確接受多帳號設定中的共用路徑路由風險,否則請關閉
dangerouslyAllowInheritedWebhookPath。
疑難排解
Missing required fields (token, user_id, text):- outgoing webhook payload 缺少其中一個必填欄位
- 如果 Synology 在 headers 中傳送 token,請確保 gateway/proxy 保留這些 headers
Invalid token:- outgoing webhook secret 與
channels.synology-chat.token不相符 - request 打到錯誤的帳號/網路鉤子路徑
- reverse proxy 在 request 到達 OpenClaw 前移除了 token header
- outgoing webhook secret 與
Rate limit exceeded:- 來自同一來源的無效 token 嘗試過多,可能會暫時鎖定該來源
- 已驗證的傳送者也有另一個依使用者計算的訊息速率限制
Allowlist is empty. Configure allowedUserIds or use dmPolicy=open with allowedUserIds=["*"].:dmPolicy="allowlist"已啟用,但未設定任何使用者
User not authorized:- 傳送者的數字
user_id不在allowedUserIds中
- 傳送者的數字