OpenClaw

Canal Signal do OpenClaw

Mensagens
Difícil

Conecte o OpenClaw ao Signal usando o signal-cli — uma interface de linha de comando de terceiros e de código aberto para o protocolo Signal. Esta integração oferece mensagens de IA com privacidade em primeiro lugar e criptografia ponta a ponta completa. O OpenClaw se comunica com um daemon signal-cli via HTTP JSON-RPC e Server-Sent Events, permitindo que seu assistente de IA envie e receba mensagens no Signal. Um número de telefone dedicado é necessário para a conta do bot.

Info rápida
DificuldadeDifícil
CategoriaMensagens
Recursos suportados4 / 6

Signal 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

Signal Pré-requisitos

  • Um número de telefone dedicado para a conta do bot no Signal (separado do seu número pessoal)
  • Java Runtime Environment (JRE 25+) instalado no seu servidor
  • signal-cli instalado e acessível no seu PATH
  • OpenClaw Gateway em execução e configurado
  • Uma conta Signal existente para vincular o bot (ou um novo registro)

Signal Configuração rápida

1

Instalar o signal-cli

Baixe e instale o signal-cli a partir do repositório oficial no GitHub. Ele requer Java 25 ou superior. Verifique a instalação executando 'signal-cli --version' no seu terminal.

2

Vincular ou registrar uma conta Signal

Vincule o signal-cli a uma conta Signal existente executando 'signal-cli link -n "OpenClaw"' e escaneando o código QR de outro dispositivo. Alternativamente, registre uma nova conta com 'signal-cli -a +15551234567 register'. Use um número dedicado — executar na sua conta pessoal causará loops de auto-mensagem.

3

Adicionar configuração do canal Signal

Adicione a configuração do canal Signal em ~/.openclaw/openclaw.json. Defina o campo 'account' com o número de telefone do seu bot no formato E.164 e configure a dmPolicy (pairing, allowlist ou open) para controlar quem pode enviar mensagens ao seu assistente.

4

Iniciar o Gateway e enviar uma mensagem de teste

Inicie o processo Gateway. O OpenClaw iniciará automaticamente o daemon signal-cli. Envie uma mensagem para o número do bot de outra conta Signal. Se estiver usando a política pairing padrão, aprove o remetente via 'openclaw pairing approve signal <code>'.

Signal Exemplo de configuração

config.json
{
  "channels": {
    "signal": {
      "enabled": true,
      "account": "+15551234567",
      "dmPolicy": "pairing"
    }
  }
}

Signal Documentação Detalhada

Visão geral da arquitetura

O OpenClaw se conecta ao Signal através do signal-cli — um cliente de linha de comando baseado em Java que implementa o protocolo Signal. A arquitetura utiliza uma interface HTTP JSON-RPC com Server-Sent Events (SSE) para entrega de mensagens em tempo real. Por padrão, o OpenClaw inicia automaticamente um processo daemon do signal-cli ao iniciar o Gateway. O daemon cuida de todas as operações do protocolo Signal (criptografia, troca de chaves, envio/recebimento de mensagens), enquanto o OpenClaw se comunica com ele por uma API HTTP local. Isso mantém a camada do protocolo Signal completamente separada da lógica de IA. Alternativamente, você pode executar o signal-cli como um daemon externo e apontar o OpenClaw para ele via a configuração httpUrl — útil para gerenciar o signal-cli independentemente ou executá-lo em outro host.
O daemon de inicialização automática se vincula a 127.0.0.1:8080 por padrão. Altere httpHost e httpPort se precisar de um endereço diferente.
Executar o signal-cli externamente oferece mais controle sobre atualizações e gerenciamento de ciclo de vida. Defina httpUrl para a URL completa do daemon para desativar a inicialização automática.

Configuração da conta Signal

Seu bot precisa de uma conta Signal dedicada. Não use seu número pessoal — o Signal ignora mensagens enviadas para si mesmo, e executar contas pessoal e do bot no mesmo número cria conflitos de roteamento. Duas opções para configuração da conta: • Vincular a dispositivo existente — Execute 'signal-cli link -n "OpenClaw"' para gerar um URI de vinculação de dispositivo. Escaneie o código QR pelo app principal do Signal. Esta é a abordagem recomendada por ser a mais simples. • Registro novo — Execute 'signal-cli -a +15551234567 register' para registrar uma nova conta Signal diretamente. Você precisará verificar o número via SMS ou chamada de voz. Uma vez vinculado ou registrado, o signal-cli armazena suas credenciais e chaves localmente. Elas persistem entre reinicializações.
openclaw.json
{
  "channels": {
    "signal": {
      "account": "+15551234567",
      "cliPath": "/usr/local/bin/signal-cli"
    }
  }
}
Evite executar o bot no seu número pessoal do Signal. A proteção contra auto-mensagem do Signal ignorará mensagens enviadas para si mesmo, e o bot não funcionará corretamente.

