OpenClaw

Canal WhatsApp de OpenClaw

Mensajería
Medio

Conecta OpenClaw a WhatsApp usando el protocolo Baileys. Esta integración permite a tu asistente de IA enviar y recibir mensajes en WhatsApp sin necesidad de una API Business — solo escanea un código QR con tu teléfono y estarás listo. Se recomienda un número de teléfono dedicado para un enrutamiento limpio.

Info rápida
DificultadMedio
CategoríaMensajería
Funciones compatibles5 / 6

WhatsApp Funciones compatibles

Mensajes de texto

Compatible

Medios y archivos

Compatible

Reacciones

Compatible

Hilos

No compatible

Mensajes de voz

Compatible

Chat grupal

Compatible

WhatsApp Requisitos previos

  • Un número de teléfono dedicado para WhatsApp (recomendado, separado del personal)
  • Node.js 18+ instalado en tu servidor (Bun no es recomendado)
  • OpenClaw Gateway en funcionamiento y configurado

WhatsApp Configuración rápida

1

Agregar configuración del canal WhatsApp

Agrega la configuración del canal WhatsApp en ~/.openclaw/openclaw.json. Configura la dmPolicy (allowlist, pairing u open) y la lista allowFrom para controlar quién puede enviar mensajes a tu asistente.

2

Ejecutar comando de login y escanear código QR

Ejecuta 'openclaw channels login' en tu terminal. Aparecerá un código QR. Escanéalo con WhatsApp en tu teléfono (Ajustes > Dispositivos vinculados > Vincular un dispositivo). Las credenciales se guardan en ~/.openclaw/credentials/whatsapp/.

3

Enviar un mensaje de prueba

Envía un mensaje directo a tu número de WhatsApp desde otro teléfono. Si usas la política allowlist, asegúrate de que el número del remitente esté en la lista allowFrom. Si usas la política pairing predeterminada, aprueba al remitente mediante 'openclaw pairing approve whatsapp <code>'.

WhatsApp Ejemplo de configuración

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

WhatsApp Documentación Detallada

Descripción de la arquitectura

OpenClaw se conecta a WhatsApp a través de la biblioteca Baileys — una implementación de código abierto mediante ingeniería inversa del protocolo multi-dispositivo de WhatsApp Web. A diferencia de la API oficial de WhatsApp Business (que requiere aprobación de Meta y cobra por conversación), Baileys se conecta directamente emulando un dispositivo vinculado. La arquitectura es sencilla: tu teléfono sigue siendo el dispositivo principal, y el Gateway actúa como un dispositivo compañero vinculado. Los mensajes fluyen a través de los servidores de WhatsApp como de costumbre — OpenClaw simplemente intercepta los mensajes entrantes, los procesa con tu IA y envía las respuestas de vuelta.
Dado que la conexión se basa en el teléfono, tu teléfono debe permanecer en línea. Si tu teléfono está fuera de línea por más de ~14 días, WhatsApp desvinculará la sesión.
Baileys soporta multi-dispositivo nativamente — puedes tener hasta 4 dispositivos vinculados por número de teléfono, y el Gateway cuenta como uno de ellos.

Configuración del número de teléfono

Se recomienda encarecidamente un número de teléfono dedicado. Aunque puedes usar tu número personal, mezclar conversaciones personales y del bot crea confusión en el enrutamiento y puede molestar a tus contactos. Necesitas un número de teléfono real que pueda recibir SMS o llamadas de voz para el registro inicial de WhatsApp. Una vez registrado, el número solo necesita permanecer activo en un teléfono con WhatsApp instalado.
openclaw.json
{
  "channels": {
    "whatsapp": {
      "accounts": {
        "default": {
          "phone": "+15551234567"
        }
      }
    }
  }
}
Evita números VoIP (ej. TextNow, Google Voice, servicios SMS gratuitos) — WhatsApp bloquea frecuentemente cuentas registradas con VoIP. Usa una tarjeta SIM real, SIM prepago o una eSIM dedicada para mayor confiabilidad.

Login y credenciales

Después de configurar tu canal, necesitas vincular tu teléfono con el Gateway. Ejecuta el comando de login y aparecerá un código QR en tu terminal. Escanéalo con WhatsApp en tu teléfono (Ajustes → Dispositivos vinculados → Vincular un dispositivo). Las credenciales se guardan automáticamente en ~/.openclaw/credentials/whatsapp/<accountId>/creds.json y persisten entre reinicios. Se crea automáticamente una copia de seguridad (creds.json.bak) para recuperación en caso de corrupción. Solo necesitas escanear el código QR una vez, a menos que la sesión expire o se revoque manualmente.
terminal
openclaw channels login whatsapp
Si ejecutas sin pantalla (headless), usa el flag --qr-terminal para renderizar el código QR como arte ASCII directamente en tu terminal.

