---
title: Cómo usar el Skill de Agendamiento en el constructor de Chatbots
slug: como-usar-el-skill-de-agendamiento-en-el-constructor-de-chatbots
docTags: 
createdAt: 2026-01-09T16:43:49.843Z
---

**Requiere:** Plan Company o superior, calendario configurado, acceso no-usuario

***

## Resumen rápido

Si ya tienes experiencia con el constructor de chatbots:

1. Ve a **Chatbots** → selecciona tu bot → abre el editor
2. En el panel izquierdo, ve a **Skills** → clic en **"+"** → selecciona **"Booking"** o **"Turnero"**
3. Crea una interacción que asigne `skill.booking.calendar_id` al ID de tu calendario
4. Agrega una acción tipo **Turnero** que mostrará los horarios disponibles
5. Cuando el cliente seleccione, `skill.booking.selected` contendrá la fecha/hora elegida

¿Primera vez? Sigue leyendo.

***

## Antes de empezar

Asegúrate de tener:

- **Un calendario creado** en AsisteClick con horarios configurados (ve a menú lateral → Eventos, o Configuración → Agendas)
- **Un chatbot existente** donde agregarás el skill (puede ser Leadbot o Custom)
- **Acceso de admin o super** (usuarios con rol "user" no pueden editar chatbots)
- **Plan Company o superior** (el skill de booking no está disponible en planes inferiores)

:::BlockQuote
**Nota:** Si aún no tienes un calendario, consulta primero "Cómo Crear y Configurar Calendarios".
:::

***

## Paso a paso

### 1. Abre el constructor de chatbots

En el menú lateral izquierdo, haz clic en **Chatbots**. Esto te lleva a la lista de bots de tu cuenta.

Selecciona el chatbot donde quieres agregar el agendamiento. Se abrirá el constructor visual (`chatbot.php`).



***

### 2. Agrega el Skill de Agendamiento

En el panel lateral izquierdo del constructor, busca la sección **Skills** (puede estar en una pestaña junto a "Interacciones" y "Memoria").

Haz clic en el botón **"+"** o **"Agregar Skill"**.

En el modal que aparece, selecciona **"Booking"**, **"Turnero"** o **"Agendamiento"** (el nombre puede variar).



Al agregar el skill, el sistema crea automáticamente variables en la memoria del bot. No necesitas crearlas manualmente.

***

### 3. Crea la interacción de solicitud de turno

Crea una nueva interacción (clic en **"+"** en la sección Interacciones) con un nombre descriptivo como `solicitar_turno`.

En la sección de **Entrenamiento (Training)**, agrega frases que los clientes usarían:

```text
Quiero agendar una cita
Necesito un turno
Puedo reservar para mañana?
Quiero consulta
Dame un turno
```

:::BlockQuote
**Importante:** Mientras más variantes agregues, mejor reconocerá el bot las solicitudes.
:::

***

### 4. Recopila los datos del cliente primero

Antes de mostrar horarios, el bot debe pedir los datos del cliente. Esto evita turnos "huérfanos" si el cliente abandona después de seleccionar horario.

Agrega **Requirements** (Requerimientos) en tu interacción:

| Variable | Pregunta                       | Tipo     | Obligatorio |
| -------- | ------------------------------ | -------- | ----------- |
| `name`   | "¿Cuál es tu nombre completo?" | Persona  | Sí          |
| `phone`  | "¿Tu número de WhatsApp?"      | Teléfono | Sí          |
| `email`  | "¿Tu email? (opcional)"        | Email    | No          |



***

### 5. Asigna el calendario

Antes de la acción del skill, necesitas indicar qué calendario usar.

Agrega una **Acción** de tipo **"Asignar variable"**:

- **Variable:** `skill.booking.calendar_id`
- **Valor:** El ID numérico de tu calendario (ej: `1`)

:::BlockQuote
**¿Cómo saber el ID?** Ve a la URL de tu calendario (`calendar.php?calendar_id=5`) → el ID es `5`.
:::



**Para múltiples calendarios** (ej: varios profesionales), usa condiciones:

```text
Si tipo_servicio == "consulta_general" → skill.booking.calendar_id = 1
Si tipo_servicio == "especialista" → skill.booking.calendar_id = 2
```

***

### 6. Agrega la acción del Skill de Agendamiento

Ahora agrega la acción principal. Haz clic en **"Agregar Acción"** y selecciona el tipo **"Turnero"** o **"Booking"**.

Esta acción automáticamente:

- Consulta el calendario configurado
- Muestra horarios disponibles al cliente
- Permite navegar entre fechas (anterior/siguiente)
- Procesa la selección del cliente

El cliente verá algo como:

```text
Bot: Estos son los horarios disponibles:

📅 Lunes 15/01 - 10:00 AM
📅 Lunes 15/01 - 11:30 AM
📅 Lunes 15/01 - 03:00 PM
📅 Martes 16/01 - 09:00 AM

[< Anterior]  [Siguiente >]
```



***

### 7. Confirma el turno

Cuando el cliente selecciona un horario, la variable `skill.booking.selected` se llena automáticamente.

Agrega una acción de **Mensaje de texto** para confirmar:

```text
✅ ¡Listo {{name}}! Tu turno ha sido confirmado.

📅 Fecha: {{skill.booking.selected.friendly}}
📍 Ubicación: {{skill.booking.location}}
🔑 Código: {{skill.booking.code}}

Te enviaremos recordatorios antes de tu cita.
```

Para que el turno se registre oficialmente, asigna:

- **Variable:** `skill.booking.confirmed`
- **Valor:** `yes`