Modo daemon externo

Para implantações avançadas, você pode executar o signal-cli como um processo daemon autônomo fora do OpenClaw. Isso é útil quando você deseja gerenciar atualizações do signal-cli independentemente, executá-lo em uma máquina separada ou compartilhar um único daemon entre vários serviços. Inicie o daemon manualmente com: signal-cli -a +15551234567 daemon --http=127.0.0.1:8080 Em seguida, aponte o OpenClaw para ele definindo httpUrl. Quando httpUrl está configurado, o OpenClaw pula a inicialização automática do daemon e se conecta ao processo existente.
openclaw.json
{
  "channels": {
    "signal": {
      "account": "+15551234567",
      "httpUrl": "http://127.0.0.1:8080/api/v1/rpc"
    }
  }
}
Ao usar um daemon externo, certifique-se de que ele esteja iniciado antes do Gateway. O OpenClaw aguardará até startupTimeoutMs (máximo de 120 segundos) para que o daemon fique disponível.

Políticas de DM

As políticas de DM (Mensagens Diretas) controlam quem pode interagir com seu assistente de IA em chats privados. O OpenClaw suporta quatro políticas: • pairing (padrão) — Novos contatos recebem um código de pareamento aleatório ao enviar a primeira mensagem ao bot. O código expira após 1 hora. Aprove via 'openclaw pairing approve signal <code>' no seu terminal. Uma vez aprovados, podem conversar livremente. • allowlist — Apenas números de telefone ou UUIDs listados em allowFrom podem enviar mensagens ao bot. Todos os outros são silenciosamente ignorados. Use o formato E.164 para números de telefone ou 'uuid:<id>' para contatos apenas com UUID. • open — Qualquer pessoa que enviar mensagem ao bot recebe uma resposta. Requer adicionar '*' à lista allowFrom como confirmação de segurança. Use com cautela. • disabled — A funcionalidade de DM está completamente desativada.
openclaw.json
{
  "channels": {
    "signal": {
      "dmPolicy": "allowlist",
      "allowFrom": ["+15551234567", "uuid:a1b2c3d4-e5f6-7890-abcd-ef1234567890"]
    }
  }
}
Contatos que registraram o Signal sem compartilhar seu número de telefone aparecerão como 'uuid:<id>' na lista allowFrom. Verifique os logs do Gateway para encontrar o UUID deles.
Limites de histórico por contato podem ser definidos via dms["<phone_or_uuid>"].historyLimit para substituir o dmHistoryLimit global.

Gerenciamento de chats em grupo

O OpenClaw suporta chats em grupo do Signal com controle de acesso configurável: • open — Aceitar mensagens de todos os membros do grupo • allowlist — Apenas remetentes aprovados (via groupAllowFrom) podem acionar o bot • disabled — Ignorar todas as mensagens de grupo Conversas de grupo são totalmente isoladas das DMs. As mensagens são marcadas como 'agent:<agentId>:signal:group:<groupId>' para manter contexto e histórico separados por grupo. Você pode configurar o historyLimit por grupo para controlar quantas mensagens são incluídas como contexto da IA (padrão 50, defina 0 para desativar o histórico).
openclaw.json
{
  "channels": {
    "signal": {
      "groupPolicy": "open",
      "historyLimit": 50
    }
  }
}

Privacidade e criptografia ponta a ponta

O Signal é o padrão ouro em mensagens privadas. Todas as mensagens entre o bot e os contatos são criptografadas ponta a ponta usando o Protocolo Signal (algoritmo Double Ratchet + acordo de chaves X3DH). O OpenClaw nunca vê mensagens em texto plano em trânsito — a descriptografia acontece localmente dentro do processo signal-cli no seu servidor. Propriedades principais de privacidade: • As mensagens são criptografadas de cliente para cliente — os servidores do Signal não podem lê-las • O signal-cli armazena as chaves de criptografia localmente no seu servidor • Nenhum dado passa pela infraestrutura da Anthropic, OpenAI ou qualquer provedor de IA terceiro (as mensagens são descriptografadas localmente, processadas pelo seu Gateway auto-hospedado, e apenas o contexto da conversa é enviado ao seu provedor de IA configurado) • Eventos de stories podem ser completamente ignorados com ignoreStories: true
Para máxima privacidade, combine o Signal com um provedor de LLM hospedado localmente (ex: Ollama) para manter todos os dados inteiramente na sua infraestrutura.

