Los servicios permiten que tu agente de IA se conecte con APIs externas para ejecutar acciones complejas como consultar bases de datos, realizar reservas, procesar pagos, o cualquier integración que necesites. El agente recolectará automáticamente la información necesaria del usuario antes de llamar a la API.
Github
Puedes descargar nuestro repositorio de ejemplo para crear tus agentes.
✅ Los servicios están en Producción Estable y han demostrado alta fiabilidad. El sistema maneja automáticamente la recolección de datos, validación y ejecución de APIs externas.
{ "services": [ { "intent": "schedule_appointment", "reference": "Servicio para agendar citas médicas en la clínica", "enabled": true, "method": "POST", "requiredFields": [ { "name": "nombre", "description": "Nombre completo del paciente", "promptHint": "¿Podrías indicarme tu nombre completo, por favor?", "type": "string" }, { "name": "email", "description": "Correo electrónico para confirmaciones", "promptHint": "¿Cuál es tu dirección de correo electrónico?", "type": "email" }, { "name": "fecha", "description": "Fecha y hora preferida para la cita", "promptHint": "¿Qué día y hora te gustaría agendar? (Ejemplo: mañana a las 3pm)", "type": "date" }, { "name": "telefono", "description": "Número de teléfono de contacto", "promptHint": "¿Cuál es tu número de teléfono?", "type": "phone" } ], "endpoint": "https://api.clinica.com/v1/appointments", "tags": ["citas", "agendamiento", "medical"], "headers": { "Authorization": "Bearer {{apiKey}}", "Content-Type": "application/json", "X-Clinic-ID": "clinic_123" }, "bodyTemplate": { "patient_name": "{{nombre}}", "patient_email": "{{email}}", "appointment_date": "{{fecha|format('yyyy-MM-dd HH:mm')}}", "phone": "{{telefono}}", "source": "plazbot_ai" }, "responseMapping": { "appointmentId": "$.data.appointment_id", "confirmedDate": "$.data.scheduled_date", "doctorName": "$.data.doctor.name", "status": "$.status", "errorMessage": "$.error.message" }, "responseMessage": "¡Perfecto! Tu cita ha sido agendada para el {{confirmedDate}} con {{doctorName}}. ID de cita: {{appointmentId}}", "responseConditions": [ { "condition": "$.status == 'success'", "message": "✅ ¡Cita confirmada! Te esperamos el {{confirmedDate}} con {{doctorName}}. Recibirás un recordatorio por email.", "nextService": "verify_contact_info" }, { "condition": "$.status == 'conflict'", "message": "❌ Lo siento, ese horario no está disponible. ¿Te gustaría que te sugiera horarios libres?", "nextService": "verify_contact_info" }, { "condition": "$.status == 'error'", "message": "⚠️ Hubo un problema al agendar: {{errorMessage}}. ¿Podrías intentar con otra fecha?", "nextService": "verify_contact_info" } ], "action": "notify_doctor" } ]}
Las variables del sistema son valores predefinidos que el agente puede utilizar automáticamente en los servicios. Estas variables se actualizan dinámicamente durante la conversación y proporcionan información contextual importante.Sintaxis:[nombreVariable] Solo disponibles en: Sección Servicios
• Endpoints - Para incluir variables del sistema en las URLs
• Headers - Para autenticación o identificación
• Body templates - Para enviar datos contextuales
• Respuestas - Para personalizar mensajes
"services": [ { "intent": "conversar_humano", "reference": "Transferir conversación a agente humano cuando el cliente confirma que quiere hablar con una persona después de que el asistente virtual le ofrece soporte humano en la conversación. El cliente puede responder con confirmaciones como sí, ok, por favor, perfecto cuando se le pregunta si desea conversar con un agente humano.", "enabled": true, "method": "POST", "requiredFields": [ { "name": "curp", "description": "Valor del Curp", "promptHint": "Cual es tu curp?", "type": "string" } ], "tags": [ "humano", "agente", "conversar", "si", "sí", "por favor", "claro", "perfecto", "dale" ], "endpoint": "https://hook.us1.make.com/8dvokk7w5rqvlnbq9ibekj9vurqhprsy", "headers": { "content-type": "application/json" }, "bodyTemplate": { "curp": "{{curp}}", "lastmessage": "[lastmessage]", "messageIA": "[lastmessageIA]", "fecha": "[lastmessagetime]", "sessionId": "[sessionId]" }, "responseMessage": "Validaremos la informacion.", "action": "" } ]
Los campos de tipo date son procesados inteligentemente por la IA. El usuario puede escribir “mañana a las 3pm” y se convertirá automáticamente al formato correcto.
El tipo arrayObject permite definir campos que recopilan listas de objetos con propiedades configurables. Cada propiedad del objeto se define con name y type.
{ "name": "numeros_a_portar", "description": "Lista de números telefónicos a portar", "promptHint": "¿Cuáles son los números a portar? Necesito tipo de plan, operador y número.", "type": "arrayObject", "properties": [ { "name": "tipo_de_plan", "type": "string" }, { "name": "operador", "type": "string" }, { "name": "numero", "type": "string" } ]}
El LLM generará un JSON Schema con items: { type: "object", properties: {...} } para que el modelo de IA recopile los datos correctamente.Tipos soportados en sub-propiedades:string, number, integer, boolean
El tipo array (sin Object) genera un array simple de strings: ["valor1", "valor2"]. Usa arrayObject cuando necesites objetos con múltiples propiedades.
Cada condicion puede incluir un campo nextService que indica el intent de otro servicio a ejecutar automaticamente si esa condicion se cumple:
{ "responseConditions": [ { "condition": "$.status == 'confirmed'", "message": "Tu cita ha sido confirmada para el {{scheduled_date}}.", "nextService": "send_appointment_reminder" }, { "condition": "$.status == 'conflict'", "message": "Ese horario no esta disponible.", "nextService": "suggest_alternative_times" } ]}
Campo
Descripcion
condition
Expresion condicional usando JSONPath y operadores
message
Mensaje a mostrar al usuario si la condicion se cumple
nextService
(Opcional) Intent del siguiente servicio a ejecutar automaticamente
El bodySchema define los tipos de datos que se enviaran en el body del request. Esto permite que el sistema convierta automaticamente los valores del usuario al tipo correcto antes de hacer la llamada HTTP.