@openclaw/nextcloud-talk) que conecta OpenClaw con una instancia de Nextcloud autoalojada mediante un bot de webhook de Talk. Se admiten mensajes directos, salas, reacciones y mensajes markdown; los medios se envían como URL.
Instalación
Configuración rápida (principiantes)
- Instala el plugin (arriba).
-
En tu servidor Nextcloud, crea un bot:
Mantén
--feature response: sin eso, las respuestas salientes fallan con 401. Repara un bot existente con./occ talk:bot:state --feature webhook --feature response --feature reaction <botId> 1. - Habilita el bot en la configuración de la sala de destino.
-
Configura OpenClaw:
- Configuración:
channels.nextcloud-talk.baseUrl+channels.nextcloud-talk.botSecret - O env:
NEXTCLOUD_TALK_BOT_SECRET(solo cuenta predeterminada)
--url/--tokenson alias de los campos explícitos;nc-talkyncfuncionan como alias de canal):Campos explícitos equivalentes:Secreto respaldado por archivo: - Configuración:
- Reinicia el gateway (o finaliza la configuración).
Notas
- Los bots no pueden iniciar MD. El usuario debe enviar primero un mensaje al bot.
- La URL del webhook debe ser accesible desde el servidor Nextcloud; configura
webhookPublicUrlcuando el gateway esté detrás de un proxy. Las solicitudes de Webhook se firman con HMAC-SHA256 usando el secreto del bot; las firmas no válidas se rechazan y se limitan por tasa. - La API del bot no admite cargas de medios; los medios salientes se agregan como una línea
Attachment: <url>. - La carga útil del webhook no distingue los MD de las salas; configura
apiUser+apiPasswordpara habilitar búsquedas de tipo de sala (almacenadas en caché unos 5 minutos). Sin ellos, cada conversación se trata como una sala. - Las solicitudes salientes pasan por la protección SSRF. Para un host Nextcloud en una red privada/interna de confianza, actívalo con
channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: true. - Con
apiUser/apiPasswordywebhookPublicUrlconfigurados,openclaw channels statuscomprueba el bot y advierte cuando falta la característicaresponse.
Control de acceso (MD)
- Predeterminado:
channels.nextcloud-talk.dmPolicy = "pairing". Los remitentes desconocidos reciben un código de emparejamiento. - Aprobar mediante:
openclaw pairing list nextcloud-talkopenclaw pairing approve nextcloud-talk <CODE>
- MD públicos:
channels.nextcloud-talk.dmPolicy="open"máschannels.nextcloud-talk.allowFrom=["*"]. allowFromcoincide solo con los ID de usuario de Nextcloud (en minúsculas); los nombres para mostrar se ignoran.
Salas (grupos)
- Predeterminado:
channels.nextcloud-talk.groupPolicy = "allowlist"(protegido por menciones). - Permite salas con
channels.nextcloud-talk.rooms, indexadas por token de sala;"*"establece un valor predeterminado comodín:
- Claves por sala:
requireMention(predeterminado true),enabled(false deshabilita la sala),allowFrom(lista de permitidos de remitentes por sala),tools(anulaciones para permitir/denegar herramientas),skills(limita las Skills cargadas),systemPrompt. - Para no permitir ninguna sala, mantén la lista de permitidos vacía o configura
channels.nextcloud-talk.groupPolicy="disabled".
Capacidades
| Característica | Estado |
|---|---|
| Mensajes directos | Admitido |
| Salas | Admitido |
| Hilos | No admitido |
| Medios | Solo URL |
| Reacciones | Admitido |
| Comandos nativos | No admitido |
Referencia de configuración (Nextcloud Talk)
Configuración completa: Configuración Opciones del proveedor:channels.nextcloud-talk.enabled: habilita/deshabilita 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 secreta).channels.nextcloud-talk.botSecretFile: ruta de secreto de archivo regular. Los enlaces simbólicos se rechazan.channels.nextcloud-talk.apiUser: usuario de API para búsquedas de salas (detección de MD) y la comprobación de estado.channels.nextcloud-talk.apiPassword: contraseña de API/app para búsquedas de salas.channels.nextcloud-talk.apiPasswordFile: ruta del archivo de contraseña de API.channels.nextcloud-talk.webhookPort: puerto del listener de webhook (predeterminado: 8788).channels.nextcloud-talk.webhookHost: host del webhook (predeterminado: 0.0.0.0).channels.nextcloud-talk.webhookPath: ruta del webhook (predeterminado: /nextcloud-talk-webhook).channels.nextcloud-talk.webhookPublicUrl: URL de webhook accesible externamente.channels.nextcloud-talk.dmPolicy:pairing | allowlist | open | disabled(predeterminado: pairing).openrequiereallowFrom=["*"].channels.nextcloud-talk.allowFrom: lista de permitidos de MD (ID de usuario).channels.nextcloud-talk.groupPolicy:allowlist | open | disabled(predeterminado: allowlist).channels.nextcloud-talk.groupAllowFrom: lista de permitidos de remitentes de sala (ID de usuario); recurre aallowFromcuando no está configurado.channels.nextcloud-talk.rooms: configuración por sala y lista de permitidos (ver arriba).- Los grupos de acceso de remitentes estáticos se pueden referenciar desde
allowFromygroupAllowFromconaccessGroup:<name>. channels.nextcloud-talk.historyLimit: límite de historial de grupo (0 lo deshabilita).channels.nextcloud-talk.dmHistoryLimit: límite de historial de MD (0 lo deshabilita).channels.nextcloud-talk.dms: anulaciones por MD indexadas por ID de usuario (historyLimit).channels.nextcloud-talk.textChunkLimit: tamaño del fragmento de texto saliente en caracteres (predeterminado: 4000).channels.nextcloud-talk.chunkMode:length(predeterminado) onewlinepara dividir por líneas en blanco (límites de párrafo) antes de fragmentar por longitud.channels.nextcloud-talk.blockStreaming: deshabilita el streaming por bloques para este canal.channels.nextcloud-talk.blockStreamingCoalesce: ajuste de coalescencia del streaming por bloques.channels.nextcloud-talk.responsePrefix: prefijo de respuesta saliente.channels.nextcloud-talk.markdown.tables: modo de renderizado de tablas markdown (off | bullets | code | block).channels.nextcloud-talk.mediaMaxMb: límite de medios entrantes (MB).channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: permite que hosts Nextcloud privados/internos pasen la protección SSRF.channels.nextcloud-talk.accounts.<id>: anulaciones por cuenta (mismas claves);defaultAccountelige la predeterminada. Las variables de entornoNEXTCLOUD_TALK_BOT_SECRET/NEXTCLOUD_TALK_API_PASSWORDse aplican solo a la cuenta predeterminada.
Relacionado
- Descripción general de canales — todos los canales admitidos
- Emparejamiento — autenticación de MD y flujo de emparejamiento
- Grupos — comportamiento del chat grupal y control por menciones
- Enrutamiento de canales — enrutamiento de sesión para mensajes
- Seguridad — modelo de acceso y endurecimiento