Políticas de DM

Las políticas de DM (Mensajes Directos) controlan quién puede interactuar con tu asistente de IA. OpenClaw soporta cuatro políticas: • pairing (predeterminado) — Los nuevos contactos deben pasar por un flujo de emparejamiento. Envían un mensaje, reciben un código de emparejamiento, y tú apruebas o rechazas vía CLI. Una vez aprobados, pueden chatear libremente. • allowlist — Solo los números de teléfono listados explícitamente en allowFrom pueden enviar mensajes al bot. Todos los demás son ignorados silenciosamente. • open — Cualquier persona que envíe un mensaje al número recibe una respuesta. Usar con precaución en producción. • disabled — El manejo de DM está completamente desactivado. El bot no responderá a ningún mensaje directo.
openclaw.json
{
  "channels": {
    "whatsapp": {
      "dmPolicy": "pairing",
      "allowFrom": ["+15551234567", "+15559876543"]
    }
  }
}

Gestión de chats grupales

OpenClaw puede participar en chats grupales de WhatsApp. Por defecto, el soporte de grupos está desactivado para evitar respuestas de IA no deseadas en conversaciones compartidas. Cuando está habilitado, el bot responde solo cuando es mencionado por nombre o activado por una palabra clave configurada. Puedes controlar qué grupos están activos y cómo se activa el bot.
openclaw.json
{
  "channels": {
    "whatsapp": {
      "groupPolicy": "allowlist",
      "groupActivation": "mention",
      "groupAllowList": ["group-jid-1", "group-jid-2"]
    }
  }
}
Los JID de grupo se pueden encontrar en los logs del Gateway cuando se recibe un mensaje de grupo. Busca el campo 'from' en el payload del mensaje.

Confirmaciones de lectura

Puedes configurar si OpenClaw envía confirmaciones de lectura (marcas azules) al procesar un mensaje. Por defecto, se envían confirmaciones de lectura para mantener una conversación natural. Desactivar las confirmaciones de lectura puede ser útil si quieres que el bot parezca menos "activo" o si procesas mensajes de forma asíncrona.
openclaw.json
{
  "channels": {
    "whatsapp": {
      "sendReadReceipts": true
    }
  }
}

Reacciones de confirmación

OpenClaw puede reaccionar a los mensajes entrantes con un emoji para confirmar la recepción antes de que la respuesta de IA esté lista. Esto es útil porque las respuestas de IA pueden tardar varios segundos, y la reacción informa al remitente que su mensaje fue recibido. Puedes configurar diferentes reacciones para mensajes directos y chats grupales, o desactivar la función por completo.
openclaw.json
{
  "channels": {
    "whatsapp": {
      "ackReaction": {
        "emoji": "👀",
        "direct": true,
        "group": true
      }
    }
  }
}

Mensajes salientes y medios

OpenClaw soporta el envío de texto, imágenes, documentos, audio y video a través de WhatsApp. Los archivos multimedia se manejan automáticamente — el Gateway los sube a los servidores de WhatsApp y envía el tipo de mensaje apropiado. Para respuestas de IA largas, el texto se divide automáticamente en fragmentos para mantenerse dentro de los límites de tamaño de mensajes de WhatsApp. Puedes configurar el tamaño de los fragmentos y el comportamiento.
El límite predeterminado de medios entrantes es 50 MB (mediaMaxMb). El límite de medios salientes es 5 MB (agents.defaults.mediaMaxMb), con optimización JPEG automática y redimensionamiento para imágenes que excedan el tamaño.

Límites de velocidad y envío

WhatsApp aplica límites de velocidad en dispositivos vinculados. Aunque no hay límites oficiales publicados para cuentas personales, enviar demasiados mensajes muy rápido puede provocar bloqueos temporales o restricciones de cuenta. OpenClaw incluye limitación de velocidad integrada para proteger tu cuenta. La configuración predeterminada es conservadora y adecuada para la mayoría de los casos de uso.
openclaw.json
{
  "channels": {
    "whatsapp": {
      "textChunkLimit": 5,
      "mediaMaxMb": 50
    }
  }
}

¿Por qué no Twilio / WhatsApp Business API?

