📅Cómo conectar un agente de texto a Cal.com

Aprende a generar agendamientos automático con tus agentes de texto.

Esta guía detalla el paso a paso para integrar un agente de texto en Dapta con la agenda de Cal.com, permitiendo:

  1. Consultar disponibilidad de horarios (CheckAvailability).

  2. Agendar citas automáticamente (BookAppointment).


🟩 PARTE 1: Obtener espacios disponibles (GetSlots)

✅ Paso 1: Crear flujo desde cero

  1. Ingresa a tu cuenta de DAPTA.

  2. Ve a Flow Studio > Crear nuevo flujo desde cero.

  3. Nombra el flujo: get-slots


🔧 Paso 2: Configurar nodo de disponibilidad

  1. En el panel derecho, arrastra el nodo cal.com – Check Availability.

  2. Dirígete a tu cuenta en Cal.comarrow-up-right.

  3. En el menú lateral, selecciona Settings (Ajustes).

  1. Luego, accede a API Keys y genera un token (puede ser sin caducidad). Copia el token y pégalo en el nodo en Dapta.


📅 Paso 3: Seleccionar evento y zona horaria

  1. En el nodo, selecciona:

    • El evento (ej. “Reunión con Nicolás”).

    • La zona horaria (ej. “America/Bogota”).

✅ Dapta detectará automáticamente los eventos activos en tu cuenta de Cal.com.


🧪 Paso 4: Probar y conectar con agente de texto

  1. Agrega el nodo “Response” para retornar la respuesta de disponibilidad.

  2. Ejecuta el flujo para ver la salida con horarios disponibles.

  1. Guarda y conecta el flujo al agente de texto:

  • Dentro del agente de texto, ve a la pestaña Integraciones > Añadir nueva integración.

  • Selecciona el flujo getSlots. (lmportante que el trigger sea de tipo webhook con método POST.)

  1. Define el objetivo del agente, por ejemplo:

  • Objetivo: Buscar espacios disponibles en el calendario.

  • Instrucción

# Objetivo

Buscar espacios disponibles en mi calendario

# Ejemplo de respuesta

Debes traer los 3 espacios disponibles de los primeros 2 días.


🟨 PARTE 2: Agendar citas (BookAppointment)

✅ Paso 1: Crear nuevo flujo

  1. Ve a Flow Studio > Crear nuevo flujo desde cero.

  2. Nombra el flujo: book-appointment

  3. Asegúrate de que el tipo de Trigger sea Webhook.

  4. Establece el método como POST.

  5. Activa la opción Enable Public Access (Acceso público).

  6. En la sección de Parameters, agrega los siguientes campos:

  • Propiedades

  • lead_name

  • lead_email

  • lead_phone

  • year

  • month

  • day

  • hour

  • minute


🔧 Paso 2: Configurar nodo de agendamiento

  1. Usa el nodo cal.com – Book Appointment.

  1. Dentro del nodo selecciona:

    • La misma credencial generada en cal.com en la etapa uno debes pegarla en el campo de credenciales.

    • El evento con el cual se hará el agendamiento.

    • Zona horaria (ej: America/Bogota).

    • Idioma: Español - Latino..

3. Configurar datos dinámicos

  • lead_name

  • lead_email

  • lead_phone (opcional)

  • year (formato YYYY, ejm. 2025)

  • month (formato MM, ejm. 06)

  • day (formato DD, ejm. 12)

  • hour (formato 24h, HH, ejm. 16)

  • minute (formato MM, ejm. 00)

4. Agrega el nodo “Response” para retornar la respuesta de agendamiento.

5. Prueba tu flujo ingresando en el apartado de input del flujo para validar su correcto funcionamiento, a continuación un ejemplo para agendar 27 de mayo de 2025 a las 2:00 PM:

json

CopiarEditar

{

"lead_name": "Alberto Gómez",

"lead_email": "[email protected]",

"year": "2025",

"month": "05",

"day": "27",

"hour": "14",

"minute": "00"

}


🤖 Paso 4: Declarar valores en el agente de texto

  1. En el agente, crea una integración y vincúlala al flujo bookAppointment.

  2. Establecer instrucciones que debe seguir el agente por cada parámetro:

2.1. Instructions

# Objetivo:

  • Agendar una reunión con un lead

# Requisitos obligatorios:

- lead_name: Nombre del cliente

- lead_email: Correo electrónico del cliente

- year: Año en formato de 4 dígitos (ej. "2025")

- month: Mes en formato de 2 dígitos (ej. "05")

- day: Día en formato de 2 dígitos (ej. "27")

- hour: Hora en formato de 2 dígitos en formato 24 horas (ej. "14")

