Definición de como funcionan los servicios del Agente de IA
Campo | Descripción |
---|---|
intent | Identificador único de la intención del servicio. Se usa para detectar qué está solicitando el usuario (por ejemplo, "schedule_appointment" ). |
reference | Frase corta y descriptiva que ayuda a la IA a entender cuándo debe activarse este servicio. Ejemplo: “Servicio para reservar citas médicas”. |
enabled | Booleano que indica si el servicio está activo (true ) o no (false ). |
method | Método HTTP usado para llamar a la API externa (GET , POST .), no se puede otra solicitud por el momento. |
endpoint | URL completa de la API que se desea invocar cuando se activa la intención. |
headers | Objeto con pares clave-valor para incluir headers HTTP personalizados como Authorization . |
requiredFields | Arreglo de strings que indica qué datos del usuario son requeridos antes de ejecutar el servicio (por ejemplo, ["nombre", "email"] ). |
bodyTemplate | Objeto que se usa para construir el cuerpo del request. Soporta interpolación de variables como {{email}} , {{nombre}} . |
responseMapping | Define cómo extraer datos desde la respuesta de la API (por ejemplo, "mensaje": "$.response.message" ). |
responseMessage | Mensaje que el agente debe devolver al usuario tras ejecutar correctamente el servicio. Se pueden usar placeholders como {{fecha}} . |
responseConditions | Arreglo de objetos que define condiciones para el mensaje de respuesta. Cada objeto debe tener condition y message . |
{{fecha|format('yyyy-MM-dd')}}
→ “2024-01-15”{{fecha|format('dd/MM/yyyy')}}
→ “15/01/2024”{{fecha|format('yyyy-MM-dd HH:mm:ss')}}
→ “2024-01-15 14:30:00”{{precio|number}}
→ 1500 (número entero){{precio|format('0.00')}}
→ “1500.00” (dos decimales){{cantidad|number}}
→ 5{{nombre}}
→ “Juan Pérez”{{email}}
→ “juan@email.com”{{variable}}
se reemplazan con los datos que el usuario proporciona durante la conversaciónrequiredFields
o que el usuario haya proporcionado{{variable}}
solo se reemplazan con datos que el usuario proporciona durante la conversación. Deben estar definidas en requiredFields
para que el agente las solicite automáticamente.responseMapping
te permite extraer datos específicos de la respuesta de tu API externa usando JSONPath. Estos valores extraídos luego se pueden usar en el responseMessage
y responseConditions
.
responseMapping básico:
$.campo
→ Accede a un campo en la raíz$.objeto.subcampo
→ Accede a campos anidados$.array[0]
→ Primer elemento de un array$.array[*]
→ Todos los elementos de un array$.response.message
→ response.message
$.data.user.email
→ data.user.email
$.items[0].price
→ Precio del primer item$.orders[-1].id
→ ID de la última ordenresponseMapping
se convierten automáticamente en variables que puedes usar en responseMessage
como {{variable}}
. Por ejemplo, si extraes "fecha": "$.data.date"
, puedes usar {{fecha}}
en tu mensaje de respuesta.bodyTemplate
.
Propiedad | Descripción | Ejemplo |
---|---|---|
name | Nombre del campo que se usará en {{variable}} | "nombre" , "email" , "fecha" |
type | Tipo de dato esperado | "string" , "number" , "date" , "datetime" , "boolean" |
description | Explicación del campo para que la IA entienda qué solicitar | "Nombre completo del cliente" |
promptHint | Sugerencia de cómo la IA debe preguntar este campo | "¿Cuál es tu nombre completo?" |
Tipo | Descripción | Validación |
---|---|---|
string | Texto libre | Valida que no esté vacío |
number | Número decimal | Acepta cualquier entrada (validación básica) |
integer | Número entero | Acepta cualquier entrada (validación básica) |
date | Fecha | Valida y normaliza fechas con IA ✅ |
datetime | Fecha y hora | Valida fechas con hora ✅ |
boolean | Verdadero/Falso | Acepta cualquier entrada (validación básica) |
requiredFields
promptHint
como guíatype
especificadobodyTemplate
requiredFields
deben coincidir exactamente con las variables usadas en bodyTemplate
. Por ejemplo, si defines "name": "email"
, debes usar {{email}}
en el bodyTemplate.date
/datetime
) y campos vacíos (string
). Si el usuario proporciona una fecha inválida, el agente pedirá el dato nuevamente con un mensaje de error. Para otros tipos como number
o boolean
, la validación es más básica.<
(Menor que)>
(Mayor que)<=
(Menor o igual a)>=
(Mayor o igual a)responseMessage
por defecto se usa solo si ninguna de las condiciones en responseConditions
se cumple, funcionando como un fallback.requiredFields
en el formato: campo: campo, el usuario puede llenar un campo o todos, la IA entenderá si faltan o no campos antes del consumir el servicio.responseMapping
te ayudará a poder completar los datos del campo requiredMessage
, colocando la información en las llaves correspondientes, el json que te trae el servicio deberia de poder colocar los campos dentro del Mensaje.