Canal Nextcloud Talk do OpenClaw
Conecte o OpenClaw ao Nextcloud Talk, a plataforma de comunicação empresarial focada em privacidade integrada ao ecossistema Nextcloud. A integração utiliza uma arquitetura de bot baseada em webhooks — o Nextcloud Talk envia eventos de mensagem ao seu Gateway via webhooks, e o bot responde por meio da API REST do Talk. Isso permite que seu assistente de IA participe de mensagens diretas, conversas em salas e reaja a mensagens com emoji, tudo dentro do seu ambiente Nextcloud auto-hospedado.
Nextcloud Talk Recursos suportados
Mensagens de texto
Suportado
Mídia e arquivos
Suportado
Reações
Suportado
Threads
Não suportado
Mensagens de voz
Não suportado
Chat em grupo
Suportado
Nextcloud Talk Pré-requisitos
- Um servidor Nextcloud (v27.1+) com acesso de administrador e o aplicativo Talk instalado
- Um segredo compartilhado (40-128 caracteres) para validação de assinatura de webhook
- O endpoint de webhook do Gateway acessível a partir do servidor Nextcloud (URL pública ou rede interna)
- OpenClaw Gateway instalado e em execução
- O plugin Nextcloud Talk instalado via 'openclaw plugins install @openclaw/nextcloud-talk'
Nextcloud Talk Configuração rápida
Instalar o plugin Nextcloud Talk
Execute 'openclaw plugins install @openclaw/nextcloud-talk' para adicionar suporte ao Nextcloud Talk no seu Gateway.
Registrar o bot no seu servidor Nextcloud
Acesse seu servidor Nextcloud via SSH e execute o comando OCC: ./occ talk:bot:install "OpenClaw" "<shared-secret>" "<webhook-url>" --feature reaction. Substitua <shared-secret> por um segredo forte de 40+ caracteres, e <webhook-url> pelo endpoint de webhook publicamente acessível do Gateway (ex.: https://gateway.example.com:8788/webhook).
Ativar o bot e configurar
No Nextcloud Talk, vá até as configurações da sala e ative o bot OpenClaw. Em seguida, adicione a configuração do canal em ~/.openclaw/openclaw.json com sua baseUrl e botSecret. Inicie o Gateway com 'openclaw start' e envie uma mensagem na sala para verificar a conexão.
Nextcloud Talk Exemplo de configuração
{
"channels": {
"nextcloud-talk": {
"enabled": true,
"baseUrl": "https://nextcloud.example.com",
"botSecret": "your-shared-secret-min-40-chars",
"dmPolicy": "pairing"
}
}
}Nextcloud Talk Documentação Detalhada
Visão Geral da Arquitetura
Registro do 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 reactionPolíticas de DM
{
"channels": {
"nextcloud-talk": {
"dmPolicy": "pairing",
"allowFrom": ["user-id-1", "user-id-2"]
}
}
}Configuração de Salas
{
"channels": {
"nextcloud-talk": {
"groupPolicy": "allowlist",
"rooms": {
"abc123token": {
"requireMention": true
},
"def456token": {
"requireMention": false
}
}
}
}
}Credenciais de API para Detecção de Sala
{
"channels": {
"nextcloud-talk": {
"apiUser": "bot-service-account",
"apiPassword": "service-account-password",
"apiPasswordFile": "/run/secrets/nc-api-password"
}
}
}Configuração de Webhook
{
"channels": {
"nextcloud-talk": {
"webhookPort": 8788,
"webhookHost": "0.0.0.0",
"webhookPath": "/webhook",
"webhookPublicUrl": "https://gateway.example.com:8788/webhook"
}
}
}Tratamento de Mensagens e Streaming
{
"channels": {
"nextcloud-talk": {
"textChunkLimit": 4000,
"chunkMode": "newline",
"blockStreaming": true,
"blockStreamingCoalesce": true,
"mediaMaxMb": 10
}
}
}Histórico de Conversas
{
"channels": {
"nextcloud-talk": {
"historyLimit": 20,
"dmHistoryLimit": 50
}
}
}Suporte a Reações
Segurança e Assinatura de Webhook
Nextcloud Talk Referência de Configuração
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Ativar ou desativar o canal Nextcloud Talk |
| baseUrl | string | "" | URL completa do seu servidor Nextcloud (ex.: https://nextcloud.example.com) |
| botSecret | string | "" | Segredo compartilhado usado para validação de assinatura do webhook (deve corresponder ao segredo da instalação OCC) |
| botSecretFile | string | "" | Caminho para um arquivo contendo o segredo compartilhado (alternativa ao botSecret inline) |
| apiUser | string | "" | Nome de usuário Nextcloud para chamadas de API (usado para detecção do tipo de sala) |
| apiPassword | string | "" | Senha da conta de usuário da API |
| apiPasswordFile | string | "" | Caminho para um arquivo contendo a senha da API (alternativa ao apiPassword inline) |
| dmPolicy | string | "pairing" | Política de acesso a DM: 'pairing' (código de verificação), 'open' (qualquer usuário) ou 'disabled' (sem DMs) |
| allowFrom | string[] | [] | IDs de usuário Nextcloud autorizados a enviar DM ao bot (use ["*"] para acesso aberto) |
| groupPolicy | string | "allowlist" | Política de acesso a salas: 'allowlist' (somente salas ativadas por moderadores) |
| webhookPort | number | 8788 | Porta do servidor HTTP de webhook integrado |
| webhookHost | string | "0.0.0.0" | Interface para vincular o servidor de webhook |
| webhookPath | string | "/webhook" | Caminho da URL para o endpoint de webhook |
| webhookPublicUrl | string | "" | URL pública completa para o endpoint de webhook (necessária atrás de proxy reverso) |
| historyLimit | number | 20 | Quantidade máxima de mensagens anteriores incluídas como contexto para conversas em sala |
| dmHistoryLimit | number | 50 | Quantidade máxima de mensagens anteriores incluídas como contexto para conversas em DM |
| textChunkLimit | number | 4000 | Quantidade máxima de caracteres por fragmento de mensagem |
| chunkMode | string | "length" | Modo de divisão de texto: 'length' (limite de caracteres) ou 'newline' (limites de parágrafo) |
| blockStreaming | boolean | false | Aguardar a resposta completa da IA antes de enviar (sem streaming) |
| blockStreamingCoalesce | boolean | false | Combinar fragmentos de streaming em uma única mensagem final |
| mediaMaxMb | number | 10 | Tamanho máximo de arquivo em MB para referências de URL de mídia |
Ativar ou desativar o canal Nextcloud Talk
URL completa do seu servidor Nextcloud (ex.: https://nextcloud.example.com)
Segredo compartilhado usado para validação de assinatura do webhook (deve corresponder ao segredo da instalação OCC)
Caminho para um arquivo contendo o segredo compartilhado (alternativa ao botSecret inline)
Nome de usuário Nextcloud para chamadas de API (usado para detecção do tipo de sala)
Senha da conta de usuário da API
Caminho para um arquivo contendo a senha da API (alternativa ao apiPassword inline)
Política de acesso a DM: 'pairing' (código de verificação), 'open' (qualquer usuário) ou 'disabled' (sem DMs)
IDs de usuário Nextcloud autorizados a enviar DM ao bot (use ["*"] para acesso aberto)
Política de acesso a salas: 'allowlist' (somente salas ativadas por moderadores)
Porta do servidor HTTP de webhook integrado
Interface para vincular o servidor de webhook
Caminho da URL para o endpoint de webhook
URL pública completa para o endpoint de webhook (necessária atrás de proxy reverso)
Quantidade máxima de mensagens anteriores incluídas como contexto para conversas em sala
Quantidade máxima de mensagens anteriores incluídas como contexto para conversas em DM
Quantidade máxima de caracteres por fragmento de mensagem
Modo de divisão de texto: 'length' (limite de caracteres) ou 'newline' (limites de parágrafo)
Aguardar a resposta completa da IA antes de enviar (sem streaming)
Combinar fragmentos de streaming em uma única mensagem final
Tamanho máximo de arquivo em MB para referências de URL de mídia
Nextcloud Talk Perguntas Frequentes
Nextcloud Talk Solução de Problemas
A URL de webhook está inacessível, o bot não está ativado na sala, ou o segredo compartilhado não corresponde.
O segredo compartilhado no openclaw.json não corresponde ao usado durante a instalação do bot.
O bot não foi ativado por um moderador na sala alvo, ou requireMention está definido como true e o bot não foi @mencionado.
As credenciais de API (apiUser, apiPassword) não estão configuradas.
A porta de webhook configurada já está em uso ou a vinculação de host é inválida.