Reações

O OpenClaw suporta envio e recebimento de reações com emoji em mensagens do Signal. Reações são úteis para confirmação (mostrando ao usuário que sua mensagem foi recebida) e para comportamentos interativos do agente. A sintaxe de reações usa a ferramenta de mensagem com alvos no formato E.164, formato UUID ou formato de grupo: • Reação em DM: target=+15551234567 ou target=uuid:<id> • Reação em grupo: target=signal:group:<groupId> com targetAuthor=uuid:<sender> Configure o comportamento de reações globalmente ou por conta: • actions.reactions — Ativar/desativar a capacidade de reação (padrão true) • reactionLevel — off/ack (desativado) ou minimal/extensive (ativado com orientação)
openclaw.json
{
  "channels": {
    "signal": {
      "reactionLevel": "minimal"
    }
  }
}

Mídia e anexos

O OpenClaw lida com arquivos de mídia no Signal incluindo imagens, documentos, áudio e vídeo. A mídia é transferida pelo signal-cli como dados codificados em base64. Mídia recebida é automaticamente baixada e processada, a menos que ignoreAttachments esteja definido como true. Mídia enviada é obtida via base64 do signal-cli antes de ser enviada. O limite padrão de tamanho de arquivo é 8 MB (mediaMaxMb). O Signal em si suporta arquivos maiores, mas a sobrecarga da codificação base64 e o tempo de processamento tornam 8 MB um padrão prático.
openclaw.json
{
  "channels": {
    "signal": {
      "mediaMaxMb": 8,
      "ignoreAttachments": false
    }
  }
}

Indicadores de digitação e confirmações de leitura

O OpenClaw envia indicadores de digitação enquanto gera respostas de IA para manter uma sensação natural de conversa. O Gateway chama o endpoint sendTyping do signal-cli e atualiza o indicador periodicamente durante a geração da resposta. Confirmações de leitura podem ser encaminhadas para contatos de DM aprovados quando sendReadReceipts está ativado. Isso permite que os remetentes saibam que sua mensagem foi processada. Nota: Confirmações de leitura em grupo não são suportadas pelo signal-cli.
openclaw.json
{
  "channels": {
    "signal": {
      "sendReadReceipts": true
    }
  }
}

Fragmentação e entrega de texto

Para respostas longas da IA, o OpenClaw divide automaticamente o texto em múltiplas mensagens. O tamanho padrão do fragmento é de 4.000 caracteres por mensagem. Dois modos de fragmentação estão disponíveis: • length (padrão) — Divisão rígida no limite de caracteres • newline — Divide nos limites de parágrafo primeiro, depois aplica o limite de caracteres Os alvos de entrega usam números de telefone E.164, UUIDs ou IDs de grupo: • DMs: signal:+15551234567 ou número E.164 simples • DMs por UUID: uuid:<id> ou UUID simples • Grupos: signal:group:<groupId>
openclaw.json
{
  "channels": {
    "signal": {
      "textChunkLimit": 4000,
      "chunkMode": "newline"
    }
  }
}

Signal Referência de Configuração

enabled
Type: booleanDefault: true

Ativar ou desativar o canal Signal

account
Type: stringDefault: ""

Número de telefone do bot no formato E.164 (ex: +15551234567). Obrigatório

cliPath
Type: stringDefault: "signal-cli"

Caminho para o executável signal-cli

httpUrl
Type: stringDefault: ""

URL completa de um daemon signal-cli externo. Quando definido, desativa a inicialização automática

httpHost
Type: stringDefault: "127.0.0.1"

Endereço do host para o daemon signal-cli de inicialização automática se vincular

httpPort
Type: numberDefault: 8080

Porta para o daemon signal-cli de inicialização automática se vincular

autoStart
Type: booleanDefault: true

Se deve iniciar automaticamente o daemon signal-cli ao iniciar o Gateway

startupTimeoutMs
Type: numberDefault: 30000

