{
"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"
}
]
}