OpenClaw

Canal WhatsApp do OpenClaw

Mensagens
Médio

Conecte o OpenClaw ao WhatsApp usando o protocolo Baileys. Esta integração permite que seu assistente de IA envie e receba mensagens no WhatsApp sem precisar de uma API Business — basta escanear um código QR com seu celular e estará pronto. Um número de telefone dedicado é recomendado para um roteamento limpo.

Info rápida
DificuldadeMédio
CategoriaMensagens
Recursos suportados5 / 6

WhatsApp Recursos suportados

Mensagens de texto

Suportado

Mídia e arquivos

Suportado

Reações

Suportado

Threads

Não suportado

Mensagens de voz

Suportado

Chat em grupo

Suportado

WhatsApp Pré-requisitos

  • Um número de telefone dedicado para WhatsApp (recomendado, separado do pessoal)
  • Node.js 18+ instalado no seu servidor (Bun não é recomendado)
  • OpenClaw Gateway em execução e configurado

WhatsApp Configuração rápida

1

Adicionar configuração do canal WhatsApp

Adicione a configuração do canal WhatsApp em ~/.openclaw/openclaw.json. Configure a dmPolicy (allowlist, pairing ou open) e a lista allowFrom para controlar quem pode enviar mensagens ao seu assistente.

2

Executar comando de login e escanear código QR

Execute 'openclaw channels login' no seu terminal. Um código QR aparecerá. Escaneie-o com o WhatsApp no seu celular (Configurações > Aparelhos conectados > Conectar um aparelho). As credenciais são salvas em ~/.openclaw/credentials/whatsapp/.

3

Enviar uma mensagem de teste

Envie uma mensagem direta para seu número do WhatsApp de outro celular. Se estiver usando a política allowlist, certifique-se de que o número do remetente está na lista allowFrom. Se estiver usando a política pairing padrão, aprove o remetente via 'openclaw pairing approve whatsapp <code>'.

WhatsApp Exemplo de configuração

config.json
{
  "channels": {
    "whatsapp": {
      "dmPolicy": "allowlist",
      "allowFrom": ["+15551234567"]
    }
  }
}

WhatsApp Documentação Detalhada

Visão geral da arquitetura

O OpenClaw se conecta ao WhatsApp através da biblioteca Baileys — uma implementação de código aberto por engenharia reversa do protocolo multi-dispositivo do WhatsApp Web. Diferente da API oficial do WhatsApp Business (que requer aprovação da Meta e cobra por conversa), o Baileys se conecta diretamente emulando um dispositivo vinculado. A arquitetura é simples: seu celular permanece como dispositivo principal, e o Gateway atua como um dispositivo companheiro vinculado. As mensagens fluem pelos servidores do WhatsApp normalmente — o OpenClaw simplesmente intercepta as mensagens recebidas, processa-as com sua IA e envia as respostas de volta.
Como a conexão é baseada no celular, seu celular deve permanecer online. Se seu celular ficar offline por mais de ~14 dias, o WhatsApp desvinculará a sessão.
O Baileys suporta multi-dispositivo nativamente — você pode ter até 4 dispositivos vinculados por número de telefone, e o Gateway conta como um deles.

Configuração do número de telefone

Um número de telefone dedicado é altamente recomendado. Embora você possa usar seu número pessoal, misturar conversas pessoais e do bot cria confusão no roteamento e pode incomodar seus contatos. Você precisa de um número de telefone real que possa receber SMS ou chamadas de voz para o registro inicial do WhatsApp. Uma vez registrado, o número só precisa permanecer ativo em um celular com o WhatsApp instalado.
openclaw.json
{
  "channels": {
    "whatsapp": {
      "accounts": {
        "default": {
          "phone": "+15551234567"
        }
      }
    }
  }
}
Evite números VoIP (ex: TextNow, Google Voice, serviços de SMS gratuitos) — o WhatsApp frequentemente bloqueia contas registradas com VoIP. Use um cartão SIM real, SIM pré-pago ou um eSIM dedicado para melhor confiabilidade.

Login e credenciais