***

### 8. Guarda y prueba

Haz clic en **"Guardar"** (o "Grabar bot") en la parte superior.



Usa el botón **"Probar"** para simular la conversación completa:

1. Escribe "Quiero un turno"
2. Ingresa nombre y teléfono
3. Verifica que aparezcan los horarios
4. Selecciona uno y confirma

***

## Variables del Skill

Estas variables se crean automáticamente al agregar el skill:

| Variable                          | Tipo       | Descripción                                    |
| --------------------------------- | ---------- | ---------------------------------------------- |
| `skill.booking.calendar_id`       | Número     | ID del calendario a usar (debes asignarlo)     |
| `skill.booking.date`              | Fecha      | Fecha preferida del cliente (opcional)         |
| `skill.booking.selected`          | Fecha/Hora | Fecha/hora que el cliente eligió               |
| `skill.booking.selected.friendly` | Texto      | Fecha legible: "Lunes 15 de Enero a las 10:00" |
| `skill.booking.code`              | Texto      | Código de confirmación generado (ej: "XY7K9")  |
| `skill.booking.confirmed`         | Texto      | `"yes"` si confirmado, vacío si no             |
| `skill.booking.location`          | Texto      | Ubicación de la cita (del calendario)          |
| `skill.booking.minutes`           | Número     | Duración en minutos                            |
| `skill.booking.filter`            | Texto      | Control de paginación (uso interno)            |

**Variables privadas** (no mostrar al cliente):

- `evtid` - ID interno del evento
- `skill.booking.selected.event_id` - ID del evento en el calendario

***

## Ejemplo completo: Consultorio médico

### Flujo de la conversación

```text
Usuario: Quiero agendar una consulta

Bot: Perfecto, vamos a agendar tu consulta.
     ¿Cuál es tu nombre completo?

Usuario: Juan Pérez

Bot: Gracias Juan.
     ¿Cuál es tu número de WhatsApp para recordatorios?

Usuario: +54911...

Bot: Excelente, estos son los horarios disponibles:
     📅 Lunes 15/01 - 10:00 AM
     📅 Lunes 15/01 - 11:30 AM
     📅 Martes 16/01 - 09:00 AM
     [< Anterior] [Siguiente >]

Usuario: [Selecciona Lunes 15/01 - 10:00 AM]

Bot: ✅ ¡Listo Juan! Tu consulta ha sido confirmada.

     📅 Fecha: Lunes 15 de Enero a las 10:00
     📍 Ubicación: Consultorio 3, Piso 2
     ⏱️ Duración: 30 minutos
     🔑 Código: ABC123

     📝 Llega 10 minutos antes y trae tu DNI.

     ¿Hay algo más en lo que pueda ayudarte?
```

### Estructura en el constructor

1. **Interacción:** `solicitar_turno`
   - Training: frases de solicitud de turno
   - Requirements: `name` (Persona), `phone` (Teléfono)
2. **Acciones:**
   - Asignar `skill.booking.calendar_id = 1`
   - Mensaje: "Buscando horarios..."
   - Acción tipo Turnero/Booking
3. **Interacción de confirmación** (trigger: `skill.booking.selected` no vacío)
   - Asignar `skill.booking.confirmed = yes`
   - Mensaje de confirmación con variables

***

## Problemas comunes

| Problema                         | Causa                                   | Solución                                               |
| -------------------------------- | --------------------------------------- | ------------------------------------------------------ |
| "No aparecen horarios"           | `skill.booking.calendar_id` no asignado | Agrega acción de asignar variable antes del skill      |
| "No aparecen horarios"           | Calendario sin slots configurados       | Verifica horarios en el módulo Agendas                 |
| "Horarios en el pasado"          | Zona horaria incorrecta                 | Ajusta la zona horaria en configuración del calendario |
| "Bot no entiende 'quiero turno'" | Pocas frases de entrenamiento           | Agrega más variantes y re-entrena el bot               |
| "Turno no se registra"           | Falta `skill.booking.confirmed = yes`   | Agrega esta asignación después de la confirmación      |
| "No puedo agregar el skill"      | Plan no lo incluye                      | Verifica que tengas Plan Company o superior            |
| "Skill ya existe"                | Solo se agrega una vez por bot          | Busca en la lista de Skills, ya está agregado          |

***

## Preguntas frecuentes

**¿Puedo tener múltiples calendarios en un mismo chatbot?**
Sí. Usa condiciones para asignar diferentes valores a `skill.booking.calendar_id` según la elección del cliente.

**¿El cliente puede cancelar desde el chatbot?**
Sí, pero requiere crear una interacción adicional que use la variable `skill.booking.code` para identificar el turno y llamar a la acción de cancelación.

**¿Funciona en WhatsApp, Facebook, Telegram?**
Sí, funciona en todos los canales. La experiencia puede variar ligeramente según las capacidades de cada plataforma.

**¿Los recordatorios se envían automáticamente?**
Sí, si configuraste recordatorios en el calendario. El skill los activa automáticamente.

**¿Cuántos horarios muestra a la vez?**
La cantidad se configura en el calendario (campo "Horarios por página"), no en el chatbot. Recomendado: 6-8.

***

## Tutoriales relacionados

- **Cómo Crear y Configurar Calendarios** - Prerequisito para este skill
- **Introducción al Constructor de Bots** - Si es tu primer chatbot
- **Catálogo de Skills para Chatbots** - Ver todos los skills disponibles
- **Cómo Usar el Skill de Pagos (MercadoPago)** - Para cobrar reservas

***

*Última actualización: Diciembre 2025*
