Instalación
Configuración rápida
- Instala el Plugin (arriba).
- En las integraciones de Synology Chat:
- Crea un Webhook entrante y copia su URL.
- Crea un Webhook saliente con tu token secreto.
- Apunta la URL del Webhook saliente a tu Gateway de OpenClaw:
https://gateway-host/webhook/synologyde forma predeterminada.- O tu
channels.synology-chat.webhookPathpersonalizado.
- Termina la configuración en OpenClaw. Synology Chat aparece en la misma lista de configuración de canales en ambos flujos:
- Guiado:
openclaw onboarduopenclaw channels add - Directo:
openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
- Guiado:
- Reinicia el Gateway y envía un mensaje directo al bot de Synology Chat.
- OpenClaw acepta el token del Webhook saliente desde
body.token, luego?token=..., y luego los encabezados. - Formas de encabezado aceptadas:
x-synology-tokenx-webhook-tokenx-openclaw-tokenAuthorization: Bearer <token>
- Los tokens vacíos o ausentes fallan de forma cerrada.
- Las cargas pueden ser
application/x-www-form-urlencodedoapplication/json;token,user_idytextson obligatorios.
Variables de entorno
Para la cuenta predeterminada, puedes usar variables de entorno:SYNOLOGY_CHAT_TOKENSYNOLOGY_CHAT_INCOMING_URLSYNOLOGY_NAS_HOSTSYNOLOGY_ALLOWED_USER_IDS(separados por comas)SYNOLOGY_RATE_LIMITOPENCLAW_BOT_NAME
SYNOLOGY_CHAT_INCOMING_URL y SYNOLOGY_NAS_HOST no se pueden establecer desde un .env de workspace; consulta archivos .env de workspace.
Política de mensajes directos y control de acceso
- Valores de
dmPolicyadmitidos:allowlist(predeterminado),openydisabled. Synology Chat no tiene flujo de emparejamiento; aprueba remitentes agregando sus ID numéricos de usuario de Synology aallowedUserIds. allowedUserIdsacepta una lista (o una cadena separada por comas) de ID de usuario de Synology.- En modo
allowlist, una listaallowedUserIdsvacía se trata como configuración incorrecta y la ruta del Webhook no se iniciará. dmPolicy: "open"permite mensajes directos públicos solo cuandoallowedUserIdsincluye"*"; con entradas restrictivas, solo pueden chatear los usuarios coincidentes.opencon una listaallowedUserIdsvacía también se niega a iniciar la ruta.dmPolicy: "disabled"bloquea los mensajes directos.- La vinculación del destinatario de la respuesta permanece en el
user_idnumérico estable de forma predeterminada.channels.synology-chat.dangerouslyAllowNameMatching: truees un modo de compatibilidad de emergencia que vuelve a habilitar la búsqueda por nombre de usuario/apodo mutable para la entrega de respuestas.
Entrega saliente
Usa ID numéricos de usuario de Synology Chat como destinos. Se aceptan los prefijossynology-chat:, synology_chat: y synology:.
Ejemplos:
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.
Multicuenta
Se admiten varias cuentas de Synology Chat enchannels.synology-chat.accounts.
Cada cuenta puede sustituir el token, la URL entrante, la ruta de 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 de Synology distintas no comparte el estado de la transcripción.
Asigna a cada cuenta habilitada un webhookPath distinto. OpenClaw rechaza rutas exactas duplicadas
y se niega a iniciar cuentas con nombre que solo heredan una ruta de Webhook compartida en configuraciones multicuenta.
Si necesitas intencionalmente la herencia heredada para una cuenta con nombre, establece
dangerouslyAllowInheritedWebhookPath: true en esa cuenta o en channels.synology-chat,
pero las rutas exactas duplicadas siguen rechazándose de forma cerrada. Prefiere rutas explícitas por cuenta.
Notas de seguridad
- Mantén
tokenen secreto y rótalo si se filtra. - Mantén
allowInsecureSsl: falsesalvo que confíes explícitamente en un certificado local autofirmado del NAS. - Las solicitudes de Webhook entrantes se verifican con token y se limitan por remitente (
rateLimitPerMinute, valor predeterminado 30). - Las comprobaciones de tokens no válidos usan comparación de secretos en tiempo constante y fallan de forma cerrada; los intentos repetidos con tokens no válidos bloquean temporalmente la IP de origen.
- El texto de los mensajes entrantes se sanea contra patrones conocidos de inyección de prompts y se trunca a 4000 caracteres.
- Prefiere
dmPolicy: "allowlist"para producción. - Mantén
dangerouslyAllowNameMatchingdesactivado salvo que necesites explícitamente la entrega de respuestas heredada basada en nombre de usuario. - Mantén
dangerouslyAllowInheritedWebhookPathdesactivado salvo que aceptes explícitamente el riesgo de enrutamiento por ruta compartida en una configuración multicuenta.
Solución de problemas
Missing required fields (token, user_id, text):- a la carga del Webhook saliente le falta uno de los campos obligatorios
- si Synology envía el token en encabezados, asegúrate de que el gateway/proxy preserve esos encabezados
Invalid token:- el secreto del Webhook saliente no coincide con
channels.synology-chat.token - la solicitud está llegando a la cuenta/ruta de Webhook equivocada
- un proxy inverso quitó 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 de frecuencia de mensajes por usuario independiente
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 está enallowedUserIds
- el
Relacionado
- Descripción general de canales — todos los canales admitidos
- Grupos — comportamiento de chat grupal y control de menciones
- Enrutamiento de canales — enrutamiento de sesiones para mensajes
- Seguridad — modelo de acceso y endurecimiento