Canal Nextcloud Talk de OpenClaw
Conecta OpenClaw a Nextcloud Talk, la plataforma de comunicacion empresarial centrada en la privacidad integrada en el ecosistema Nextcloud. La integracion utiliza una arquitectura de bot basada en webhooks: Nextcloud Talk envia eventos de mensajes a tu Gateway mediante webhooks, y el bot responde a traves de la API REST de Talk. Esto permite que tu asistente de IA participe en mensajes directos, conversaciones en salas y reaccione a mensajes con emojis, todo dentro de tu entorno Nextcloud autoalojado.
Nextcloud Talk Funciones compatibles
Mensajes de texto
Compatible
Medios y archivos
Compatible
Reacciones
Compatible
Hilos
No compatible
Mensajes de voz
No compatible
Chat grupal
Compatible
Nextcloud Talk Requisitos previos
- Un servidor Nextcloud (v27.1+) con acceso de administrador y la aplicacion Talk instalada
- Un secreto compartido (40-128 caracteres) para la validacion de firma del webhook
- El endpoint de webhook del Gateway accesible desde el servidor Nextcloud (URL publica o red interna)
- OpenClaw Gateway instalado y en funcionamiento
- El plugin de Nextcloud Talk instalado mediante 'openclaw plugins install @openclaw/nextcloud-talk'
Nextcloud Talk Configuración rápida
Instalar el plugin de Nextcloud Talk
Ejecuta 'openclaw plugins install @openclaw/nextcloud-talk' para agregar soporte de Nextcloud Talk a tu Gateway.
Registrar el bot en tu servidor Nextcloud
Accede por SSH a tu servidor Nextcloud y ejecuta el comando OCC: ./occ talk:bot:install "OpenClaw" "<shared-secret>" "<webhook-url>" --feature reaction. Reemplaza <shared-secret> con un secreto seguro de al menos 40 caracteres, y <webhook-url> con el endpoint de webhook del Gateway accesible publicamente (por ejemplo, https://gateway.example.com:8788/webhook).
Habilitar el bot y configurar
En Nextcloud Talk, ve a la configuracion de la sala y habilita el bot OpenClaw. Luego agrega la configuracion del canal en ~/.openclaw/openclaw.json con tu baseUrl y botSecret. Inicia el Gateway con 'openclaw start' y envia un mensaje en la sala para verificar la conexion.
Nextcloud Talk Ejemplo de configuración
{
"channels": {
"nextcloud-talk": {
"enabled": true,
"baseUrl": "https://nextcloud.example.com",
"botSecret": "your-shared-secret-min-40-chars",
"dmPolicy": "pairing"
}
}
}Nextcloud Talk Documentación Detallada
Descripcion general de la arquitectura
Registro del bot via OCC
./occ talk:bot:install "OpenClaw" "a]72@Bz&V!LKMO*xhQib7p^E%yzGMG(8a7Bp*x6o" "https://gateway.example.com:8788/webhook" --feature reactionPoliticas de mensajes directos
{
"channels": {
"nextcloud-talk": {
"dmPolicy": "pairing",
"allowFrom": ["user-id-1", "user-id-2"]
}
}
}Configuracion de salas
{
"channels": {
"nextcloud-talk": {
"groupPolicy": "allowlist",
"rooms": {
"abc123token": {
"requireMention": true
},
"def456token": {
"requireMention": false
}
}
}
}
}Credenciales de API para deteccion de salas
{
"channels": {
"nextcloud-talk": {
"apiUser": "bot-service-account",
"apiPassword": "service-account-password",
"apiPasswordFile": "/run/secrets/nc-api-password"
}
}
}Configuracion del webhook
{
"channels": {
"nextcloud-talk": {
"webhookPort": 8788,
"webhookHost": "0.0.0.0",
"webhookPath": "/webhook",
"webhookPublicUrl": "https://gateway.example.com:8788/webhook"
}
}
}Manejo de mensajes y streaming
{
"channels": {
"nextcloud-talk": {
"textChunkLimit": 4000,
"chunkMode": "newline",
"blockStreaming": true,
"blockStreamingCoalesce": true,
"mediaMaxMb": 10
}
}
}Historial de conversaciones
{
"channels": {
"nextcloud-talk": {
"historyLimit": 20,
"dmHistoryLimit": 50
}
}
}Soporte de reacciones
Seguridad y firma de webhooks
Nextcloud Talk Referencia de Configuración
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Habilitar o deshabilitar el canal de Nextcloud Talk |
| baseUrl | string | "" | URL completa de tu servidor Nextcloud (por ejemplo, https://nextcloud.example.com) |
| botSecret | string | "" | Secreto compartido utilizado para la validacion de firma del webhook (debe coincidir con el secreto de instalacion OCC) |
| botSecretFile | string | "" | Ruta a un archivo que contiene el secreto compartido (alternativa al botSecret en linea) |
| apiUser | string | "" | Nombre de usuario de Nextcloud para llamadas a la API (utilizado para la deteccion del tipo de sala) |
| apiPassword | string | "" | Contrasena para la cuenta de usuario de la API |
| apiPasswordFile | string | "" | Ruta a un archivo que contiene la contrasena de la API (alternativa a apiPassword en linea) |
| dmPolicy | string | "pairing" | Politica de acceso a DM: 'pairing' (codigo de verificacion), 'open' (cualquier usuario) o 'disabled' (sin DMs) |
| allowFrom | string[] | [] | IDs de usuario de Nextcloud permitidos para enviar DM al bot (usa ["*"] para acceso abierto) |
| groupPolicy | string | "allowlist" | Politica de acceso a salas: 'allowlist' (solo salas habilitadas por moderadores) |
| webhookPort | number | 8788 | Puerto para el servidor HTTP de webhook integrado |
| webhookHost | string | "0.0.0.0" | Interfaz a la que enlazar el servidor de webhook |
| webhookPath | string | "/webhook" | Ruta URL para el endpoint del webhook |
| webhookPublicUrl | string | "" | URL publica completa para el endpoint del webhook (requerida detras de un proxy inverso) |
| historyLimit | number | 20 | Numero maximo de mensajes anteriores incluidos como contexto para conversaciones en salas |
| dmHistoryLimit | number | 50 | Numero maximo de mensajes anteriores incluidos como contexto para conversaciones por DM |
| textChunkLimit | number | 4000 | Numero maximo de caracteres por fragmento de mensaje |
| chunkMode | string | "length" | Modo de division de texto: 'length' (limite de caracteres) o 'newline' (limites de parrafo) |
| blockStreaming | boolean | false | Esperar la respuesta completa de la IA antes de enviar (sin streaming) |
| blockStreamingCoalesce | boolean | false | Combinar los fragmentos de streaming en un unico mensaje final |
| mediaMaxMb | number | 10 | Tamano maximo de archivo en MB para referencias de URLs multimedia |
Habilitar o deshabilitar el canal de Nextcloud Talk
URL completa de tu servidor Nextcloud (por ejemplo, https://nextcloud.example.com)
Secreto compartido utilizado para la validacion de firma del webhook (debe coincidir con el secreto de instalacion OCC)
Ruta a un archivo que contiene el secreto compartido (alternativa al botSecret en linea)
Nombre de usuario de Nextcloud para llamadas a la API (utilizado para la deteccion del tipo de sala)
Contrasena para la cuenta de usuario de la API
Ruta a un archivo que contiene la contrasena de la API (alternativa a apiPassword en linea)
Politica de acceso a DM: 'pairing' (codigo de verificacion), 'open' (cualquier usuario) o 'disabled' (sin DMs)
IDs de usuario de Nextcloud permitidos para enviar DM al bot (usa ["*"] para acceso abierto)
Politica de acceso a salas: 'allowlist' (solo salas habilitadas por moderadores)
Puerto para el servidor HTTP de webhook integrado
Interfaz a la que enlazar el servidor de webhook
Ruta URL para el endpoint del webhook
URL publica completa para el endpoint del webhook (requerida detras de un proxy inverso)
Numero maximo de mensajes anteriores incluidos como contexto para conversaciones en salas
Numero maximo de mensajes anteriores incluidos como contexto para conversaciones por DM
Numero maximo de caracteres por fragmento de mensaje
Modo de division de texto: 'length' (limite de caracteres) o 'newline' (limites de parrafo)
Esperar la respuesta completa de la IA antes de enviar (sin streaming)
Combinar los fragmentos de streaming en un unico mensaje final
Tamano maximo de archivo en MB para referencias de URLs multimedia
Nextcloud Talk Preguntas Frecuentes
Nextcloud Talk Solución de Problemas
La URL del webhook es inaccesible, el bot no esta habilitado en la sala o el secreto compartido no coincide.
El secreto compartido en openclaw.json no coincide con el utilizado durante la instalacion del bot.
El bot no ha sido habilitado por un moderador en la sala de destino, o requireMention esta en true y el bot no fue mencionado con @.
Las credenciales de API (apiUser, apiPassword) no estan configuradas.
El puerto de webhook configurado ya esta en uso o el enlace del host es invalido.