Após configurar seu canal, você precisa vincular seu celular ao Gateway. Execute o comando de login e um código QR aparecerá no seu terminal. Escaneie-o com o WhatsApp no seu celular (Configurações → Aparelhos conectados → Conectar um aparelho). As credenciais são automaticamente salvas em ~/.openclaw/credentials/whatsapp/<accountId>/creds.json e persistem entre reinicializações. Um backup (creds.json.bak) é criado automaticamente para recuperação em caso de corrupção. Você só precisa escanear o código QR uma vez, a menos que a sessão expire ou seja revogada manualmente.
terminal
openclaw channels login whatsapp
Se estiver rodando sem tela (headless), use a flag --qr-terminal para renderizar o código QR como arte ASCII diretamente no seu terminal.

Políticas de DM

As políticas de DM (Mensagens Diretas) controlam quem pode interagir com seu assistente de IA. O OpenClaw suporta quatro políticas: • pairing (padrão) — Novos contatos devem passar pelo fluxo de pareamento. Eles enviam uma mensagem, recebem um código de pareamento, e você aprova ou rejeita via CLI. Uma vez aprovados, podem conversar livremente. • allowlist — Apenas números de telefone explicitamente listados em allowFrom podem enviar mensagens ao bot. Todos os outros são silenciosamente ignorados. • open — Qualquer pessoa que envie mensagem para o número recebe uma resposta. Use com cautela em produção. • disabled — O tratamento de DM está completamente desativado. O bot não responderá a nenhuma mensagem direta.
openclaw.json
{
  "channels": {
    "whatsapp": {
      "dmPolicy": "pairing",
      "allowFrom": ["+15551234567", "+15559876543"]
    }
  }
}

Gerenciamento de chats em grupo

O OpenClaw pode participar de chats em grupo do WhatsApp. Por padrão, o suporte a grupos está desativado para evitar respostas indesejadas de IA em conversas compartilhadas. Quando ativado, o bot responde apenas quando mencionado pelo nome ou acionado por uma palavra-chave configurada. Você pode controlar quais grupos estão ativos e como o bot é ativado.
openclaw.json
{
  "channels": {
    "whatsapp": {
      "groupPolicy": "allowlist",
      "groupActivation": "mention",
      "groupAllowList": ["group-jid-1", "group-jid-2"]
    }
  }
}
Os JIDs de grupo podem ser encontrados nos logs do Gateway quando uma mensagem de grupo é recebida. Procure pelo campo 'from' no payload da mensagem.

Confirmações de leitura

Você pode configurar se o OpenClaw envia confirmações de leitura (marcas azuis) ao processar uma mensagem. Por padrão, as confirmações de leitura são enviadas para manter uma conversa natural. Desativar as confirmações de leitura pode ser útil se você quer que o bot pareça menos "ativo" ou se está processando mensagens de forma assíncrona.
openclaw.json
{
  "channels": {
    "whatsapp": {
      "sendReadReceipts": true
    }
  }
}

Reações de confirmação

O OpenClaw pode reagir a mensagens recebidas com um emoji para confirmar o recebimento antes que a resposta da IA esteja pronta. Isso é útil porque respostas de IA podem levar vários segundos, e a reação informa ao remetente que sua mensagem foi recebida. Você pode configurar reações diferentes para mensagens diretas e chats em grupo, ou desativar o recurso completamente.
openclaw.json
{
  "channels": {
    "whatsapp": {
      "ackReaction": {
        "emoji": "👀",
        "direct": true,
        "group": true
      }
    }
  }
}

Mensagens enviadas e mídia

O OpenClaw suporta envio de texto, imagens, documentos, áudio e vídeo pelo WhatsApp. Arquivos de mídia são tratados automaticamente — o Gateway faz upload para os servidores do WhatsApp e envia o tipo de mensagem apropriado. Para respostas longas de IA, o texto é automaticamente dividido em partes para ficar dentro dos limites de tamanho de mensagem do WhatsApp. Você pode configurar o tamanho das partes e o comportamento.
O limite padrão de mídia recebida é 50 MB (mediaMaxMb). O limite de mídia enviada é 5 MB (agents.defaults.mediaMaxMb), com otimização JPEG automática e redimensionamento para imagens grandes demais.

Limites de taxa e envio

O WhatsApp aplica limites de taxa em dispositivos vinculados. Embora não haja limites oficiais publicados para contas pessoais, enviar muitas mensagens muito rapidamente pode provocar bloqueios temporários ou restrições de conta. O OpenClaw inclui limitação de taxa integrada para proteger sua conta. As configurações padrão são conservadoras e adequadas para a maioria dos casos de uso.
openclaw.json
{
  "channels": {
    "whatsapp": {
      "textChunkLimit": 5,
      "mediaMaxMb": 50
    }
  }
}

