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 una copia de trabajo local (flujos 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 (como se indicó anteriormente).
-
En el servidor de 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 un error 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 de Nextcloud; establezca
webhookPublicUrlcuando el Gateway esté 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 (almacenadas 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 de Nextcloud en una red privada/interna de confianza, habilite esta opción con
channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: true. - Con
apiUser/apiPasswordywebhookPublicUrlconfigurados,openclaw channels statussondea el bot y muestra una advertencia cuando 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 los ID 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(true de forma predeterminada),enabled(false desactiva la sala),allowFrom(lista de remitentes permitidos por sala),tools(anulaciones de herramientas permitidas/denegadas),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 mediante 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 las consultas de salas (detección de mensajes directos) y el sondeo de estado.channels.nextcloud-talk.apiPassword: contraseña de la API/aplicación para las consultas de salas.channels.nextcloud-talk.apiPasswordFile: ruta del archivo de 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 (ID de usuario).channels.nextcloud-talk.groupPolicy:allowlist | open | disabled(valor predeterminado: allowlist).channels.nextcloud-talk.groupAllowFrom: lista de remitentes permitidos en salas (ID de usuario); utilizaallowFromcomo alternativa cuando 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 del grupo (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, indexadas por ID de usuario (historyLimit).channels.nextcloud-talk.textChunkLimit: tamaño de los fragmentos de texto saliente en caracteres (valor predeterminado: 4000).channels.nextcloud-talk.streaming.chunkMode:length(valor predeterminado) onewlinepara dividir por líneas en blanco (límites de párrafo) 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 combinación de la transmisión por bloques.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/internos de Nextcloud superen la protección contra SSRF.channels.nextcloud-talk.accounts.<id>: anulaciones por cuenta (las mismas claves);defaultAccountselecciona el valor predeterminado. Las variables de entornoNEXTCLOUD_TALK_BOT_SECRET/NEXTCLOUD_TALK_API_PASSWORDsolo se aplican a la cuenta predeterminada.
Recursos relacionados
- 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