# n8n-nodes-induxsoft-iae

Nodos comunitarios de n8n para interactuar con la plataforma de agentes de IA **Induxsoft IAE**.

## ¿Qué es Induxsoft IAE?

IAE (Inteligencia Artificial Empresarial) es la plataforma de Induxsoft para crear, administrar y desplegar agentes de IA con capacidades de lenguaje natural, memoria, visión, razonamiento y uso de herramientas. Los agentes pueden operar en múltiples canales: chat web, WhatsApp, Facebook Messenger, Instagram, Telegram y teléfono.

## Instalación

### En n8n Community Nodes

1. Ve a **Settings > Community Nodes**
2. Selecciona **Install**
3. Ingresa `n8n-nodes-induxsoft-iae`
4. Acepta los riesgos y haz clic en **Install**

[Descargar n8n-nodes-induxsoft-iae](n8n-nodes-induxsoft-iae.tar.gz)

### Manual

```bash
cd ~/.n8n/nodes
npm install n8n-nodes-induxsoft-iae
```

## Configuración de Credenciales

Este paquete incluye tres tipos de credenciales independientes:

### Induxsoft IAE API (Agentes)

| Campo       | Descripción                                     |
|-------------|--------------------------------------------------|
| **Agent ID** | El identificador único del agente               |
| **API Token** | El código de seguridad (Bearer token) del agente |

### Induxsoft IAE Search Engine API (Motor de Búsqueda)

| Campo                  | Descripción                                     |
|------------------------|--------------------------------------------------|
| **Search Engine ID**    | El identificador del motor de resultados (seid) |
| **Token del Motor**     | Token de autorización del motor de búsqueda     |

### Induxsoft IAE Order Book API (Libretas de Órdenes)

| Campo                    | Descripción                                     |
|--------------------------|--------------------------------------------------|
| **Token de Autorización** | Token de la libreta de órdenes (si está configurado) |

## Recursos y Operaciones disponibles

### 1. Mensaje

| Operación              | Descripción                                                   |
|------------------------|---------------------------------------------------------------|
| **Enviar Mensaje**      | Envía un mensaje al agente en nombre de un usuario. Inicia o continúa una conversación. |
| **Obtener Mensajes**    | Recupera mensajes de una conversación (últimos N, antes/después de un mensaje). |

**Opciones adicionales al enviar mensaje:**
- `chat_id` — continuar conversación existente
- `chat_topic` — tema de la conversación
- `user_sid`, `user_name`, `user_phone`, `user_email` — datos del usuario
- `channel` — canal de comunicación
- `context` — instrucciones adicionales al prompt
- `file` / `fileurl` + `filename` — enviar archivos
- `latitude` / `longitude` — enviar coordenadas
- `params` — parámetros JSON para herramientas del agente
- `format` — formato de respuesta: `text`, `html`, `json`

### 2. Conversación

| Operación                 | Descripción                                              |
|---------------------------|----------------------------------------------------------|
| **Obtener Info**           | Devuelve estado de una conversación activa (canal, último mensaje, si la IA tiene control, etc.) |
| **Listar Conversaciones**  | Lista conversaciones del agente con filtros por fecha, tema, canal. |

### 3. Handoff (Toma de control humano)

| Operación              | Descripción                                                      |
|------------------------|------------------------------------------------------------------|
| **Tomar Control**       | Desactiva al agente (`ai_control=false`) y opcionalmente envía un mensaje. |
| **Devolver Control**    | Reactiva al agente (`ai_control=true`) y opcionalmente envía un mensaje.  |
| **Enviar Mensaje Humano** | Envía un mensaje como humano sin cambiar el estado del control.        |

### 4. Whisper (Susurro)

| Operación         | Descripción                                                            |
|-------------------|------------------------------------------------------------------------|
| **Enviar Susurro** | Envía información contextual al agente para que responda mejor en el siguiente turno. |

### 5. Envío Proactivo

| Operación                | Descripción                                                        |
|--------------------------|--------------------------------------------------------------------|
| **Enviar por WhatsApp**   | Inicia conversación con plantilla aprobada de Meta (API oficial).  |
| **Enviar por WhatsApp QR** | Inicia conversación con mensaje de texto libre por WhatsApp QR.   |

---

## Nodo: IAE Search Engine (Motor de Búsqueda Semántica)

Motor de búsqueda basado en vectores con soporte para respuestas generadas por IA (RAG).

### Operaciones

| Operación                    | Descripción                                                    |
|------------------------------|----------------------------------------------------------------|
| **Buscar**                    | Búsqueda semántica con 4 tipos de resultado: `answer` (respuesta IA), `content` (texto plano), `json` (completo), `metadata` (resumen). |
| **Agregar/Actualizar Vector** | Indexar uno o varios vectores (individual o batch con JSON array). Si se omite el ID, se asigna automáticamente. |
| **Obtener Vector**            | Recuperar un vector por su ID numérico.                        |
| **Eliminar Vector**           | Eliminar un vector del índice.                                 |

**Opciones de búsqueda:**
- `resultType` — tipo de resultado: `answer`, `content`, `json`, `metadata`
- `model` — modelo de IA para respuestas: `fast`, `smart`, `precise`, `strategic`
- `limit` — cantidad de resultados (default: 10)
- `queryField` — nombre del campo de consulta en el payload
- `filters` — filtros JSON opcionales
- `extraPayload` — campos adicionales para el payload

