Canal Signal do OpenClaw
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.
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
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.
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.
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.
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
{
"channels": {
"signal": {
"enabled": true,
"account": "+15551234567",
"dmPolicy": "pairing"
}
}
}Signal Documentação Detalhada
Visão geral da arquitetura
Configuração da conta Signal
{
"channels": {
"signal": {
"account": "+15551234567",
"cliPath": "/usr/local/bin/signal-cli"
}
}
}Modo daemon externo
{
"channels": {
"signal": {
"account": "+15551234567",
"httpUrl": "http://127.0.0.1:8080/api/v1/rpc"
}
}
}Políticas de DM
{
"channels": {
"signal": {
"dmPolicy": "allowlist",
"allowFrom": ["+15551234567", "uuid:a1b2c3d4-e5f6-7890-abcd-ef1234567890"]
}
}
}Gerenciamento de chats em grupo
{
"channels": {
"signal": {
"groupPolicy": "open",
"historyLimit": 50
}
}
}Privacidade e criptografia ponta a ponta
Reações
{
"channels": {
"signal": {
"reactionLevel": "minimal"
}
}
}Mídia e anexos
{
"channels": {
"signal": {
"mediaMaxMb": 8,
"ignoreAttachments": false
}
}
}Indicadores de digitação e confirmações de leitura
{
"channels": {
"signal": {
"sendReadReceipts": true
}
}
}Fragmentação e entrega de texto
{
"channels": {
"signal": {
"textChunkLimit": 4000,
"chunkMode": "newline"
}
}
}Signal Referência de Configuração
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Ativar ou desativar o canal Signal |
| account | string | "" | Número de telefone do bot no formato E.164 (ex: +15551234567). Obrigatório |
| cliPath | string | "signal-cli" | Caminho para o executável signal-cli |
| httpUrl | string | "" | URL completa de um daemon signal-cli externo. Quando definido, desativa a inicialização automática |
| httpHost | string | "127.0.0.1" | Endereço do host para o daemon signal-cli de inicialização automática se vincular |
| httpPort | number | 8080 | Porta para o daemon signal-cli de inicialização automática se vincular |
| autoStart | boolean | true | Se deve iniciar automaticamente o daemon signal-cli ao iniciar o Gateway |
| startupTimeoutMs | number | 30000 | Tempo máximo (ms) para aguardar o daemon signal-cli ficar disponível. Máximo 120000 |
| dmPolicy | string | "pairing" | Controla quem pode enviar DM ao bot. Opções: pairing, allowlist, open, disabled |
| allowFrom | string[] | [] | Números de telefone (E.164) ou identificadores uuid:<id> autorizados a enviar mensagens ao bot |
| dmHistoryLimit | number | 50 | Número de mensagens de DM recentes a incluir como contexto da IA por conversa |
| groupPolicy | string | "disabled" | Política de chat em grupo. Opções: disabled, allowlist, open |
| groupAllowFrom | string[] | [] | Números de telefone ou UUIDs autorizados a acionar o bot em grupos (quando groupPolicy é allowlist) |
| historyLimit | number | 50 | Máximo de mensagens de grupo incluídas como contexto da IA. Defina 0 para desativar |
| sendReadReceipts | boolean | false | Se deve encaminhar sinais de confirmação de leitura para contatos de DM aprovados |
| textChunkLimit | number | 4000 | Máximo de caracteres por mensagem enviada antes da fragmentação |
| chunkMode | string | "length" | Modo de fragmentação de texto. Opções: length (divisão rígida), newline (ciente de parágrafos) |
| mediaMaxMb | number | 8 | Tamanho máximo de arquivo de mídia em megabytes para anexos recebidos/enviados |
| ignoreAttachments | boolean | false | Pular download de anexos de mídia recebidos |
| ignoreStories | boolean | false | Ignorar completamente eventos de stories do Signal |
| receiveMode | string | "" | Modo de recebimento de mensagens. Opções: on-start (buscar ao iniciar), manual |
| configWrites | boolean | true | Permitir que comandos /config modifiquem configurações do canal em tempo de execução |
| reactionLevel | string | "ack" | Capacidade de reação do bot. Opções: off, ack, minimal, extensive |
Ativar ou desativar o canal Signal
Número de telefone do bot no formato E.164 (ex: +15551234567). Obrigatório
Caminho para o executável signal-cli
URL completa de um daemon signal-cli externo. Quando definido, desativa a inicialização automática
Endereço do host para o daemon signal-cli de inicialização automática se vincular
Porta para o daemon signal-cli de inicialização automática se vincular
Se deve iniciar automaticamente o daemon signal-cli ao iniciar o Gateway
Tempo máximo (ms) para aguardar o daemon signal-cli ficar disponível. Máximo 120000
Controla quem pode enviar DM ao bot. Opções: pairing, allowlist, open, disabled
Números de telefone (E.164) ou identificadores uuid:<id> autorizados a enviar mensagens ao bot
Número de mensagens de DM recentes a incluir como contexto da IA por conversa
Política de chat em grupo. Opções: disabled, allowlist, open
Números de telefone ou UUIDs autorizados a acionar o bot em grupos (quando groupPolicy é allowlist)
Máximo de mensagens de grupo incluídas como contexto da IA. Defina 0 para desativar
Se deve encaminhar sinais de confirmação de leitura para contatos de DM aprovados
Máximo de caracteres por mensagem enviada antes da fragmentação
Modo de fragmentação de texto. Opções: length (divisão rígida), newline (ciente de parágrafos)
Tamanho máximo de arquivo de mídia em megabytes para anexos recebidos/enviados
Pular download de anexos de mídia recebidos
Ignorar completamente eventos de stories do Signal
Modo de recebimento de mensagens. Opções: on-start (buscar ao iniciar), manual
Permitir que comandos /config modifiquem configurações do canal em tempo de execução
Capacidade de reação do bot. Opções: off, ack, minimal, extensive
Signal Perguntas Frequentes
Signal Solução de Problemas
O Java não está instalado ou a versão instalada é muito antiga. O signal-cli requer Java 25 ou superior.
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.
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.
O groupPolicy está definido como 'disabled' (padrão), ou o grupo não está na allowlist.
O daemon signal-cli não está em execução, a URL está incorreta ou um firewall está bloqueando a conexão.