Skip to main content
O Nextcloud Talk é um plugin de canal disponível para download (@openclaw/nextcloud-talk) que conecta o OpenClaw a uma instância auto-hospedada do Nextcloud por meio de um bot de webhook do Talk. Há suporte para mensagens diretas, salas, reações e mensagens em markdown; mídias são enviadas como URLs.

Instalação

Use a especificação simples do pacote para acompanhar a tag da versão oficial atual. Fixe uma versão exata somente quando precisar de uma instalação reproduzível. A partir de um checkout local (fluxos de trabalho de desenvolvimento):
Reinicie o Gateway após a instalação. Detalhes: Plugins

Configuração rápida (iniciantes)

  1. Instale o plugin (acima).
  2. No servidor Nextcloud, crie um bot:
    Mantenha --feature response: sem isso, as respostas de saída falham com 401. Corrija um bot existente com ./occ talk:bot:state --feature webhook --feature response --feature reaction <botId> 1.
  3. Ative o bot nas configurações da sala de destino.
  4. Configure o OpenClaw:
    • Configuração: channels.nextcloud-talk.baseUrl + channels.nextcloud-talk.botSecret
    • Ou variável de ambiente: NEXTCLOUD_TALK_BOT_SECRET (somente para a conta padrão)
    Configuração pela CLI (--url/--token são aliases para os campos explícitos; nc-talk e nc funcionam como aliases do canal):
    Campos explícitos equivalentes:
    Segredo armazenado em arquivo:
  5. Reinicie o Gateway (ou conclua a configuração).
Configuração mínima:

Observações

  • Os bots não podem iniciar mensagens diretas. O usuário precisa enviar uma mensagem ao bot primeiro.
  • A URL do webhook deve estar acessível a partir do servidor Nextcloud; defina webhookPublicUrl quando o Gateway estiver atrás de um proxy. As solicitações do webhook são assinadas com HMAC-SHA256 usando o segredo do bot; assinaturas inválidas são rejeitadas e sujeitas a limitação de taxa.
  • A API do bot não oferece suporte ao upload de mídias; mídias de saída são acrescentadas como uma linha Attachment: <url>.
  • O payload do webhook não diferencia mensagens diretas de salas; defina apiUser + apiPassword para ativar consultas de tipo de sala (armazenadas em cache por cerca de 5 minutos). Sem essas configurações, todas as conversas são tratadas como salas.
  • As solicitações de saída passam pela proteção contra SSRF. Para um host Nextcloud em uma rede privada/interna confiável, habilite essa opção com channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: true.
  • Com apiUser/apiPassword e webhookPublicUrl definidos, openclaw channels status verifica o bot e avisa quando o recurso response está ausente.

Controle de acesso (mensagens diretas)

  • Padrão: channels.nextcloud-talk.dmPolicy = "pairing". Remetentes desconhecidos recebem um código de pareamento.
  • Aprove por meio de:
    • openclaw pairing list nextcloud-talk
    • openclaw pairing approve nextcloud-talk <CODE>
  • Mensagens diretas públicas: channels.nextcloud-talk.dmPolicy="open" mais channels.nextcloud-talk.allowFrom=["*"].
  • allowFrom corresponde somente a IDs de usuário do Nextcloud (em letras minúsculas); nomes de exibição são ignorados.

Salas (grupos)

  • Padrão: channels.nextcloud-talk.groupPolicy = "allowlist" (exige menção).
  • Inclua salas na lista de permissões com channels.nextcloud-talk.rooms, usando o token da sala como chave; "*" define um padrão curinga:
  • Chaves por sala: requireMention (padrão: true), enabled (false desativa a sala), allowFrom (lista de remetentes permitidos por sala), tools (substituições de permissão/negação de ferramentas), skills (limita as Skills carregadas), systemPrompt.
  • Para não permitir nenhuma sala, mantenha a lista de permissões vazia ou defina channels.nextcloud-talk.groupPolicy="disabled".

Recursos

Referência de configuração (Nextcloud Talk)

Configuração completa: Configuração Opções do provedor:
  • channels.nextcloud-talk.enabled: ativa/desativa a inicialização do canal.
  • channels.nextcloud-talk.baseUrl: URL da instância do Nextcloud.
  • channels.nextcloud-talk.botSecret: segredo compartilhado do bot (string ou referência de segredo).
  • channels.nextcloud-talk.botSecretFile: caminho do segredo em arquivo comum. Links simbólicos são rejeitados.
  • channels.nextcloud-talk.apiUser: usuário da API para consultas de sala (detecção de mensagens diretas) e verificação de status.
  • channels.nextcloud-talk.apiPassword: senha da API/do aplicativo para consultas de sala.
  • channels.nextcloud-talk.apiPasswordFile: caminho do arquivo de senha da API.
  • channels.nextcloud-talk.webhookPort: porta do listener do webhook (padrão: 8788).
  • channels.nextcloud-talk.webhookHost: host do webhook (padrão: 0.0.0.0).
  • channels.nextcloud-talk.webhookPath: caminho do webhook (padrão: /nextcloud-talk-webhook).
  • channels.nextcloud-talk.webhookPublicUrl: URL do webhook acessível externamente.
  • channels.nextcloud-talk.dmPolicy: pairing | allowlist | open | disabled (padrão: pairing). open exige allowFrom=["*"].
  • channels.nextcloud-talk.allowFrom: lista de permissões para mensagens diretas (IDs de usuário).
  • channels.nextcloud-talk.groupPolicy: allowlist | open | disabled (padrão: allowlist).
  • channels.nextcloud-talk.groupAllowFrom: lista de remetentes permitidos nas salas (IDs de usuário); usa allowFrom como alternativa quando não definido.
  • channels.nextcloud-talk.rooms: configurações e lista de permissões por sala (consulte acima).
  • Grupos estáticos de acesso de remetentes podem ser referenciados em allowFrom e groupAllowFrom com accessGroup:<name>.
  • channels.nextcloud-talk.historyLimit: limite do histórico do grupo (0 desativa).
  • channels.nextcloud-talk.dmHistoryLimit: limite do histórico de mensagens diretas (0 desativa).
  • channels.nextcloud-talk.dms: substituições por mensagem direta, usando o ID do usuário como chave (historyLimit).
  • channels.nextcloud-talk.textChunkLimit: tamanho dos blocos de texto de saída em caracteres (padrão: 4000).
  • channels.nextcloud-talk.streaming.chunkMode: length (padrão) ou newline para dividir em linhas em branco (limites de parágrafos) antes da divisão por tamanho.
  • channels.nextcloud-talk.streaming.block.enabled: ativa ou desativa o streaming de blocos para este canal.
  • channels.nextcloud-talk.streaming.block.coalesce: ajuste da coalescência do streaming de blocos.
  • channels.nextcloud-talk.responsePrefix: prefixo das respostas de saída.
  • channels.nextcloud-talk.markdown.tables: modo de renderização de tabelas em markdown (off | bullets | code | block).
  • channels.nextcloud-talk.mediaMaxMb: limite de mídia de entrada (MB).
  • channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: permite que hosts Nextcloud privados/internos passem pela proteção contra SSRF.
  • channels.nextcloud-talk.accounts.<id>: substituições por conta (mesmas chaves); defaultAccount seleciona o padrão. As variáveis de ambiente NEXTCLOUD_TALK_BOT_SECRET / NEXTCLOUD_TALK_API_PASSWORD aplicam-se somente à conta padrão.

Relacionados