Quizás te preguntes por qué OpenClaw usa Baileys en lugar de la API oficial de WhatsApp Business (a través de Twilio, MessageBird, etc.). Estas son las razones: • Costo — La API Business cobra por conversación (aproximadamente $0.005–$0.08 por mensaje según la región). Para uso personal o de equipos pequeños, esto se acumula rápidamente. Baileys es gratuito. • Aprobación — La API Business requiere verificación de Meta, una empresa registrada y aprobación de plantillas de mensajes. Baileys funciona con cualquier cuenta personal de WhatsApp. • Flexibilidad — La API Business tiene requisitos estrictos de plantillas para mensajes salientes y una ventana de conversación de 24 horas. Baileys no tiene tales restricciones. • Autoalojado — Con Baileys, todo se ejecuta en tu servidor. Ningún proveedor de API de terceros ve tus mensajes. El compromiso está en la confiabilidad: la API Business tiene soporte oficial, mientras que Baileys depende de ingeniería inversa y podría dejar de funcionar si WhatsApp cambia su protocolo. Para la mayoría de los casos de uso autoalojados, este compromiso vale la pena.

WhatsApp Referencia de Configuración

dmPolicy
Type: stringDefault: "pairing"

Controla quién puede enviar DM al bot. Opciones: pairing, allowlist, open, disabled

selfChatMode
Type: stringDefault: "disabled"

Cómo manejar mensajes que te envías a ti mismo. Opciones: disabled, ai, note

allowFrom
Type: string[]Default: []

Números de teléfono autorizados a enviar mensajes al bot (cuando dmPolicy es allowlist)

sendReadReceipts
Type: booleanDefault: true

Si enviar confirmaciones de lectura con marcas azules al procesar mensajes

ackReaction.emoji
Type: stringDefault: "👀"

Emoji usado para confirmar la recepción de mensajes

ackReaction.direct
Type: booleanDefault: true

Enviar reacción de confirmación en mensajes directos

ackReaction.group
Type: booleanDefault: true

Enviar reacción de confirmación en mensajes de grupo

textChunkLimit
Type: numberDefault: 5

Número máximo de fragmentos de texto por respuesta de IA

mediaMaxMb
Type: numberDefault: 50

Tamaño máximo de archivo multimedia entrante en megabytes. El límite saliente se controla con agents.defaults.mediaMaxMb (5 MB por defecto)

groupPolicy
Type: stringDefault: "disabled"

Política de chat grupal. Opciones: disabled, allowlist, open

groupActivation
Type: stringDefault: "mention"

Cómo se activa el bot en grupos. Opciones: mention, always

historyLimit
Type: numberDefault: 50

Número de mensajes recientes a incluir como contexto de IA

chunkMode
Type: stringDefault: "split"

Cómo manejar respuestas largas. Opciones: split, newline, truncate

messagePrefix
Type: stringDefault: ""

Prefijo opcional agregado a todos los mensajes salientes

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

Configuración por cuenta (número de teléfono, ruta de credenciales, anulaciones)

WhatsApp Preguntas Frecuentes

WhatsApp Solución de Problemas

WhatsApp muestra 'No vinculado' o el código QR no se escanea

Las credenciales de sesión pueden haber expirado, o la app de WhatsApp del teléfono se actualizó e invalidó la sesión vinculada.

Elimina la carpeta de credenciales en ~/.openclaw/credentials/whatsapp/ y ejecuta 'openclaw channels login whatsapp' nuevamente para re-vincular. Asegúrate de que tu teléfono tenga una conexión a internet estable durante el escaneo del QR.
El bot se conecta pero se desconecta repetidamente

Esto suele ocurrir cuando el teléfono está fuera de línea por períodos prolongados, o cuando otro dispositivo vinculado entra en conflicto con la sesión del Gateway.

Asegúrate de que tu teléfono permanezca conectado a internet. Verifica que no hayas excedido el límite de 4 dispositivos vinculados. Elimina dispositivos vinculados no utilizados desde Ajustes de WhatsApp → Dispositivos vinculados, luego vuelve a iniciar sesión.
Los mensajes no se envían (timeout o fallo de entrega)

Limitación de velocidad, problemas de red, o el destinatario ha bloqueado tu número.

Revisa los logs del Gateway para códigos de error específicos. Si ves errores de límite de velocidad, reduce tu frecuencia de envío. Para problemas de red, verifica que tu servidor tenga una conexión a internet estable. Intenta enviar un mensaje manual desde tu teléfono para confirmar que el número no está restringido.