Agente de voz IA para agendar citas: implementacion paso a paso

AgentesNexo
··7 min lectura

Agente de voz IA para agendar citas: implementacion paso a paso

Para implementar un agente de voz IA que agende citas de forma automatica en tu empresa, necesitas una plataforma de voz IA (Retell AI o Vapi), un sistema de calendario con API (Google Calendar o Cal.com) y un webhook que conecte ambos. El resultado: atencion al cliente 24/7 sin operadores humanos para consultas de disponibilidad y agendamiento.

Por que las empresas estan migrando a agentes de voz IA

Cada llamada perdida fuera de horario es una cita que no se agenda. En sectores como salud, educacion, servicios profesionales y bienes raices, entre el 30% y el 60% de las llamadas de agendamiento llegan en horarios no atendidos (Retell AI, 2025). Un agente de voz IA elimina ese problema: atiende llamadas, consulta el calendario en tiempo real y confirma la cita sin intervencion humana.

La diferencia con una grabacion IVR tradicional es la capacidad de mantener una conversacion: el agente de voz IA entiende preguntas abiertas ("quiero una cita para la proxima semana en la manana"), consulta disponibilidad real y confirma el horario en la misma llamada.

Segun datos de Vapi (2025), los negocios que despliegan agentes de voz IA para agendamiento reportan una tasa de conversion de llamadas a citas entre 2.1x y 3.4x superior al canal IVR clasico. La diferencia esta en la conversacion: el agente adapta su respuesta segun lo que dice el cliente, no segun el numero que presiona.

Requisitos previos

  • Cuenta en Retell AI (retellai.com) o Vapi (vapi.ai) — ambas soportan espanol latinoamericano con latencia <800ms
  • Sistema de calendario con API: Google Calendar, Cal.com (open source) o Calendly
  • Numero de telefono SIP o DID (Twilio, Vonage o el integrado de la plataforma — desde $1/mes)
  • Endpoint webhook propio (n8n, Make, o un endpoint Node.js/Python)
  • Presupuesto estimado: $0.07–$0.15 por minuto de llamada (Retell AI, tarifa 2025)

Paso 1: Configurar el agente de voz en Retell AI

Crea un agente en app.retellai.com. Los campos clave:

Prompt del agente (system prompt):

Eres el asistente de [Nombre Empresa], especializado en agendar citas.
Tu objetivo es:
1. Saludar al cliente por nombre si se identifica
2. Preguntar el tipo de servicio que necesita
3. Ofrecer 2-3 opciones de horario disponible
4. Confirmar la cita y enviar confirmacion por WhatsApp o correo

Habla en espanol latinoamericano neutro. Se directo y conciso.
Si el cliente pregunta algo fuera de tu alcance, di:
"Para eso te conecto con un asesor, dame un momento."

Configuracion de voz:

  • Proveedor: ElevenLabs (mejor calidad) o Azure TTS (mas economico)
  • Voz: Laura (ElevenLabs, espanol neutro) o es-MX-DaliaNeural (Azure)
  • Latencia objetivo: < 800ms (ajustar en Response Latency del panel)
  • Temperatura del LLM: 0.3 — respuestas consistentes, menos improvisacion

Paso 2: Conectar con el calendario via webhook

El agente necesita consultar disponibilidad en tiempo real. Para esto, defines una herramienta personalizada (tool) en Retell AI:

json
{
  #43a047">"name": "check_availability",
  #43a047">"description": "Consulta horarios disponibles para una fecha o rango de fechas",
  #43a047">"parameters": {
    #43a047">"type": "object",
    #43a047">"properties": {
      #43a047">"date_preference": {
        #43a047">"type": "string",
        #43a047">"description": "Fecha o preferencia del cliente, ej: proxima semana martes manana"
      },
      #43a047">"service_type": {
        #43a047">"type": "string",
        #43a047">"description": "Tipo de servicio solicitado"
      }
    },
    #43a047">"required": ["date_preference"]
  },
  #43a047">"url": "https://tudominio.com/api/availability"
}

Tu endpoint /api/availability recibe estos parametros, consulta Google Calendar o Cal.com, y devuelve los slots disponibles como texto simple:

json
{
  #43a047">"available_slots": [
    #43a047">"Martes 3 de septiembre a las 10:00 AM",
    #43a047">"Martes 3 de septiembre a las 11:30 AM",
    #43a047">"Miercoles 4 de septiembre a las 9:00 AM"
  ]
}

El agente lee esta respuesta y la presenta en voz natural: "Tengo disponibilidad el martes 3 a las 10 de la manana o las 11 y media, y el miercoles 4 a las 9. Cual te viene mejor?"

Para obtener slots libres desde Google Calendar:

typescript
import { google } from 'googleapis';

