Canal WhatsApp do OpenClaw
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.
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
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.
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/.
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
{
"channels": {
"whatsapp": {
"dmPolicy": "allowlist",
"allowFrom": ["+15551234567"]
}
}
}WhatsApp Documentação Detalhada
Visão geral da arquitetura
Configuração do número de telefone
{
"channels": {
"whatsapp": {
"accounts": {
"default": {
"phone": "+15551234567"
}
}
}
}
}Login e credenciais
openclaw channels login whatsappPolíticas de DM
{
"channels": {
"whatsapp": {
"dmPolicy": "pairing",
"allowFrom": ["+15551234567", "+15559876543"]
}
}
}Gerenciamento de chats em grupo
{
"channels": {
"whatsapp": {
"groupPolicy": "allowlist",
"groupActivation": "mention",
"groupAllowList": ["group-jid-1", "group-jid-2"]
}
}
}Confirmações de leitura
{
"channels": {
"whatsapp": {
"sendReadReceipts": true
}
}
}Reações de confirmação
{
"channels": {
"whatsapp": {
"ackReaction": {
"emoji": "👀",
"direct": true,
"group": true
}
}
}
}Mensagens enviadas e mídia
Limites de taxa e envio
{
"channels": {
"whatsapp": {
"textChunkLimit": 5,
"mediaMaxMb": 50
}
}
}Por que não Twilio / WhatsApp Business API?
WhatsApp Referência de Configuração
| Key | Type | Default | Description |
|---|---|---|---|
| dmPolicy | string | "pairing" | Controla quem pode enviar DM ao bot. Opções: pairing, allowlist, open, disabled |
| selfChatMode | string | "disabled" | Como tratar mensagens enviadas para si mesmo. Opções: disabled, ai, note |
| allowFrom | string[] | [] | Números de telefone autorizados a enviar mensagens ao bot (quando dmPolicy é allowlist) |
| sendReadReceipts | boolean | true | Se deve enviar confirmações de leitura com marcas azuis ao processar mensagens |
| ackReaction.emoji | string | "👀" | Emoji usado para confirmar o recebimento de mensagens |
| ackReaction.direct | boolean | true | Enviar reação de confirmação em mensagens diretas |
| ackReaction.group | boolean | true | Enviar reação de confirmação em mensagens de grupo |
| textChunkLimit | number | 5 | Número máximo de partes de texto por resposta de IA |
| mediaMaxMb | number | 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 | string | "disabled" | Política de chat em grupo. Opções: disabled, allowlist, open |
| groupActivation | string | "mention" | Como o bot é acionado em grupos. Opções: mention, always |
| historyLimit | number | 50 | Número de mensagens recentes a incluir como contexto de IA |
| chunkMode | string | "split" | Como tratar respostas longas. Opções: split, newline, truncate |
| messagePrefix | string | "" | Prefixo opcional adicionado a todas as mensagens enviadas |
| accounts.<id>.* | object | {} | Configurações por conta (número de telefone, caminho de credenciais, substituições) |
Controla quem pode enviar DM ao bot. Opções: pairing, allowlist, open, disabled
Como tratar mensagens enviadas para si mesmo. Opções: disabled, ai, note
Números de telefone autorizados a enviar mensagens ao bot (quando dmPolicy é allowlist)
Se deve enviar confirmações de leitura com marcas azuis ao processar mensagens
Emoji usado para confirmar o recebimento de mensagens
Enviar reação de confirmação em mensagens diretas
Enviar reação de confirmação em mensagens de grupo
Número máximo de partes de texto por resposta de IA
Tamanho máximo de arquivo de mídia recebida em megabytes. O limite de envio é controlado por agents.defaults.mediaMaxMb (padrão 5 MB)
Política de chat em grupo. Opções: disabled, allowlist, open
Como o bot é acionado em grupos. Opções: mention, always
Número de mensagens recentes a incluir como contexto de IA
Como tratar respostas longas. Opções: split, newline, truncate
Prefixo opcional adicionado a todas as mensagens enviadas
Configurações por conta (número de telefone, caminho de credenciais, substituições)
WhatsApp Perguntas Frequentes
WhatsApp Solução de Problemas
As credenciais da sessão podem ter expirado, ou o app do WhatsApp no celular foi atualizado e invalidou a sessão vinculada.
Isso geralmente acontece quando o celular fica offline por períodos prolongados, ou quando outro dispositivo vinculado conflita com a sessão do Gateway.
Limitação de taxa, problemas de rede, ou o destinatário bloqueou seu número.