Developer and self-hosted
Synology Chat
Synology Chat підключається до OpenClaw через пару Webhook: вихідний Webhook Synology Chat надсилає вхідні прямі повідомлення до Gateway, а відповіді повертаються через вхідний Webhook Synology Chat.
Статус: офіційний Plugin, установлюється окремо. Підтримуються лише прямі повідомлення; підтримується надсилання тексту й файлів за URL-адресами.
Установлення
openclaw plugins install @openclaw/synology-chatЛокальна робоча копія (під час запуску з репозиторію git):
openclaw plugins install ./path/to/local/synology-chat-pluginДокладніше: Плагіни
Швидке налаштування
- Установіть Plugin (див. вище).
- В інтеграціях Synology Chat:
- Створіть вхідний Webhook і скопіюйте його URL-адресу.
- Створіть вихідний Webhook із вашим секретним токеном.
- Спрямуйте URL-адресу вихідного Webhook на ваш OpenClaw Gateway:
- Типово:
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>
- Покроково:
- Перезапустіть Gateway і надішліть пряме повідомлення боту Synology Chat.
Відомості про автентифікацію Webhook:
- OpenClaw приймає токен вихідного Webhook спочатку з
body.token, потім із?token=..., а потім із заголовків. - Підтримувані форми заголовків:
x-synology-tokenx-webhook-tokenx-openclaw-tokenAuthorization: Bearer <token>
- Порожні або відсутні токени призводять до безпечної відмови.
- Корисне навантаження може мати тип
application/x-www-form-urlencodedабоapplication/json; поляtoken,user_idіtextє обов’язковими.
Мінімальна конфігурація:
{ 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_TOKENSYNOLOGY_CHAT_INCOMING_URLSYNOLOGY_NAS_HOSTSYNOLOGY_ALLOWED_USER_IDS(через кому)SYNOLOGY_RATE_LIMITOPENCLAW_BOT_NAME
Значення конфігурації мають пріоритет над змінними середовища.
SYNOLOGY_CHAT_INCOMING_URL і SYNOLOGY_NAS_HOST не можна задавати у файлі .env робочого простору; див. Файли .env робочого простору.
Політика прямих повідомлень і контроль доступу
- Підтримувані значення
dmPolicy:allowlist(за замовчуванням),openіdisabled. Synology Chat не має процесу спарювання; схвалюйте відправників, додаючи їхні числові ідентифікатори користувачів Synology доallowedUserIds. allowedUserIdsприймає список (або рядок зі значеннями через кому) ідентифікаторів користувачів Synology.- У режимі
allowlistпорожній списокallowedUserIdsвважається помилковою конфігурацією, і маршрут Webhook не запускається. dmPolicy: "open"дозволяє загальнодоступні прямі повідомлення лише тоді, колиallowedUserIdsмістить"*"; якщо вказано обмежувальні записи, спілкуватися можуть лише відповідні користувачі. Режимopenіз порожнім спискомallowedUserIdsтакож не дозволяє запустити маршрут.dmPolicy: "disabled"блокує прямі повідомлення.- Прив’язка одержувача відповіді за замовчуванням залишається за стабільним числовим
user_id.channels.synology-chat.dangerouslyAllowNameMatching: true— це аварійний режим сумісності, який повторно вмикає пошук за змінним іменем користувача або псевдонімом для доставлення відповідей.
Вихідна доставка
Використовуйте числові ідентифікатори користувачів Synology Chat як адресатів. Підтримуються префікси synology-chat:, synology_chat: і synology:.
Приклади:
openclaw message send --channel synology-chat --target 123456 --message "Hello from OpenClaw"openclaw message send --channel synology-chat --target synology-chat:123456 --message "Hello again"openclaw message send --channel synology-chat --target synology:123456 --message "Short prefix"Вихідний текст розбивається на частини по 2000 символів. Надсилання медіафайлів підтримується через доставлення файлів за URL-адресами: NAS завантажує та прикріплює файл (до 32 МБ). URL-адреси вихідних файлів мають використовувати http або https, а приватні чи іншим чином заблоковані мережеві адреси відхиляються до того, як OpenClaw передасть URL-адресу до Webhook NAS.
Кілька облікових записів
У channels.synology-chat.accounts підтримується кілька облікових записів Synology Chat.
Кожен обліковий запис може перевизначати токен, URL-адресу вхідного Webhook, шлях Webhook, політику прямих повідомлень і обмеження.
Сеанси прямих повідомлень ізольовані для кожного облікового запису й користувача, тому однаковий числовий user_id
у двох різних облікових записах Synology не використовує спільний стан історії повідомлень.
Призначте кожному ввімкненому обліковому запису окремий webhookPath. OpenClaw відхиляє повністю однакові шляхи
та не запускає іменовані облікові записи, які в конфігурації з кількома обліковими записами лише успадковують спільний шлях Webhook.
Якщо іменованому обліковому запису навмисно потрібне успадкування для сумісності зі старою поведінкою, установіть
dangerouslyAllowInheritedWebhookPath: true для цього облікового запису або в channels.synology-chat,
але повністю однакові шляхи однаково відхиляються з безпечною відмовою. Надавайте перевагу явним шляхам для кожного облікового запису.
{ 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у таємниці та змініть його в разі витоку. - Залишайте
allowInsecureSsl: false, якщо ви явно не довіряєте самопідписаному локальному сертифікату NAS. - Запити вхідного Webhook перевіряються за токеном і обмежуються за частотою для кожного відправника (
rateLimitPerMinute, за замовчуванням 30). - Перевірки недійсних токенів використовують порівняння секретів за сталий час і завершуються безпечною відмовою; повторні спроби з недійсним токеном тимчасово блокують вихідну IP-адресу.
- Текст вхідного повідомлення очищується від відомих шаблонів ін’єкції підказок і скорочується до 4000 символів.
- Для робочого середовища надавайте перевагу
dmPolicy: "allowlist". - Не вмикайте
dangerouslyAllowNameMatching, якщо вам явно не потрібне доставлення відповідей за іменами користувачів для сумісності зі старою поведінкою. - Не вмикайте
dangerouslyAllowInheritedWebhookPath, якщо ви явно не погоджуєтеся з ризиком маршрутизації через спільний шлях у конфігурації з кількома обліковими записами.
Усунення несправностей
Missing required fields (token, user_id, text):- у корисному навантаженні вихідного Webhook відсутнє одне з обов’язкових полів
- якщо Synology надсилає токен у заголовках, переконайтеся, що Gateway або проксі зберігає ці заголовки
Invalid token:- секрет вихідного Webhook не відповідає
channels.synology-chat.token - запит надходить до неправильного облікового запису або шляху Webhook
- зворотний проксі видалив заголовок токена до того, як запит досяг OpenClaw
- секрет вихідного Webhook не відповідає
Rate limit exceeded:- надто багато спроб із недійсним токеном з одного джерела можуть тимчасово заблокувати це джерело
- для автентифікованих відправників також діє окреме обмеження частоти повідомлень для кожного користувача
Allowlist is empty. Configure allowedUserIds or use dmPolicy=open with allowedUserIds=["*"].:dmPolicy="allowlist"увімкнено, але жодного користувача не налаштовано
User not authorized:- числового
user_idвідправника немає вallowedUserIds
- числового
Пов’язані матеріали
- Огляд каналів — усі підтримувані канали
- Групи — поведінка групових чатів і обмеження за згадками
- Маршрутизація каналів — маршрутизація сеансів для повідомлень
- Безпека — модель доступу та посилення захисту