async function getAvailableSlots(datePreference: string): Promise<string[]> {
  const calendar = google.calendar({ version: 'v3', auth: oauthClient });
  
  const { data } = await calendar.freebusy.query({
    requestBody: {
      timeMin: startOfRange.toISOString(),
      timeMax: endOfRange.toISOString(),
      items: [{ id: 'primary' }],
    },
  });
  
  const busySlots = data.calendars?.primary?.busy ?? [];
  return computeFreeSlots(busySlots, workingHours);
}

Paso 3: Confirmar y registrar la cita

Cuando el cliente elige un horario, el agente llama a una segunda herramienta:

json
{
  #43a047">"name": "book_appointment",
  #43a047">"description": "Registra la cita en el calendario y notifica al cliente",
  #43a047">"parameters": {
    #43a047">"type": "object",
    #43a047">"properties": {
      #43a047">"slot": { "type": "string" },
      #43a047">"client_name": { "type": "string" },
      #43a047">"client_phone": { "type": "string" },
      #43a047">"service_type": { "type": "string" }
    },
    #43a047">"required": ["slot", "client_name", "service_type"]
  },
  #43a047">"url": "https://tudominio.com/api/book"
}

Tu endpoint /api/book hace tres cosas:

  1. Crea el evento en Google Calendar:
typescript
await calendar.events.insert({
  calendarId: 'primary',
  requestBody: {
    summary: #43a047">`Cita: ${serviceType} — ${clientName}`,
    start: { dateTime: slotISO, timeZone: 'America/Mexico_City' },
    end: { dateTime: slotEndISO, timeZone: 'America/Mexico_City' },
    description: #43a047">`Tel: ${clientPhone}`,
  },
});
  1. Envia confirmacion por WhatsApp (Evolution API o Twilio) con fecha, hora y direccion.
  1. Registra el lead en tu CRM (HubSpot, GHL o la BD interna).

Paso 4: Escalado humano y monitoreo

No todas las llamadas terminan bien. Define un trigger de escalado en el prompt:

Si el cliente:
- Pregunta por precios mas de una vez
- Menciona una queja o problema previo
- Dice "quiero hablar con una persona"
Usa la herramienta transfer_call para redirigir al extension 101.

En Retell AI, transfer_call es una herramienta nativa que redirige la llamada a un numero SIP o celular. El agente anuncia: "Con gusto te conecto con un asesor, dame un segundo."

Para monitoreo, activa los webhooks de Retell AI que registran: duracion de la llamada, transcripcion completa, si se completo el agendamiento o se escalo, y sentimiento del cliente via analisis de transcripcion. Guarda estos logs en tu BD para iterar el prompt semanalmente.


Arquitectura del sistema

Llamada entrante
     |
  Retell AI / Vapi  (capa de voz + STT/TTS)
     |
  LLM (Claude Sonnet o GPT-4o)  — razonamiento y decision
     |
  Herramientas:
  |-- check_availability  -->  Google Calendar API
  |-- book_appointment    -->  Calendar + WhatsApp + CRM
  `-- transfer_call       -->  SIP / celular operador

El LLM orquesta, las herramientas ejecutan. El agente de voz es la interfaz — el cerebro es el modelo de lenguaje con acceso a tus sistemas reales.


Lo que aprendimos implementandolo en produccion

  1. El prompt es el 80% del resultado. Un prompt vago produce respuestas vagas. Escribir el prompt como si le instruyeras a un empleado nuevo: cuando te digan X, pregunta Y antes de ofrecer horarios.
  1. La latencia de las herramientas mata la conversacion. Si tu endpoint tarda mas de 1.5 segundos, el cliente percibe un silencio incomodo. Usa cache de slots disponibles actualizado cada 5 minutos.
  1. No intentes hacer todo en una sola llamada. La confirmacion puede llegar por WhatsApp. La llamada cierra el agendamiento; el mensaje escrito entrega los detalles.
  1. Mide la tasa de completacion, no solo las llamadas. Una llamada de 4 minutos que termino sin cita es una falla del agente, no del cliente. Analiza las transcripciones donde se abandono el flujo.
  1. El espanol regional importa. El registro informal vs formal genera reacciones distintas segun el pais. Ajusta el tono del agente a tu mercado especifico.

En resumen

  1. Elige Retell AI o Vapi como plataforma de voz IA (ambas soportan espanol con <800ms de latencia)
  2. Define el system prompt con instrucciones precisas: flujo, limites y escalado humano
  3. Conecta al calendario via herramientas personalizadas (webhooks a tu endpoint)
  4. Implementa transfer_call para casos fuera del scope del agente
  5. Mide tasa de completacion y ajusta el prompt cada semana con base en transcripciones

Si quieres implementar esto en tu negocio sin construirlo desde cero, en AgentesNexo lo hacemos por ti. Escribenos en agentesnexo.com o por WhatsApp al +591 67564218

Escríbenos en agentesnexo.com o por WhatsApp al +591 67564218

Articulos relacionados