Por que não Twilio / WhatsApp Business API?

Você pode estar se perguntando por que o OpenClaw usa o Baileys em vez da API oficial do WhatsApp Business (via Twilio, MessageBird, etc.). Aqui estão as razões: • Custo — A API Business cobra por conversa (aproximadamente $0,005–$0,08 por mensagem dependendo da região). Para uso pessoal ou de pequenas equipes, isso se acumula rapidamente. O Baileys é gratuito. • Aprovação — A API Business requer verificação da Meta, uma empresa registrada e aprovação de templates de mensagens. O Baileys funciona com qualquer conta pessoal do WhatsApp. • Flexibilidade — A API Business tem requisitos rigorosos de templates para mensagens enviadas e uma janela de conversa de 24 horas. O Baileys não tem tais restrições. • Auto-hospedado — Com o Baileys, tudo roda no seu servidor. Nenhum provedor de API de terceiros vê suas mensagens. O trade-off é a confiabilidade: a API Business tem suporte oficial, enquanto o Baileys depende de engenharia reversa e pode parar de funcionar se o WhatsApp mudar seu protocolo. Para a maioria dos casos de uso auto-hospedados, esse trade-off vale a pena.

WhatsApp Referência de Configuração

dmPolicy
Type: stringDefault: "pairing"

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

selfChatMode
Type: stringDefault: "disabled"

Como tratar mensagens enviadas para si mesmo. Opções: disabled, ai, note

allowFrom
Type: string[]Default: []

Números de telefone autorizados a enviar mensagens ao bot (quando dmPolicy é allowlist)

sendReadReceipts
Type: booleanDefault: true

Se deve enviar confirmações de leitura com marcas azuis ao processar mensagens

ackReaction.emoji
Type: stringDefault: "👀"

Emoji usado para confirmar o recebimento de mensagens

ackReaction.direct
Type: booleanDefault: true

Enviar reação de confirmação em mensagens diretas

ackReaction.group
Type: booleanDefault: true

Enviar reação de confirmação em mensagens de grupo

textChunkLimit
Type: numberDefault: 5

Número máximo de partes de texto por resposta de IA

mediaMaxMb
Type: numberDefault: 50

Tamanho máximo de arquivo de mídia recebida em megabytes. O limite de envio é controlado por agents.defaults.mediaMaxMb (padrão 5 MB)

groupPolicy
Type: stringDefault: "disabled"

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

groupActivation
Type: stringDefault: "mention"

Como o bot é acionado em grupos. Opções: mention, always

historyLimit
Type: numberDefault: 50

Número de mensagens recentes a incluir como contexto de IA

chunkMode
Type: stringDefault: "split"

Como tratar respostas longas. Opções: split, newline, truncate

messagePrefix
Type: stringDefault: ""

Prefixo opcional adicionado a todas as mensagens enviadas

accounts.<id>.*
Type: objectDefault: {}

Configurações por conta (número de telefone, caminho de credenciais, substituições)

WhatsApp Perguntas Frequentes

WhatsApp Solução de Problemas

WhatsApp mostra 'Não vinculado' ou o código QR não escaneia

As credenciais da sessão podem ter expirado, ou o app do WhatsApp no celular foi atualizado e invalidou a sessão vinculada.

Delete a pasta de credenciais em ~/.openclaw/credentials/whatsapp/ e execute 'openclaw channels login whatsapp' novamente para revincular. Certifique-se de que seu celular tenha uma conexão de internet estável durante o escaneamento do QR.
Bot conecta mas desconecta repetidamente

Isso geralmente acontece quando o celular fica offline por períodos prolongados, ou quando outro dispositivo vinculado conflita com a sessão do Gateway.

Certifique-se de que seu celular permaneça conectado à internet. Verifique se não excedeu o limite de 4 dispositivos vinculados. Remova dispositivos vinculados não utilizados em Configurações do WhatsApp → Aparelhos conectados, depois faça login novamente.
Mensagens falham ao enviar (timeout ou falha de entrega)

Limitação de taxa, problemas de rede, ou o destinatário bloqueou seu número.

Verifique os logs do Gateway para códigos de erro específicos. Se vir erros de limite de taxa, reduza sua frequência de envio. Para problemas de rede, verifique se seu servidor tem uma conexão de internet estável. Tente enviar uma mensagem manual do seu celular para confirmar que o número não está restrito.