Skip to main content
Agendar citas es el caso de uso clásico de un agente de voz: el asistente consulta los huecos libres durante la llamada, ofrece un par de opciones y reserva la que elige quien llama. La plataforma admite esto de dos formas que puedes combinar libremente:
  1. Calendar integrations — conecta un proveedor externo de programación (Acuity Scheduling, Cal.com, Calendly, eTermin, HighLevel) una sola vez, asígnalo a un asistente, y el asistente obtiene automáticamente herramientas de reserva en cada llamada. Google Calendar y Outlook se conectan en el mismo sitio, pero alimentan la sincronización de calendario del motor integrado en lugar de la reserva durante la llamada — consulta la nota debajo de la tabla.
  2. El motor de reservas integrado — define tus propios tipos de evento con disponibilidad semanal y obtén una página de reserva pública e incrustable en /book/{workspace}/{slug}, correos de invitación ICS y una integración native contra la que tus asistentes pueden reservar. No se necesita ninguna cuenta externa. Consulta Calendario integrado para ver el panorama completo.

Proveedores de un vistazo

Google Calendar y Outlook son destinos de sincronización, no proveedores de reserva durante la llamada. Conectarlos pone sus horarios ocupados y la creación de eventos a disposición del motor de reservas integrado; los asistentes todavía no pueden llamarlos directamente durante una conversación. Para reservar en esos calendarios durante la llamada, coloca delante un tipo de evento de Cal.com, Calendly, Acuity o HighLevel, o usa un tipo de evento integrado con la sincronización de calendario activada.
Modo de enlace de Calendly: la API de programación de Calendly requiere un plan de pago de Calendly. Si tu plan no permite reservar directamente, configura el booking_mode de la integración en link — el asistente entonces acuerda una hora aproximada con quien llama y envía un enlace de programación de un solo uso por SMS o correo (link_channel) en lugar de reservar directamente. Las integraciones que topan con la restricción de plan de pago durante la llamada se marcan con el estado link_mode.

Conectar una integración

Ve a Booking → Integrations y elige la tarjeta de un proveedor:
Pega tu clave de API (Cal.com → Settings → Developer → API Keys) y elige el API endpoint: US (por defecto), EU, o Custom para una instancia de Cal.com autoalojada. Selecciona Load event types para obtener tus eventos por nombre y duración — no hace falta copiar un ID numérico desde la URL. La integración también lee automáticamente las preguntas de reserva personalizadas del tipo de evento; usa Refresh fields si las cambias más adelante en Cal.com. Zona horaria personalizable de forma opcional — asegúrate de que coincida con la del tipo de evento en Cal.com.
Toda integración se verifica antes de guardarse. Las credenciales o los ajustes de evento no válidos se rechazan con un error claro. Los valores secretos nunca vuelven a mostrarse después de guardarse. Eliminar la última integración que usa una cuenta de Acuity revoca su token de OAuth mediante el endpoint de desconexión de Acuity y elimina la conexión local. Una cuenta sin uso también puede eliminarse con Disconnect account en el editor de Acuity; las cuentas compartidas no se pueden desconectar hasta que se eliminen sus integraciones restantes. Las integraciones existentes con token de acceso personal siguen funcionando, pero aparecen como Legacy connection — reconnect with Calendly. Reconectar las actualiza a OAuth y elimina el PAT de la integración.

Asignar a un asistente

Abre los ajustes del asistente y marca las integraciones que debe usar (o llama a PUT /api/v1/assistants/{id}/integrations). Cada integración asignada añade sus propias herramientas de reserva a cada llamada: Toda integración recibe check_availability y book_appointment. Las herramientas de gestión solo se añaden donde el proveedor las admite: Calendly (buscar y cancelar), Acuity (buscar, cancelar y reprogramar, según los interruptores que hayas definido), y el motor integrado, que añade un conjunto común a todo el espacio de trabajo que identifica a quien llama primero por número de teléfono y recurre al correo más el nombre completo como respaldo. Los calendarios de Cal.com, eTermin y HighLevel por ahora solo ofrecen disponibilidad y reserva — el asistente puede leer huecos y reservar en ellos, pero no buscar, cancelar ni mover una cita existente durante una llamada. Si se asigna más de una integración, los nombres de las herramientas reciben el nombre de la integración como sufijo (por ejemplo, check_availability_sales). Los huecos siempre se dicen en la zona horaria del asistente — configúrala en los ajustes del asistente.
Las reservas de Calendly no se pueden reprogramar mediante su API — quien llama y quiere otra hora recibe en su lugar un cancel_appointment y un book_appointment nuevos, o reprograma mediante el enlace de su correo de confirmación de Calendly.
Indica al asistente cuándo reservar en su prompt, por ejemplo: “Antes de ofrecer cualquier hora, llama a check_availability. En cuanto quien llama confirme un hueco, llama a book_appointment con su nombre y correo.”

Restricción por plan

Tu plan debe incluir Calendar integrations. Si no está incluido, no puedes crear integraciones.

Solución de problemas

Confirma que la clave sigue activa en Cal.com y que pegaste una clave de producción (las claves de producción de Cal.com empiezan por cal_live_), y luego vuelve a seleccionar Load event types. Si obtienes un error de autenticación en lugar de una lista vacía, probablemente elegiste el endpoint de API equivocado — una cuenta de Cal.com en la UE necesita el endpoint EU (o Custom para una instancia autoalojada), no el US por defecto.
book_appointment necesita una dirección de correo válida, porque Cal.com rechaza una reserva sin ella. Las direcciones dictadas («anna arroba example punto com») y las diéresis alemanas se convierten automáticamente antes de enviar la solicitud, así que la mayoría de direcciones dictadas funcionan; si lo que oyó el asistente sigue sin ser utilizable, se le indica que vuelva a preguntar en lugar de reservar. Indícale en el prompt que recoja y confirme el correo antes de reservar, y que reutilice una dirección que ya tenga como variable de llamada en lugar de preguntarla dos veces.
La única ubicación del tipo de evento en Calendly es un enlace de videoconferencia (Google Meet, Zoom, Teams), y el agente de voz no puede generar enlaces de reunión. En Calendly, edita el tipo de evento y añade Custom o Phone Call → Inbound call como ubicación — Custom es la opción más segura y funciona en todos los casos. Si el tipo de evento termina con más de una ubicación, elige la correcta en Meeting location dentro de la integración.
En una organización de Calendly, las cuentas admin y owner ven los tipos de evento de todos los miembros, incluidos los eventos Round Robin y Collective; una cuenta de miembro normal solo ve los suyos.
Una prueba Web Call se ejecuta sin número de teléfono, así que todo lo que el flujo de reserva deriva del número de quien llama (enviar un enlace de programación por SMS, buscar una cita por teléfono) no puede funcionar igual. Usa Test → Call en la cabecera del asistente para una ejecución realista: el asistente marca un número que introduces tú, o tú marcas su número entrante.
¿Sigues atascado? Contacta con soporte indicando el nombre de la integración, el error mostrado en el editor del asistente y una transcripción de la llamada que no logró reservar.

API y MCP

Todo lo anterior está disponible en la API REST pública y como herramientas de MCP en https://<your-domain>/mcp: Los tipos de evento, las conexiones y los registros de reserva del motor integrado se explican en Calendario integrado.