## 4.2 Orquestación y Automatización Avanzada con n8n

En el ecosistema tecnológico moderno, las herramientas y bases de datos rara vez operan de forma aislada. **n8n** es una plataforma de automatización de flujo de trabajo (workflow automation) basada en un modelo visual de nodos. A diferencia de otras herramientas comerciales cerradas, n8n es "fair-code", lo que permite alojarlo en servidores propios y ofrece un control técnico profundo.

En n8n, la información fluye de una etapa a otra estrictamente en formato **JSON** (JavaScript Object Notation). Cada paso del proceso recibe el JSON del paso anterior, lo transforma y lo pasa al siguiente.

---

### 4.2.1 Anatomía de un Flujo de Trabajo (Workflow)

Un flujo de trabajo en n8n es una secuencia de operaciones lógicas y conexiones. Está compuesto por diferentes tipos de "nodos" que interactúan entre sí.



#### A. Nodos Disparadores (Triggers)
Todo flujo de trabajo necesita un evento de inicio. Los triggers se quedan "escuchando" hasta que ocurre una condición específica.
*   **Schedule Trigger:** Inicia el flujo basándose en el tiempo (ej. "Ejecutar cada hora" o "Todos los lunes a las 8:00 AM"). Es el equivalente automatizado de las tareas programadas.
*   **Webhook:** Crea una URL única que recibe datos en tiempo real desde cualquier aplicación externa (mediante peticiones HTTP POST o GET).
*   **App Triggers:** Disparadores integrados con aplicaciones específicas, como el "Google Drive Trigger" (se activa cuando se sube un archivo nuevo) o el "Gmail Trigger" (se activa al recibir un correo con cierto asunto).

#### B. Nodos de Aplicación (App Nodes)
Son integraciones preconstruidas para interactuar con herramientas de terceros. Permiten ejecutar acciones como leer, crear, actualizar o eliminar registros en otras plataformas.
*   **Bases de Datos:** Nodos para PostgreSQL, MySQL o MongoDB para ejecutar consultas SQL (ej. `SELECT * FROM ventas`).
*   **Hojas de Cálculo y Documentos:** Nodos de Google Sheets o Airtable para añadir filas con datos procesados.
*   **Comunicación:** Nodos de Slack, Telegram o Gmail para enviar notificaciones automáticas al equipo.
*   **HTTP Request:** El nodo más versátil. Si una aplicación no tiene un nodo preconstruido en n8n, pero tiene una API pública, este nodo permite realizar peticiones personalizadas (GET, POST, PUT) enviando encabezados y tokens de autorización.

---

### 4.2.2 Nodos Lógicos y de Transformación (Core Nodes)

Esta es la sección donde reside el verdadero poder de procesamiento. No basta con mover datos del punto A al punto B; a menudo es necesario aplicar la lógica de programación (condicionales y ciclos) que vimos en unidades anteriores.



*   **Switch (Condicional If/Else):** Actúa como un enrutador de tráfico. Evalúa una variable del JSON entrante y desvía la información por diferentes caminos. 
    *   *Ejemplo:* Si el campo `tipo_cliente` es igual a "VIP", envía el flujo por la ruta 1 (alerta inmediata por Telegram). Si es "Regular", lo envía por la ruta 2 (registro estándar en Excel).
*   **Merge (Consolidación):** Toma dos flujos de datos paralelos y los une. Es el equivalente visual a hacer un cruce de bases de datos o un "Join" en SQL.
*   **Set (Asignación de Variables):** Permite crear nuevos campos en el JSON o modificar los existentes estableciendo valores estáticos o fórmulas.
*   **Item Lists (Manipulación de Arrays):** Se utiliza para separar un lote de datos en elementos individuales. Si recibes un JSON con 100 facturas, este nodo permite iterar para que el flujo procese una factura a la vez.
*   **Code Node (Ejecución de Código):** Cuando la interfaz visual no es suficiente para una transformación compleja, este nodo permite escribir código puro (JavaScript o Python) para manipular la estructura del JSON a medida.

---

### 4.2.3 Arquitectura de un Caso Real: Procesamiento Inteligente de PQRs

Para consolidar el aprendizaje, veamos cómo se estructura un flujo complejo que une las aplicaciones, la lógica de n8n y la inteligencia artificial (Prompting).

**El Problema:** El equipo de servicio al cliente recibe cientos de correos de PQRs (Peticiones, Quejas y Reclamos) al día en una bandeja general, saturando el tiempo de respuesta.

**El Flujo en n8n:**
1.  **Gmail Trigger:** Escucha la bandeja de entrada `pqrs@empresa.com`. Extrae el remitente y el cuerpo del correo en texto plano.
2.  **LLM Node (IA Generativa):** Toma el cuerpo del correo y lo procesa utilizando un prompt estructurado con las técnicas vistas en la sección 4.1. 
    *   *Prompt oculto en el nodo:* "Eres un clasificador automático. Lee el siguiente correo y devuelve un JSON con las claves: `sentimiento` (positivo/negativo), `urgencia` (alta/baja), `categoria` (facturación/soporte técnico/ventas)."
3.  **Switch Node (Lógica de Enrutamiento):** Recibe el JSON de la IA. 
    *   *Regla 1:* Si `urgencia` es "alta" Y `sentimiento` es "negativo", desvía a la ruta de Emergencia.
    *   *Regla 2:* Si es "baja", desvía a la ruta Normal.
4.  **Acciones Paralelas (App Nodes):**
    *   *Ruta de Emergencia:* Ejecuta un nodo de **Telegram** que envía un mensaje directo al gerente de turno con los detalles del cliente.
    *   *Ruta Normal:* Ejecuta un nodo de **Google Sheets** que añade el registro a la bitácora diaria para ser respondido en orden de llegada.