Conexiones API
Conecta tus APIs externas a enuchat para que la IA y las reglas puedan obtener datos en tiempo real de tus sistemas.
Cómo funciona
Las conexiones API te permiten integrar enuchat con tus propios sistemas backend — motores de reservas, CRMs, gestión de pedidos, inventario y más. Cuando un visitante hace una pregunta, enuchat puede llamar a tu API para obtener datos reales e incluirlos en la respuesta.
El flujo
- Configura una conexión — la URL base de tu API y la autenticación
- Añade endpoints — llamadas API específicas con plantillas de ruta y mapeo de respuesta
- Crea una regla — una regla de IA o estática con una acción CALL_API
- El visitante hace una pregunta — la regla se activa, llama a tu API y mapea la respuesta a variables de sesión
- La IA responde con datos reales — las variables de sesión están disponibles para que la IA genere una respuesta precisa
Ejemplo: Disponibilidad de habitación de hotel
Visitante: "¿Está disponible la habitación 205 la próxima semana?"
La regla de IA coincide: "Cuando el visitante pregunta sobre disponibilidad de habitaciones"
Acción CALL_API: GET https://api.hotel.com/rooms/205/availability
Respuesta mapeada: room_available = true, price = "€120/noche"
La IA responde: "La habitación 205 está disponible la próxima semana a €120/noche. ¿Le gustaría reservarla?"
Configurar una conexión
Ve a Configuración → Conexiones API en tu panel de control.
1. Crear una conexión
Una conexión representa una API externa. Necesitas:
| Campo | Descripción | Ejemplo |
|---|---|---|
| Nombre | Una etiqueta para esta conexión | Hotel Booking API |
| URL base | La URL raíz de la API | https://api.hotel.com/v1 |
| Tipo de autenticación | Cómo autenticarse | Bearer Token, OAuth2, etc. |
2. Tipos de autenticación
Ninguna
Para APIs públicas que no requieren autenticación.
API Key
Envía una clave estática como encabezado o parámetro de consulta.
| Campo | Descripción |
|---|---|
| Clave | El valor de tu clave API |
| Nombre del encabezado | Encabezado a usar (por defecto: X-Api-Key) |
La clave se envía como: X-Api-Key: your_key_here
Bearer Token
Envía un token estático en el encabezado Authorization.
Se envía como: Authorization: Bearer your_token_here
Basic Auth
Envía usuario y contraseña, codificados en base64.
Se envía como: Authorization: Basic dXNlcjpwYXNz
OAuth 2.0 (Client Credentials)
Obtiene un token de acceso automáticamente y lo almacena en caché hasta que expire. Ideal para APIs modernas como Salesforce, Google o servidores OAuth personalizados.
| Campo | Descripción |
|---|---|
| URL del token | Endpoint de token OAuth (ej. https://auth.example.com/oauth/token) |
| Client ID | Tu client ID de OAuth |
| Client Secret | Tu client secret de OAuth |
| Scope | Scopes separados por espacios (ej. read write) |
enuchat gestiona el ciclo de vida del token automáticamente — lo obtiene en la primera llamada, lo almacena en caché hasta que expire y lo renueva cuando es necesario.
Seguridad: Todas las credenciales se cifran en reposo usando libsodium. Nunca se exponen en las respuestas de la API — solo se muestran valores enmascarados en el panel de control.
Configurar endpoints
Cada conexión puede tener múltiples endpoints — llamadas API específicas que deseas realizar.
| Campo | Descripción | Ejemplo |
|---|---|---|
| Nombre | Etiqueta para este endpoint | Comprobar disponibilidad |
| Método | Método HTTP | GET, POST, PUT, DELETE |
| Ruta | Ruta URL (se añade a la URL base). Usa {'{'}variable} para valores dinámicos | /rooms/{'{'}roomId}/availability |
| Parámetros de consulta | Parámetros URL como pares clave-valor. Los valores admiten {'{'}variable} | date={'{'}checkIn} |
| Plantilla del cuerpo | Cuerpo JSON para POST/PUT. Admite interpolación de {'{'}variable} | {'{'}"guest": "{'{'}name}"} |
| Mapeo de respuesta | Mapea campos de la respuesta JSON a variables de sesión usando notación de puntos | data.available → room_available |
| Descripción | Contexto para la IA (qué datos devuelve este endpoint) | Devuelve disponibilidad de habitaciones y precios |
Interpolación de variables
Usa {'{'}variableName} en rutas, parámetros de consulta y plantillas de cuerpo. Las variables provienen de:
- Variables de sesión — establecidas por reglas anteriores (acción SET_VARIABLE)
- Parámetros de acción — codificados directamente en la acción de regla CALL_API
Mapeo de respuesta
Mapea campos de la respuesta JSON a variables de sesión usando notación de puntos:
// API returns:
{'{'}
"data": {'{'}
"available": true,
"price": {'{'} "amount": 120, "currency": "EUR" }
}
}
// Mapping:
data.available → room_available // "true"
data.price.amount → room_price // "120"
data.price.currency → room_currency // "EUR"Las variables mapeadas se almacenan como variables de sesión en la conversación y están disponibles para que la IA genere respuestas.
Uso con reglas
Las llamadas API se activan mediante la acción CALL_API en las reglas. Puedes combinarlas con otras acciones.
Receta: Consulta de estado de pedido
Conexión: API de gestión de pedidos — https://api.shop.com/v2 — Bearer Token
Endpoint: GET /orders/{'{'}orderId} → mapea data.status → order_status, data.eta → delivery_eta
Regla (tipo IA): "Cuando el visitante pregunta sobre el estado de su pedido o entrega"
Acciones:
- CALL_API → Endpoint de estado de pedido
- REPLY_AI → La IA usa
order_statusydelivery_etapara responder
Resultado: Visitante: "¿Dónde está mi pedido #4521?" — IA: "Su pedido #4521 está siendo enviado actualmente y debería llegar el jueves."
Receta: Precios en tiempo real
Conexión: API de precios — https://pricing.example.com — API Key
Endpoint: GET /products/{'{'}productId}/price → mapea price → current_price, currency → price_currency
Regla (estática): MESSAGE_MATCHES_REGEX: /\b(price|cost|how much)\b/i
Acciones:
- CALL_API → Endpoint de precios
- REPLY_TEXT → "El precio actual es {'{'}current_price} {'{'}price_currency}."
Pruebas
Siempre prueba tus conexiones y endpoints antes de usarlos en reglas:
- Probar conexión — verifica que la autenticación funciona (para OAuth2: obtiene un token)
- Probar endpoint — realiza una llamada API real con variables de ejemplo y muestra la respuesta
- Probar regla (simulación) — en la página de reglas, prueba si una regla coincidiría y qué acciones se ejecutarían
Consejo: Comienza probando la conexión, luego cada endpoint y finalmente la regla completa. De esta forma puedes aislar problemas en cada nivel.
Seguridad
- Cifrado en reposo — todas las credenciales se cifran usando libsodium antes de almacenarse
- Nunca expuestas — las respuestas de la API nunca incluyen credenciales descifradas, solo valores enmascarados
- Protección SSRF — enuchat bloquea llamadas a localhost, IPs privadas y nombres de host internos
- Tiempo de espera — las llamadas a APIs externas tienen un tiempo de espera de 5 segundos para evitar bloqueos
- Caché de tokens OAuth2 — los tokens de acceso se almacenan en caché de forma segura y se renuevan automáticamente
- Aislamiento de tenant — las conexiones están limitadas a tu tenant, inaccesibles para otros