Primero sincroniza el horario real
No guardaría el horario en el prompt. El bot puede sugerir un slot con cortesía, pero la única fuente de tiempo libre debe ser el calendario, consultado justo antes de crear la reunión.
El error que eliminaría primero: El mensaje “estás agendado a las 3:00 p. m.” no significa que el evento se haya creado. Un doble clic, la zona horaria y una reserva en paralelo convierten fácilmente una reunión en dos.

Qué preparar y qué resultado esperar
- Resultado: El cliente elige un slot disponible, recibe confirmación y recordatorio, y la reprogramación no crea una segunda reunión.
- Crea una tabla de servicios: service_id, duration, buffer, calendar, business hours, time zone, quién aprueba excepciones.
- Mantén los datos de origen y los permisos de acceso separados del resultado para auditar qué hizo realmente la reserva de servicios con IA.
- Prueba reserva, un slot ocupado, reprogramación, cancelación, horario de verano y una solicitud desde otra zona horaria.
Configura reserva, recordatorios y reprogramaciones
- Configura primero el calendario
Conecta un calendario de trabajo y define horarios, pausas, buffer antes y después de la reunión, y el lead time mínimo. No guardes slots libres en el prompt.
Проверьте: Un slot libre se obtiene del calendario justo antes de mostrarlo al cliente.
Если не сработало: Sincroniza un calendario de prueba y desactiva escrituras en el calendario compartido.
- Trata el servicio como un objeto aparte
Para cada servicio define service_id, duration y personal requerido. La IA puede entender el nombre del servicio, pero toma duración y precio de la tabla.
Проверьте: El mismo servicio produce el mismo slot sin importar la redacción del cliente.
Если не сработало: Reemplaza el texto libre con botones o una lista de valores permitidos.
- Confirma el slot antes de crear la reunión
Después de elegir la hora, vuelve a pedir availability, luego crea el evento con nombre, contacto, servicio y zona horaria. Guarda event_id.
Проверьте: Un doble clic o un webhook repetido no crea dos reuniones.
Если не сработало: Revisa event_id y bloquea la reserva duplicada.
- Separa la reprogramación de una reserva nueva
La reprogramación debe encontrar el event_id existente, chequear el nuevo slot y actualizar el evento. Si falta el id, envía la solicitud a una persona.
Проверьте: El historial conserva la hora anterior y la nueva.
Если не сработало: No borres el evento viejo hasta confirmar el nuevo.

La configuración que evita reservas dobles
En la tabla de servicios define service_id, duration_minutes, buffer_before, buffer_after, calendar_id y timezone. La IA puede entender que la persona quiere una “consulta,” pero toma duración y calendario de la tabla.
Después de elegir el slot, vuelve a llamar availability, luego crea el evento y guarda event_id. En un webhook repetido busca primero event_id o client_request_id. Para reprogramar, crea primero el slot nuevo y borra el evento viejo solo tras la confirmación.
- Prueba el horario de verano y una solicitud desde otra zona horaria.
- No prometas un slot hasta que el calendario devuelva un event_id confirmado.
Qué dejar a una persona
Pasa al staff unos pocos casos: cliente VIP, pago fallido, sin especialista adecuado, reprogramación fuera de las reglas y conflictos de calendario. En los demás casos la IA puede reunir datos, pero la acción final debe pasar por la API del calendario.
Chequeo el slot dos veces—no prometo de memoria
En el calendario guarda `event_id`, `client_request_id`, `service_id`, `duration_minutes`, `buffer_before`, `buffer_after` y `timezone`. Después de elegir la hora vuelve a llamar availability y solo entonces crea el event. Si llega un webhook repetido con el mismo `client_request_id`, devuelve el `event_id` existente en lugar de crear una reunión nueva.
Para reprogramar primero reserva el slot nuevo, obtén confirmación y luego cambia el evento viejo. Si el slot nuevo no se creó, no borres la reunión anterior. Esa regla simple evita “el bot canceló la vieja pero nunca colocó la nueva.”
Qué puede manejar la IA frente a lo que debe venir del calendario
| Criterio | Pregunta | Buena señal |
|---|---|---|
| Input | ¿Qué entra exactamente en la reserva de servicios con IA? | Crea una tabla de servicios: service_id, duration, buffer, calendar, business hours, time zone, quién aprueba excepciones. |
| Acción | ¿Qué puede hacer el sistema por su cuenta? | Solo acciones predefinidas, sin acceso a toda la cuenta |
| Verificación | ¿Cómo sabes que el resultado es aceptable? | Prueba reserva, un slot ocupado, reprogramación, cancelación, horario de verano y una solicitud desde otra zona horaria. |
| Fallo | ¿A dónde va un caso poco claro? | No prometas un slot en el mensaje: pon la solicitud en needs_confirmation y pasa al manager la hora exacta y la solicitud original. |
Qué debe cambiar después de la configuración
El cliente elige un slot disponible, recibe confirmación y recordatorio, y la reprogramación no crea una segunda reunión.

Por qué el bot agenda a la gente en slots inexistentes
Guardar el horario en el prompt en lugar del calendario.
Ignorar la zona horaria del cliente.
Tratar una confirmación enviada como prueba de que el evento se creó.
Permitir la reprogramación sin chequear qué reunión se está cambiando.
Cuándo la reserva se convierte en un sistema de reservaciones completo
Necesitas un especialista si hay varios staff, duraciones distintas, pagos o restricciones médicas/legales.
Qué probar antes de abrir la reserva
¿Para quién es este enfoque de reserva de servicios con IA?
La reserva automática debe ver slots libres reales, tener en cuenta duración y zona horaria, y reprogramar o cancelar solo después de chequear identidad y reglas de negocio.
¿Por dónde empezar si todo sigue siendo manual?
Crea una tabla de servicios: service_id, duration, buffer, calendar, business hours, time zone, quién aprueba excepciones.
¿Cómo compruebas que la configuración no te va a perjudicar?
Prueba reserva, un slot ocupado, reprogramación, cancelación, horario de verano y una solicitud desde otra zona horaria.
¿Qué pasa si el resultado no está claro?
No prometas un slot en el mensaje: pon la solicitud en needs_confirmation y pasa al manager la hora exacta y la solicitud original.