Tempo máximo (ms) para aguardar o daemon signal-cli ficar disponível. Máximo 120000

dmPolicy
Type: stringDefault: "pairing"

Controla quem pode enviar DM ao bot. Opções: pairing, allowlist, open, disabled

allowFrom
Type: string[]Default: []

Números de telefone (E.164) ou identificadores uuid:<id> autorizados a enviar mensagens ao bot

dmHistoryLimit
Type: numberDefault: 50

Número de mensagens de DM recentes a incluir como contexto da IA por conversa

groupPolicy
Type: stringDefault: "disabled"

Política de chat em grupo. Opções: disabled, allowlist, open

groupAllowFrom
Type: string[]Default: []

Números de telefone ou UUIDs autorizados a acionar o bot em grupos (quando groupPolicy é allowlist)

historyLimit
Type: numberDefault: 50

Máximo de mensagens de grupo incluídas como contexto da IA. Defina 0 para desativar

sendReadReceipts
Type: booleanDefault: false

Se deve encaminhar sinais de confirmação de leitura para contatos de DM aprovados

textChunkLimit
Type: numberDefault: 4000

Máximo de caracteres por mensagem enviada antes da fragmentação

chunkMode
Type: stringDefault: "length"

Modo de fragmentação de texto. Opções: length (divisão rígida), newline (ciente de parágrafos)

mediaMaxMb
Type: numberDefault: 8

Tamanho máximo de arquivo de mídia em megabytes para anexos recebidos/enviados

ignoreAttachments
Type: booleanDefault: false

Pular download de anexos de mídia recebidos

ignoreStories
Type: booleanDefault: false

Ignorar completamente eventos de stories do Signal

receiveMode
Type: stringDefault: ""

Modo de recebimento de mensagens. Opções: on-start (buscar ao iniciar), manual

configWrites
Type: booleanDefault: true

Permitir que comandos /config modifiquem configurações do canal em tempo de execução

reactionLevel
Type: stringDefault: "ack"

Capacidade de reação do bot. Opções: off, ack, minimal, extensive

Signal Perguntas Frequentes

Signal Solução de Problemas

signal-cli falha ao iniciar com erros de Java

O Java não está instalado ou a versão instalada é muito antiga. O signal-cli requer Java 25 ou superior.

Instale o OpenJDK 25+ no seu servidor. Verifique com 'java --version'. Se várias versões do Java estiverem instaladas, certifique-se de que a versão correta está no seu PATH ou defina JAVA_HOME. Verifique também se o signal-cli está instalado corretamente executando 'signal-cli --version'.
Bot não responde a nenhuma mensagem

O campo account pode estar incorreto, o daemon signal-cli pode não estar em execução, ou o remetente não foi aprovado via pareamento.

Verifique se o número da conta corresponde à conta registrada no signal-cli (formato E.164 com código do país). Execute 'openclaw status' e 'openclaw gateway status' para verificar se o daemon está em execução. Se estiver usando a política pairing, verifique pareamentos pendentes com 'openclaw pairing list signal' e aprove o remetente.
DMs são ignoradas mesmo após aprovação

O remetente pode não estar na lista allowFrom (ao usar a política allowlist), ou o formato do identificador do remetente pode não corresponder.

Verifique os logs do Gateway para o identificador do remetente. Alguns usuários do Signal se registram sem compartilhar o número de telefone — eles aparecerão como 'uuid:<id>' em vez de um número de telefone. Adicione o identificador correto ao allowFrom. Execute 'openclaw channels status --probe' para diagnósticos detalhados do canal.
Mensagens de grupo não estão sendo recebidas

O groupPolicy está definido como 'disabled' (padrão), ou o grupo não está na allowlist.

Defina groupPolicy como 'open' para aceitar todas as mensagens de grupo, ou use 'allowlist' e adicione o ID do grupo ao groupAllowFrom. Verifique os logs do Gateway para o ID do grupo quando uma mensagem de grupo é recebida.
Conexão com daemon externo falha (httpUrl inacessível)

O daemon signal-cli não está em execução, a URL está incorreta ou um firewall está bloqueando a conexão.

Verifique se o daemon está em execução e escutando no host:porta esperado. Teste a conectividade com 'curl http://127.0.0.1:8080/api/v1/rpc'. Verifique as regras de firewall se estiver executando em máquinas diferentes. Certifique-se de que o daemon foi iniciado com a flag --http correta correspondendo à sua configuração httpUrl.