- minute: Minutos en formato de 2 dígitos (ej. "00")

# Opcional:

- lead_phone: Número de teléfono del cliente

2.2. lead _name (parameter)

# Ejemplo envío de información

*Ejemplo uno*: Nicolas

*Ejemplo dos*: Jose Manuel

*Ejemplo tres*: Juan David Hernandez

*Ejemplo cuatro*: Gustavo Angarita

2.3. lead_email (parameter)

# Ejemplo envío de información

*Ejemplo uno*: [email protected]

*Ejemplo dos*: [email protected]

*Ejemplo tres*: [email protected]

*Ejemplo cuatro*: [email protected]envelope

2.4. lead_phone (parameter)

# Ejemplo envío de información

Incluir siempre el prefijo del país

*Ejemplo uno*: +573112223344

*Ejemplo dos*: +523112223344

*Ejemplo tres*: +513112223344

*Ejemplo cuatro*: +573223335566

2.5. year (parameter)

# Ejemplo envío de información

*Ejemplo*: 2025

2.6. month (parameter)

# Ejemplo envío de información

El valor de envío siempre debe ser numérico con 2 dígitos

*Ejemplo uno si es marzo*: 03

*Ejemplo dos si es mayo*: 05

*Ejemplo tres si es enero*: 01

*Ejemplo cuatro si es septiembre*: 09

2.7. day (parameter)

# Ejemplo envío de información

El valor de envío siempre debe ser numérico con 2 dígitos

*Ejemplo uno*: 01

*Ejemplo dos*: 05

*Ejemplo tres*: 20

*Ejemplo cuatro*: 30

2.8. hour (parameter)

# Ejemplo envío de información

El valor de envío siempre debe ser numérico con 2 dígitos

*Ejemplo uno*: 00

*Ejemplo dos*: 05

*Ejemplo tres*: 14

*Ejemplo cuatro*: 23

2.9. minute (parameter)

# Ejemplo envío de información

El valor de envío siempre debe ser numérico con 2 dígitos

*Ejemplo uno*: 00

*Ejemplo dos*: 17

*Ejemplo tres*: 30

*Ejemplo cuatro*: 59


🧪 Paso 5: Configuración del agente de texto

5.1. Dentro del prompt debes indicar en el flujo conversacional la siguiente instrucción: Agendar reunión con un asesor humano Y verificación de detalles de la reunión

- Consulta la disponibilidad en el calendario ejecutando la función *get-slots* y trae los primeros 5 espacios de los primeros 2 días, luego menciona los espacios con el siguiente mensaje:

`"Tenemos disponibilidad el {{meeting_date}} a las {{meeting_time}}. ¿Te funciona esa fecha y hora?"`

- Si el cliente acepta, debes preguntarle 3 datos:

- (correo, nombre) y (número de celular que debe contener el prefijo de país sin espacios o signos)

- Si no contiene el prefijo del país o no sabes de qué país es el número pregúntale al cliente

- Luego ejecuta la función *book-appointment* y si retorna que se creó exitosamente el vento mencionale al cliente:

`"Perfecto, tu reunión ha sido agendada para el {{meeting_date}} a las {{meeting_time}}. ¡Nos vemos entonces!"`

- Si solicita otro horario:

`"Entiendo, ¿qué día y hora te resultan más convenientes?"`

- Si no hay disponibilidad:

`"Lo lamento, ese horario no está disponible. ¿Te gustaría que revisemos otra opción?"`

5.2. Incluir en el prompt la franja horaria actual

{{current_time}}: Fecha y hora actual (UTC-8)

5.3. Verificar que el modelo de AI sea GPT-4o para mejor rendimiento de la llamada.

🧪 Paso 6: Prueba completa

  1. Prueba el flujo diciendo en el chat: “Quiero agendar un cita”

    • Consultará disponibilidad la función getSlots y retornará los espacios disponibles.

  2. Según la disponibilidad debes decirle un espacio libre para agendar la reunión, por ejemplo; “Quiero agendar una cita el 29 de abril a las 10:30 AM”.

  3. El agente:

    • Usará bookAppointment para agendar y pedirá datos necesarios para el agendamiento como nombre, número de celular (opcional), correo (opcional).

    • Procede a hacer el agendamiento y si todo está correcto te dirá con exito la creación del evento.

  4. Revisa tu calendario Cal.com para confirmar que el evento se creó correctamente.


🔄 Resumen de la funciones usadas

Ambas funciones deben estar conectadas al mismo agente de texto, cada uno con su objetivo claro.

  • getSlots = disponibilidad.

  • bookAppointment = confirmación y agendamiento.

Última actualización