Developer and self-hosted
Chat de Synology
Synology Chat se conecta a OpenClaw mediante un par de Webhooks: un Webhook saliente de Synology Chat publica los mensajes directos entrantes en el Gateway, y las respuestas regresan mediante un Webhook entrante de Synology Chat.
Estado: Plugin oficial, instalado por separado. Solo mensajes directos; se admiten envíos de texto y archivos mediante URL.
Instalación
openclaw plugins install @openclaw/synology-chatCopia de trabajo local (cuando se ejecuta desde un repositorio git):
openclaw plugins install ./path/to/local/synology-chat-pluginDetalles: Plugins
Configuración rápida
- Instale el Plugin (indicado arriba).
- En las integraciones de Synology Chat:
- Cree un Webhook entrante y copie su URL.
- Cree un Webhook saliente con su token secreto.
- Dirija la URL del Webhook saliente a su Gateway de OpenClaw:
https://gateway-host/webhook/synologyde forma predeterminada.- O su ruta personalizada
channels.synology-chat.webhookPath.
- Finalice la configuración en OpenClaw. Synology Chat aparece en la misma lista de configuración de canales en ambos flujos:
- Guiado:
openclaw onboardoopenclaw channels add - Directo:
openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
- Guiado:
- Reinicie el Gateway y envíe un mensaje directo al bot de Synology Chat.
Detalles de autenticación del Webhook:
- OpenClaw acepta el token del Webhook saliente desde
body.token, después desde?token=...y, por último, desde los encabezados. - Formatos de encabezado aceptados:
x-synology-tokenx-webhook-tokenx-openclaw-tokenAuthorization: Bearer <token>
- Los tokens vacíos o ausentes provocan un rechazo seguro.
- Las cargas útiles pueden ser
application/x-www-form-urlencodedoapplication/json; se requierentoken,user_idytext.
Configuración mínima:
{ 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, }, },}Variables de entorno
Para la cuenta predeterminada, puede utilizar variables de entorno:
SYNOLOGY_CHAT_TOKENSYNOLOGY_CHAT_INCOMING_URLSYNOLOGY_NAS_HOSTSYNOLOGY_ALLOWED_USER_IDS(separados por comas)SYNOLOGY_RATE_LIMITOPENCLAW_BOT_NAME
Los valores de configuración prevalecen sobre las variables de entorno.
SYNOLOGY_CHAT_INCOMING_URL y SYNOLOGY_NAS_HOST no pueden establecerse desde un archivo .env del espacio de trabajo; consulte Archivos .env del espacio de trabajo.
Política de mensajes directos y control de acceso
- Valores admitidos de
dmPolicy:allowlist(predeterminado),openydisabled. Synology Chat no dispone de un flujo de vinculación; autorice a los remitentes añadiendo sus identificadores numéricos de usuario de Synology aallowedUserIds. allowedUserIdsacepta una lista (o una cadena separada por comas) de identificadores de usuario de Synology.- En el modo
allowlist, una listaallowedUserIdsvacía se considera una configuración incorrecta y la ruta del Webhook no se iniciará. dmPolicy: "open"permite mensajes directos públicos únicamente cuandoallowedUserIdsincluye"*"; con entradas restrictivas, solo pueden conversar los usuarios coincidentes. El modoopencon una listaallowedUserIdsvacía también impide que se inicie la ruta.dmPolicy: "disabled"bloquea los mensajes directos.- De forma predeterminada, la vinculación del destinatario de las respuestas permanece asociada al
user_idnumérico estable.channels.synology-chat.dangerouslyAllowNameMatching: truees un modo de compatibilidad de emergencia que vuelve a habilitar la búsqueda mediante nombres de usuario o apodos modificables para entregar respuestas.
Entrega saliente
Utilice identificadores numéricos de usuario de Synology Chat como destinos. Se aceptan los prefijos synology-chat:, synology_chat: y synology:.
Ejemplos:
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"El texto saliente se divide en fragmentos de 2000 caracteres. Se admite el envío de contenido multimedia mediante la entrega de archivos basada en URL: el NAS descarga y adjunta el archivo (máximo de 32 MB). Las URL de archivos salientes deben utilizar http o https, y los destinos de red privados o bloqueados de otro modo se rechazan antes de que OpenClaw reenvíe la URL al Webhook del NAS.
Varias cuentas
Se admiten varias cuentas de Synology Chat en channels.synology-chat.accounts.
Cada cuenta puede reemplazar el token, la URL entrante, la ruta del Webhook, la política de mensajes directos y los límites.
Las sesiones de mensajes directos se aíslan por cuenta y usuario, por lo que el mismo user_id numérico
en dos cuentas diferentes de Synology no comparte el estado de la transcripción.
Asigne a cada cuenta habilitada un webhookPath distinto. OpenClaw rechaza las rutas exactas duplicadas
y se niega a iniciar cuentas con nombre que solo hereden una ruta de Webhook compartida en configuraciones con varias cuentas.
Si necesita intencionadamente la herencia heredada para una cuenta con nombre, establezca
dangerouslyAllowInheritedWebhookPath: true en esa cuenta o en channels.synology-chat,
pero las rutas exactas duplicadas se siguen rechazando de forma segura. Prefiera rutas explícitas para cada cuenta.
{ 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"], }, }, }, },}Notas de seguridad
- Mantenga
tokenen secreto y rótelo si se filtra. - Mantenga
allowInsecureSsl: falsesalvo que confíe explícitamente en un certificado local autofirmado del NAS. - Las solicitudes de Webhook entrantes se verifican mediante token y se limitan por remitente (
rateLimitPerMinute, 30 de forma predeterminada). - Las comprobaciones de tokens no válidos utilizan una comparación de secretos en tiempo constante y aplican un rechazo seguro; los intentos repetidos con tokens no válidos bloquean temporalmente la dirección IP de origen.
- El texto de los mensajes entrantes se depura para detectar patrones conocidos de inyección de instrucciones y se trunca a 4000 caracteres.
- Prefiera
dmPolicy: "allowlist"en producción. - Mantenga
dangerouslyAllowNameMatchingdesactivado salvo que necesite explícitamente la entrega de respuestas heredada basada en nombres de usuario. - Mantenga
dangerouslyAllowInheritedWebhookPathdesactivado salvo que acepte explícitamente el riesgo del enrutamiento mediante rutas compartidas en una configuración con varias cuentas.
Solución de problemas
Missing required fields (token, user_id, text):- a la carga útil del Webhook saliente le falta uno de los campos obligatorios
- si Synology envía el token en los encabezados, asegúrese de que el gateway/proxy conserve esos encabezados
Invalid token:- el secreto del Webhook saliente no coincide con
channels.synology-chat.token - la solicitud está llegando a una cuenta o ruta de Webhook incorrecta
- un proxy inverso eliminó el encabezado del token antes de que la solicitud llegara a OpenClaw
- el secreto del Webhook saliente no coincide con
Rate limit exceeded:- demasiados intentos con tokens no válidos desde el mismo origen pueden bloquear temporalmente ese origen
- los remitentes autenticados también tienen un límite independiente de mensajes por usuario
Allowlist is empty. Configure allowedUserIds or use dmPolicy=open with allowedUserIds=["*"].:dmPolicy="allowlist"está habilitado, pero no hay usuarios configurados
User not authorized:- el
user_idnumérico del remitente no figura enallowedUserIds
- el
Temas relacionados
- Descripción general de los canales — todos los canales compatibles
- Grupos — comportamiento del chat grupal y control mediante menciones
- Enrutamiento de canales — enrutamiento de sesiones para mensajes
- Seguridad — modelo de acceso y refuerzo de la seguridad