---

## Nodo: IAE Order Book (Libretas de Órdenes)

Gestión de libretas de órdenes para pedidos, solicitudes, reservaciones, etc. Las órdenes se registran con estado "Recibida" y pueden cambiarse a "Atendida" o "Descartada".

### Operaciones

| Operación           | Descripción                                                        |
|---------------------|--------------------------------------------------------------------|
| **Crear Orden**      | Registrar una nueva orden en la libreta con datos, params y campos del protocolo de integración. |
| **Listar Órdenes**   | Listar órdenes con filtros por fecha, texto libre y límite.        |
| **Obtener Orden**    | Recuperar una orden específica por su GUID.                        |
| **Actualizar Orden** | Actualizar los datos de una orden existente (PUT).                 |
| **Descartar Orden**  | Cambiar el estado de una orden a "Descartada".                     |
| **Eliminar Orden**   | Eliminar permanentemente una orden.                                |

**Campos de creación de orden:**
- `bookId` — ID de la libreta
- `originalQuestion` — mensaje original del usuario
- `userName` — nombre del usuario
- `data` — objeto JSON con datos específicos de la orden
- `params` — parámetros clave/valor del agente
- Campos adicionales: `intention`, `preliminaryAnswer`, `reformulatedQuestion`, `agentId`, `agentName`, `sourceUrl`, `userSid`, `user`

**Nota:** Las órdenes permanecen disponibles por 30 días, después se eliminan automáticamente.

## Ejemplos de Flujos

### Ejemplo 1: Chatbot con webhook

```
[Webhook] → [Induxsoft IAE: Enviar Mensaje] → [Responder al Webhook]
```

Recibe mensajes de cualquier fuente vía webhook, los envía al agente IAE y devuelve la respuesta.

### Ejemplo 2: Escalación automática con handoff

```
[Webhook] → [Induxsoft IAE: Enviar Mensaje] → [IF: detectar keyword "humano"]
   → SÍ: [Induxsoft IAE: Tomar Control] → [Slack: Notificar agente humano]
   → NO: [Responder al Webhook]
```

### Ejemplo 3: Campañas proactivas por WhatsApp

```
[Google Sheets: Leer contactos] → [Loop] → [Induxsoft IAE: Enviar por WhatsApp]
```

Envía mensajes proactivos a una lista de contactos usando plantillas aprobadas de Meta.

### Ejemplo 4: Enriquecer contexto con susurro

```
[Webhook] → [HTTP Request: consultar CRM] → [Induxsoft IAE: Enviar Susurro]
   → [Induxsoft IAE: Enviar Mensaje] → [Responder]
```

Antes de enviar el mensaje del usuario, se inyecta contexto del CRM como susurro para que el agente responda con información personalizada.

### Ejemplo 5: Búsqueda RAG con webhook

```
[Webhook] → [IAE Search Engine: Buscar (answer)] → [Responder al Webhook]
```

Recibe una pregunta y devuelve una respuesta generada por IA basada en el contenido indexado en el motor de búsqueda semántica.

### Ejemplo 6: Indexar vectores desde Google Sheets

```
[Google Sheets: Leer filas] → [IAE Search Engine: Agregar Vector] → [Fin]
```

Toma cada fila de una hoja de cálculo (título, descripción, contenido) y la indexa como vector en el motor de búsqueda.

### Ejemplo 7: Registrar pedidos en Libreta de Órdenes

```
[Webhook] → [IAE Order Book: Crear Orden] → [Responder confirmación]
```

Recibe datos de un pedido (producto, cantidad, dirección) y los registra como una orden en la libreta.

## Estructura de respuestas

### Respuesta exitosa (envío de mensaje)

```json
{
  "success": true,
  "data": {
    "chat_id": "uuid-de-la-conversación",
    "response": "Respuesta del agente",
    "download": "url-si-aplica",
    "isbusy": false
  }
}
```

### Respuesta de error

```json
{
  "success": false,
  "message": "Descripción del error"
}
```

## Compatibilidad con OpenAI (BYOK)

IAE también expone un endpoint compatible con el protocolo de OpenAI Chat Completions, útil para integraciones con orquestadores de voz (Vapi, Retell, Bland AI):

- **Base URL:** `https://agent.induxsoft.net/svc/{agent_id}/proto/openai/v1/`
- **Endpoint:** `https://agent.induxsoft.net/svc/{agent_id}/proto/openai/v1/chat/completions`

Este endpoint no está incluido como operación del nodo porque n8n ya tiene nodos nativos para el protocolo OpenAI que pueden apuntar a esta URL.

## Documentación oficial

- [Servicio Web IAE (Agentes)](https://docs.induxsoft.net/es/iae/agentes/servicio-web.md)
- [Envío Proactivo](https://docs.induxsoft.net/es/iae/agentes/servicio-web-send.md)
- [Motor de Búsqueda (Servicios)](https://docs.induxsoft.net/es/iae/motor-busqueda/servicios.md)
- [Libretas de Órdenes](https://docs.induxsoft.net/es/iae/herramientas/libretas-de-ordenes.md)
- [Induxsoft IA](https://es.induxsoft.net/ia/)

## Licencia

MIT