# 🚀 GUÍA DE INSTALACIÓN RÁPIDA

## Paso 1: Instalar Node.js

Si no tenés Node.js instalado:

**Windows:**
1. Descargar de: https://nodejs.org/ (versión LTS)
2. Ejecutar instalador
3. Verificar: `node --version`

**Linux:**
```bash
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
```

---

## Paso 2: Instalar Dependencias

Abrir terminal en esta carpeta y ejecutar:

```bash
npm install
```

Esto instalará todas las dependencias necesarias.

---

## Paso 3: Configurar Variables de Entorno

Copiar el archivo de ejemplo:

```bash
cp .env.example .env
```

En Windows (PowerShell):
```powershell
Copy-Item .env.example .env
```

Editar `.env` y configurar:

```env
PORT=3000
VERIFY_TOKEN=VERTICALL_WEBHOOK_SECRET_2026
APP_SECRET=TU_APP_SECRET_DE_META
ENABLE_SIGNATURE_VALIDATION=false
```

⚠️ **Importante:**
- El `VERIFY_TOKEN` es el que configurarás en Meta
- El `APP_SECRET` lo obtenés de Meta Developer Console
- Para testing inicial dejá `ENABLE_SIGNATURE_VALIDATION=false`

---

## Paso 4: Iniciar el Servidor

**Modo desarrollo (con auto-reload):**
```bash
npm run dev
```

**Modo producción:**
```bash
npm start
```

Deberías ver:

```
🚀 Verticall Meta Webhook escuchando en puerto 3000
📡 Endpoint: http://localhost:3000/webhook/meta
🏥 Health check: http://localhost:3000/health
🌍 Entorno: development
```

---

## Paso 5: Probar Localmente

En otra terminal, ejecutá:

```bash
npm test
```

Esto ejecutará tests automáticos. Deberías ver:

```
✅ Verificación exitosa
✅ Evento WhatsApp procesado
✅ Evento Facebook procesado
✅ Health check OK
✅ TODOS LOS TESTS PASARON
```

---

## Paso 6: Exponer a Internet (para Meta)

Meta necesita una URL pública con HTTPS. Opciones:

### **A) ngrok (para testing rápido)**

```bash
# Instalar ngrok: https://ngrok.com/download
ngrok http 3000
```

Copiá la URL HTTPS que te da (ej: `https://abc123.ngrok.io`)

### **B) Hosting/VPS (producción)**

Subir el código a tu servidor con HTTPS configurado.

### **C) Hostinger con Node.js**

Si Hostinger soporta Node.js, seguí su documentación para deployar.

---

## Paso 7: Configurar en Meta Developer Console

1. Ir a: https://developers.facebook.com/apps/
2. Seleccionar tu App
3. Ir a **WhatsApp → Configuration → Webhook**
4. Configurar:
   - **Callback URL:** `https://tu-dominio.com/webhook/meta`
   - **Verify Token:** `VERTICALL_WEBHOOK_SECRET_2026`
5. Click en **Verify and Save**

Si todo está OK, Meta verificará el webhook con éxito.

6. **Suscribirse a eventos:**
   - Marcar: `messages`
   - Marcar: `message_status`
   - Click en **Subscribe**

---

## Paso 8: Generar Access Token Permanente

### **En Meta Developer Console:**

1. Ir a **WhatsApp → API Setup**
2. Ver el **Temporary Access Token** (válido 24hs)
3. Para token permanente:
   - Ir a **Business Settings** (menú hamburguesa arriba)
   - **System Users** → Create System User
   - Asignar rol **Admin**
   - Generar token con permisos:
     - `whatsapp_business_messaging`
     - `whatsapp_business_management`
4. Guardar ese token en lugar seguro
5. Agregarlo al `.env`:
   ```env
   ACCESS_TOKEN=tu_token_permanente_aqui
   ```

---

## Paso 9: Probar con Mensaje Real

1. Enviar mensaje de WhatsApp al número configurado
2. Ver los logs:
   ```bash
   tail -f logs/webhook.log
   ```
3. Deberías ver:
   ```
   📩 Evento recibido
   💬 Mensaje WhatsApp entrante
   Texto: "..."
   ```

---

## ✅ Checklist Final

- [ ] Node.js instalado
- [ ] Dependencias instaladas (`npm install`)
- [ ] Variables de entorno configuradas (`.env`)
- [ ] Servidor corriendo (`npm start`)
- [ ] Tests locales pasando (`npm test`)
- [ ] URL pública con HTTPS
- [ ] Webhook configurado en Meta
- [ ] Access Token permanente generado
- [ ] Mensaje de prueba recibido correctamente

---

## 🆘 Problemas Comunes

### **Error: Cannot find module 'express'**
```bash
npm install
```

### **Puerto 3000 ocupado**
Cambiar `PORT=3001` en `.env`

### **Meta no verifica webhook**
- Verificar que servidor esté corriendo
- Verificar URL pública accesible
- Verificar HTTPS válido
- Revisar logs: `logs/webhook.log`

### **No llegan eventos**
- Verificar suscripciones en Meta
- Verificar que Access Token esté activo
- Revisar logs de eventos: `logs/events/`

---

## 📞 Próximos Pasos

Con el webhook funcionando, continuá con:

- **FASE 2:** Base de datos PostgreSQL
- **FASE 3:** Panel de administración
- **FASE 4:** Envío de mensajes (no solo recepción)

---

**¡Listo!** El microservicio está funcionando y recibiendo eventos de Meta. 🎉
