Developer and self-hosted
Nextcloud Talk
Nextcloud Talk es un plugin de canal descargable (@openclaw/nextcloud-talk) que conecta OpenClaw con una instancia de Nextcloud autoalojada mediante un bot Webhook de Talk. Se admiten mensajes directos, salas, reacciones y mensajes en Markdown; los archivos multimedia se envían como URL.
Instalación
openclaw plugins install @openclaw/nextcloud-talkUse la especificación simple del paquete para seguir la etiqueta de la versión oficial actual. Fije una versión exacta solo cuando necesite una instalación reproducible.
Desde un checkout local (flujos de trabajo de desarrollo):
openclaw plugins install ./path/to/local/nextcloud-talk-pluginReinicie el Gateway después de la instalación. Detalles: Plugins
Configuración rápida (principiantes)
-
Instale el plugin (consulte la sección anterior).
-
En el servidor Nextcloud, cree un bot:
bash ./occ talk:bot:install "OpenClaw" "<shared-secret>" "<webhook-url>" --feature webhook --feature response --feature reactionMantenga
--feature response: sin esta opción, las respuestas salientes fallan con el código 401. Repare un bot existente con./occ talk:bot:state --feature webhook --feature response --feature reaction <botId> 1. -
Active el bot en la configuración de la sala de destino.
-
Configure OpenClaw:
- Configuración:
channels.nextcloud-talk.baseUrl+channels.nextcloud-talk.botSecret - O mediante variables de entorno:
NEXTCLOUD_TALK_BOT_SECRET(solo para la cuenta predeterminada)
Configuración mediante la CLI (
--url/--tokenson alias de los campos explícitos;nc-talkyncfuncionan como alias del canal):bash openclaw channels add --channel nextcloud-talk \ --url https://cloud.example.com \ --token "<shared-secret>"Campos explícitos equivalentes:
bash openclaw channels add --channel nextcloud-talk \ --base-url https://cloud.example.com \ --secret "<shared-secret>"Secreto almacenado en un archivo:
bash openclaw channels add --channel nextcloud-talk \ --base-url https://cloud.example.com \ --secret-file /path/to/nextcloud-talk-secret - Configuración:
-
Reinicie el Gateway (o finalice la configuración).
Configuración mínima:
{ channels: { "nextcloud-talk": { enabled: true, baseUrl: "https://cloud.example.com", botSecret: "shared-secret", dmPolicy: "pairing", }, },}Notas
- Los bots no pueden iniciar mensajes directos. El usuario debe enviar primero un mensaje al bot.
- La URL del Webhook debe ser accesible desde el servidor Nextcloud; establezca
webhookPublicUrlcuando el Gateway se encuentre detrás de un proxy. Las solicitudes del Webhook se firman mediante HMAC-SHA256 con el secreto del bot; las firmas no válidas se rechazan y se someten a limitación de frecuencia. - La API del bot no admite la carga de archivos multimedia; los archivos multimedia salientes se añaden como una línea
Attachment: <url>. - La carga útil del Webhook no distingue los mensajes directos de las salas; establezca
apiUser+apiPasswordpara activar las consultas del tipo de sala (se almacenan en caché durante unos 5 minutos). Sin estas opciones, todas las conversaciones se tratan como salas. - Las solicitudes salientes pasan por la protección contra SSRF. Para un host Nextcloud situado en una red privada o interna de confianza, habilítelo con
channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: true. - Cuando se establecen
apiUser/apiPasswordywebhookPublicUrl,openclaw channels statuscomprueba el bot y advierte si falta la funciónresponse.
Control de acceso (mensajes directos)
- Valor predeterminado:
channels.nextcloud-talk.dmPolicy = "pairing". Los remitentes desconocidos reciben un código de emparejamiento. - Apruebe mediante:
openclaw pairing list nextcloud-talkopenclaw pairing approve nextcloud-talk <CODE>
- Mensajes directos públicos:
channels.nextcloud-talk.dmPolicy="open"junto conchannels.nextcloud-talk.allowFrom=["*"]. allowFromsolo coincide con identificadores de usuario de Nextcloud (en minúsculas); los nombres para mostrar se ignoran.
Salas (grupos)
- Valor predeterminado:
channels.nextcloud-talk.groupPolicy = "allowlist"(requiere una mención). - Añada salas a la lista de permitidas con
channels.nextcloud-talk.rooms, usando el token de la sala como clave;"*"establece un valor predeterminado comodín:
{ channels: { "nextcloud-talk": { rooms: { "room-token": { requireMention: true }, }, }, },}- Claves por sala:
requireMention(valor predeterminado: true),enabled(false desactiva la sala),allowFrom(lista de remitentes permitidos por sala),tools(anulaciones de herramientas para permitir o denegar),skills(limita las Skills cargadas),systemPrompt. - Para no permitir ninguna sala, mantenga vacía la lista de permitidas o establezca
channels.nextcloud-talk.groupPolicy="disabled".
Capacidades
| Función | Estado |
|---|---|
| Mensajes directos | Compatible |
| Salas | Compatible |
| Hilos | No compatible |
| Archivos multimedia | Solo URL |
| Reacciones | Compatible |
| Comandos nativos | No compatible |
Referencia de configuración (Nextcloud Talk)
Configuración completa: Configuración
Opciones del proveedor:
channels.nextcloud-talk.enabled: activa o desactiva el inicio del canal.channels.nextcloud-talk.baseUrl: URL de la instancia de Nextcloud.channels.nextcloud-talk.botSecret: secreto compartido del bot (cadena o referencia a un secreto).channels.nextcloud-talk.botSecretFile: ruta del secreto en un archivo normal. Se rechazan los enlaces simbólicos.channels.nextcloud-talk.apiUser: usuario de la API para consultar salas (detección de mensajes directos) y comprobar el estado.channels.nextcloud-talk.apiPassword: contraseña de la API o de la aplicación para consultar salas.channels.nextcloud-talk.apiPasswordFile: ruta del archivo de la contraseña de la API.channels.nextcloud-talk.webhookPort: puerto del receptor del Webhook (valor predeterminado: 8788).channels.nextcloud-talk.webhookHost: host del Webhook (valor predeterminado: 0.0.0.0).channels.nextcloud-talk.webhookPath: ruta del Webhook (valor predeterminado: /nextcloud-talk-webhook).channels.nextcloud-talk.webhookPublicUrl: URL del Webhook accesible externamente.channels.nextcloud-talk.dmPolicy:pairing | allowlist | open | disabled(valor predeterminado: pairing).openrequiereallowFrom=["*"].channels.nextcloud-talk.allowFrom: lista de mensajes directos permitidos (identificadores de usuario).channels.nextcloud-talk.groupPolicy:allowlist | open | disabled(valor predeterminado: allowlist).channels.nextcloud-talk.groupAllowFrom: lista de remitentes permitidos en las salas (identificadores de usuario); recurre aallowFromsi no se establece.channels.nextcloud-talk.rooms: configuración y lista de permitidos por sala (consulte la sección anterior).- Se puede hacer referencia a grupos estáticos de acceso de remitentes desde
allowFromygroupAllowFrommedianteaccessGroup:<name>. channels.nextcloud-talk.historyLimit: límite del historial de grupos (0 lo desactiva).channels.nextcloud-talk.dmHistoryLimit: límite del historial de mensajes directos (0 lo desactiva).channels.nextcloud-talk.dms: anulaciones por mensaje directo, usando el identificador de usuario como clave (historyLimit).channels.nextcloud-talk.textChunkLimit: tamaño de los fragmentos de texto salientes en caracteres (valor predeterminado: 4000).channels.nextcloud-talk.streaming.chunkMode:length(valor predeterminado) onewlinepara dividir por líneas en blanco (límites de párrafos) antes de fragmentar por longitud.channels.nextcloud-talk.streaming.block.enabled: activa o desactiva la transmisión por bloques para este canal.channels.nextcloud-talk.streaming.block.coalesce: ajuste de la combinación de bloques durante la transmisión.channels.nextcloud-talk.responsePrefix: prefijo de las respuestas salientes.channels.nextcloud-talk.markdown.tables: modo de representación de tablas de Markdown (off | bullets | code | block).channels.nextcloud-talk.mediaMaxMb: límite de archivos multimedia entrantes (MB).channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: permite que los hosts privados o internos de Nextcloud superen la protección contra SSRF.channels.nextcloud-talk.accounts.<id>: anulaciones por cuenta (las mismas claves);defaultAccountselecciona la cuenta predeterminada. Las variables de entornoNEXTCLOUD_TALK_BOT_SECRET/NEXTCLOUD_TALK_API_PASSWORDsolo se aplican a la cuenta predeterminada.
Contenido relacionado
- Descripción general de los canales — todos los canales compatibles
- Emparejamiento — autenticación de mensajes directos y flujo de emparejamiento
- Grupos — comportamiento de los chats grupales y requisito de menciones
- Enrutamiento de canales — enrutamiento de sesiones para mensajes
- Seguridad — modelo de acceso y refuerzo de la seguridad