Canal WhatsApp de OpenClaw
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.
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
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.
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/.
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
{
"channels": {
"whatsapp": {
"dmPolicy": "allowlist",
"allowFrom": ["+15551234567"]
}
}
}WhatsApp Documentación Detallada
Descripción de la arquitectura
Configuración del número de teléfono
{
"channels": {
"whatsapp": {
"accounts": {
"default": {
"phone": "+15551234567"
}
}
}
}
}Login y credenciales
openclaw channels login whatsappPolíticas de DM
{
"channels": {
"whatsapp": {
"dmPolicy": "pairing",
"allowFrom": ["+15551234567", "+15559876543"]
}
}
}Gestión de chats grupales
{
"channels": {
"whatsapp": {
"groupPolicy": "allowlist",
"groupActivation": "mention",
"groupAllowList": ["group-jid-1", "group-jid-2"]
}
}
}Confirmaciones de lectura
{
"channels": {
"whatsapp": {
"sendReadReceipts": true
}
}
}Reacciones de confirmación
{
"channels": {
"whatsapp": {
"ackReaction": {
"emoji": "👀",
"direct": true,
"group": true
}
}
}
}Mensajes salientes y medios
Límites de velocidad y envío
{
"channels": {
"whatsapp": {
"textChunkLimit": 5,
"mediaMaxMb": 50
}
}
}¿Por qué no Twilio / WhatsApp Business API?
WhatsApp Referencia de Configuración
| Key | Type | Default | Description |
|---|---|---|---|
| dmPolicy | string | "pairing" | Controla quién puede enviar DM al bot. Opciones: pairing, allowlist, open, disabled |
| selfChatMode | string | "disabled" | Cómo manejar mensajes que te envías a ti mismo. Opciones: disabled, ai, note |
| allowFrom | string[] | [] | Números de teléfono autorizados a enviar mensajes al bot (cuando dmPolicy es allowlist) |
| sendReadReceipts | boolean | true | Si enviar confirmaciones de lectura con marcas azules al procesar mensajes |
| ackReaction.emoji | string | "👀" | Emoji usado para confirmar la recepción de mensajes |
| ackReaction.direct | boolean | true | Enviar reacción de confirmación en mensajes directos |
| ackReaction.group | boolean | true | Enviar reacción de confirmación en mensajes de grupo |
| textChunkLimit | number | 5 | Número máximo de fragmentos de texto por respuesta de IA |
| mediaMaxMb | number | 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 | string | "disabled" | Política de chat grupal. Opciones: disabled, allowlist, open |
| groupActivation | string | "mention" | Cómo se activa el bot en grupos. Opciones: mention, always |
| historyLimit | number | 50 | Número de mensajes recientes a incluir como contexto de IA |
| chunkMode | string | "split" | Cómo manejar respuestas largas. Opciones: split, newline, truncate |
| messagePrefix | string | "" | Prefijo opcional agregado a todos los mensajes salientes |
| accounts.<id>.* | object | {} | Configuración por cuenta (número de teléfono, ruta de credenciales, anulaciones) |
Controla quién puede enviar DM al bot. Opciones: pairing, allowlist, open, disabled
Cómo manejar mensajes que te envías a ti mismo. Opciones: disabled, ai, note
Números de teléfono autorizados a enviar mensajes al bot (cuando dmPolicy es allowlist)
Si enviar confirmaciones de lectura con marcas azules al procesar mensajes
Emoji usado para confirmar la recepción de mensajes
Enviar reacción de confirmación en mensajes directos
Enviar reacción de confirmación en mensajes de grupo
Número máximo de fragmentos de texto por respuesta de IA
Tamaño máximo de archivo multimedia entrante en megabytes. El límite saliente se controla con agents.defaults.mediaMaxMb (5 MB por defecto)
Política de chat grupal. Opciones: disabled, allowlist, open
Cómo se activa el bot en grupos. Opciones: mention, always
Número de mensajes recientes a incluir como contexto de IA
Cómo manejar respuestas largas. Opciones: split, newline, truncate
Prefijo opcional agregado a todos los mensajes salientes
Configuración por cuenta (número de teléfono, ruta de credenciales, anulaciones)
WhatsApp Preguntas Frecuentes
WhatsApp Solución de Problemas
Las credenciales de sesión pueden haber expirado, o la app de WhatsApp del teléfono se actualizó e invalidó la sesión vinculada.
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.
Limitación de velocidad, problemas de red, o el destinatario ha bloqueado tu número.