CONFIGURACIÓN WHATSAPP
Sidecar WhatsApp — Manual de configuración v1.0
Requisitos Previos
Software
- Node.js 18+
- npm o yarn
- Fararoni Core ejecutándose (puerto 7071)
Hardware
- Teléfono con WhatsApp instalado
- Conexión a internet estable
Instalación
# 1. Navegar al directorio del sidecar
cd fararoni-sidecar-wa
# 2. Instalar dependencias
npm install
# 3. Copiar configuración de ejemplo
cp .env.example .env
# 4. Editar configuración
nano .envConfiguración (.env)
# URL del Gateway REST de Fararoni
GATEWAY_URL=http://localhost:7071/gateway/v1/inbound
# Puerto del servidor HTTP para recibir respuestas
SIDECAR_PORT=3000
# Nivel de log (debug, info, warn, error)
LOG_LEVEL=info
# Modo de operación
# private_only = Solo responde en chats privados
# groups_only = Solo responde en grupos
# all = Responde en todos (CUIDADO)
CHAT_MODE=private_onlyPrimera Ejecución (Vincular WhatsApp)
node sidecar.jsAparecerá un código QR en la terminal. Pasos para vincular:
- Abrir WhatsApp en tu teléfono
- Ir a Configuración → Dispositivos vinculados
- Tocar Vincular un dispositivo
- Escanear el código QR de la terminal
Una vez vinculado:
[SIDECAR] ✅ WhatsApp conectado como: +52 1 229 XXX XXXX
[SIDECAR] 🚀 Servidor HTTP escuchando en puerto 3000
[SIDECAR] 📡 Listo para recibir y enviar mensajesArquitectura de Flujo
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Usuario │ │ Sidecar WA │ │ Fararoni Core │
│ WhatsApp │ │ (Node.js) │ │ (Java) │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘
│ │ │
│ Mensaje entrante │ │
│──────────────────────>│ │
│ │ POST /gateway/v1/inbound
│ │──────────────────────>│
│ │ │ Procesa con LLM
│ │ POST /send │
│ │<──────────────────────│
│ Mensaje de respuesta │ │
│<──────────────────────│ │Endpoints del Sidecar
| Método | Path | Descripción |
|---|---|---|
| POST | /send | Enviar mensaje (usado por Fararoni) |
| GET | /health | Health check |
| GET | /status | Estado de conexión WhatsApp |
Configuración en Fararoni Core
Archivo: ~/.fararoni/config/modules.yml
gateway:
rest:
enabled: true
port: 7071
channels:
whatsapp:
enabled: true
egress_url: "http://localhost:3000/send"
allowed_numbers: [] # Vacío = todos permitidos
blocked_numbers: []Comandos Útiles
# Iniciar Fararoni Core
cd fararoni-core/target
java --enable-preview -jar fararoni-core-1.0.0.jar --server
# Iniciar Sidecar WhatsApp (otra terminal)
cd fararoni-sidecar-wa
node sidecar.js
# Ver logs en tiempo real
tail -f ~/.fararoni/logs/fararoni.log
# Reiniciar sesión WhatsApp (borrar credenciales)
rm -rf fararoni-sidecar-wa/baileys_auth_info/
node sidecar.js # Escaneará QR de nuevoTroubleshooting
No aparece código QR
rm -rf node_modules
npm installDesconexión frecuente
- Verificar conexión a internet
- No usar WhatsApp Web en el navegador al mismo tiempo
- Revisar si el teléfono tiene batería suficiente
Mensajes no llegan a Fararoni
# Verificar que Fararoni esté corriendo
curl http://localhost:7071/gateway/v1/healthSeguridad
Credenciales de WhatsApp
- NUNCA subir
baileys_auth_info/a git - Ya está en
.gitignore - Contiene tokens de sesión sensibles
Números bloqueados
# En modules.yml
channels:
whatsapp:
blocked_numbers:
- "5212291234567" # Bloquear número específicoFiltro de grupos
RESUELTO: Robot ya NO responde en grupos (FASE 71.4)
// FASE 71.4: Ignorar mensajes de grupos
if (msg.key.remoteJid.endsWith('@g.us')) {
logger.debug(`[INGRESS] Ignorando mensaje de grupo: ${msg.key.remoteJid}`);
return;
}| Sufijo | Tipo | Comportamiento |
|---|---|---|
@s.whatsapp.net | Chat privado (1:1) | ✅ Responde |
@g.us | Grupo | ❌ Ignora |
status@broadcast | Estados | ❌ Ignora |
Habilitar grupos específicos (futuro)
const ALLOWED_GROUPS = [
'5212291234567-1234567890@g.us',
'5212299876543-0987654321@g.us'
];
if (msg.key.remoteJid.endsWith('@g.us')) {
if (!ALLOWED_GROUPS.includes(msg.key.remoteJid)) {
return;
}
}Autor: Eber Cruz | Versión: 1.0