# Funciones del agente

Las funciones son capacidades adicionales que puedes activar para que el agente realice acciones concretas durante la conversación: agendar citas, registrar reclamos, consultar el historial del contacto, hacer seguimiento automático y más.

A diferencia de las instrucciones (que definen el comportamiento), las funciones permiten al agente interactuar directamente con servicios y datos de la plataforma.

> 🧩 ¿Necesitas una función a medida (por ejemplo, registrar una fecha de recontacto y enviarla a tu CRM)? Mira [Funciones personalizadas](funciones-personalizadas.md).

### Cómo agregar una función

1. En la ficha del agente, abre la sección **Funciones del agente**.
2. Haz clic en **+ Agregar función**.
3. Elegí la categoría desde las pestañas de arriba (Atención al cliente, Citas, Llamadas, CRM…) y hacé clic en la tarjeta de la función que querés activar.
4. Si la función necesita datos (por ejemplo una API key), se abre un formulario para completarlos y se activa sola al guardar.
5. Si la función **no** necesita datos, podés seleccionar **varias tarjetas a la vez** (se marcan en verde) y activarlas todas juntas con el botón **"Activar N funciones"**.

Las funciones activas aparecen en la lista de **"Funciones instaladas"**, y sus tarjetas quedan marcadas con **✓ Instalada** en el selector (ya no se pueden volver a agregar). Para quitar una función, haz clic en el ícono de eliminar junto a ella en la lista.

> 💡 Cada función que activas extiende las instrucciones del agente automáticamente. Si quieres personalizar cómo el agente usa esa función, puedes editar las instrucciones manualmente después de agregarla.

***

## 🔍 Extractores de información

Los extractores definen **qué datos quieres capturar** de cada conversación (nombre, intención, presupuesto, producto de interés, etc.). Cuando los configuras, el agente captura automáticamente esa información durante el diálogo y la guarda en la **ficha del contacto** una vez que el lead se cualifica o finaliza la conversación.

Funcionan igual que los extractores de los agentes de voz: tú defines los campos y el sistema se encarga del resto. No necesitas crear ninguna función a mano.

### Cómo configurarlos

1. En la ficha del agente, abre la sección **Extractores de información**.
2. Haz clic en **+ Agregar extractor**.
3. Define el campo:
   - **Tipo de dato**: Texto, Número, Sí/No (boolean) u Opciones fijas (enum).
   - **Nombre del campo**: en `snake_case`, sin espacios (ej: `nombre`, `presupuesto`, `producto_interes`).
   - **Descripción**: qué debe capturar el agente en ese campo.
   - **Ejemplos** (opcional): para guiar al modelo.
   - **Opciones** (solo enum): los valores permitidos, separados por coma.
   - **Campo obligatorio** (opcional): marca si el agente debe intentar siempre obtenerlo.
4. Haz clic en **Agregar** y repite por cada dato que quieras capturar.
5. Haz clic en **Guardar extractores**.

Al guardar, el sistema activa de forma automática una función oculta en el agente que recopila esos campos. No aparece en la lista de **Funciones del agente** — se gestiona por completo desde esta sección.

### Tipos de dato

| Tipo            | Para qué sirve                                          | Ejemplo                          |
| --------------- | ------------------------------------------------------- | -------------------------------- |
| **Texto**       | Cualquier valor libre                                   | `nombre`, `direccion`            |
| **Número**      | Cantidades, montos, edades                              | `presupuesto`, `cantidad`        |
| **Sí / No**     | Datos verdadero/falso                                   | `tiene_vehiculo`, `es_cliente`   |
| **Opciones fijas** | El agente elige entre una lista cerrada de valores   | `interes`: `alto`, `medio`, `bajo` |

### Dónde se ven los datos capturados

Cada dato que el agente captura aparece en la **ficha del contacto** (en Contactos / Leads), junto al resto de su información. Así puedes ver de un vistazo todo lo que se recopiló en la conversación, con cada campo y su valor.

> 💡 El agente captura los datos de forma natural, sin pedirlos todos de golpe, y vuelve a guardarlos si más adelante obtiene información adicional. No hace falta que edites las instrucciones: al guardar extractores, el sistema agrega la indicación necesaria al agente.

***

## 📅 Agenda Cal.com

Permite al agente consultar disponibilidad, reservar, reprogramar y cancelar citas en **Cal.com** directamente desde la conversación.

Agrega 4 funciones al agente:

| Función              | Qué hace                                                  |
| -------------------- | --------------------------------------------------------- |
| `check_availability` | Consulta los horarios disponibles para un rango de fechas |
| `create_booking`     | Reserva un turno para el contacto                         |
| `reschedule_booking` | Reprograma una reserva existente                          |
| `cancel_booking`     | Cancela una reserva existente                             |

**Campos requeridos al activar:**

| Campo              | Descripción                                                                                  |
| ------------------ | -------------------------------------------------------------------------------------------- |
| API Key de Cal.com | Clave de acceso a tu cuenta (formato: `cal_live_...`).                                       |
| Event Type ID      | ID numérico del tipo de evento en Cal.com.                                                   |
| Zona horaria       | Zona horaria por defecto si el contacto no la indica (ej: `America/Argentina/Buenos_Aires`). |

***

## 📅 Google Calendar

Permite al agente consultar disponibilidad, crear reuniones, reprogramar y cancelar citas directamente en **Google Calendar**. Cada reunión incluye automáticamente un link de videollamada de Google Meet que le llega al contacto por email.

**Requisito previo:** conectar Google Calendar en **Integraciones** antes de activar esta función. Ver [Google Calendar](../integraciones/google-calendar.md).

Agrega 4 funciones al agente:

| Función                   | Qué hace                                                              |
| ------------------------- | --------------------------------------------------------------------- |
| `gcal_check_availability` | Consulta los horarios libres en el calendario para un rango de fechas |
| `gcal_create_event`       | Crea la reunión con invitación al contacto y link de Google Meet      |
| `gcal_update_event`       | Reprograma o modifica una reunión existente                           |
| `gcal_cancel_event`       | Cancela una reunión existente                                         |

No requiere campos adicionales al activar — el agente usa el calendario configurado en Integraciones.

> 💡 El agente solicita nombre, email y teléfono del contacto antes de crear la reunión. El contacto recibe la invitación con el link de Google Meet directamente en su correo.

***

## 🟢 Go High Level (CRM)

Permite al agente trabajar directamente sobre tu CRM de **Go High Level** durante la conversación: buscar el contacto, crearlo o actualizarlo, dejar notas visibles, etiquetar, abrir oportunidades en tu pipeline y agendar citas.

**Requisito previo:** conectar Go High Level en **Integraciones** antes de activar esta función. Ver [Go High Level](../integraciones/go-high-level.md).

Agrega estas funciones al agente:

| Función                 | Qué hace                                                                                                    |
| ----------------------- | ----------------------------------------------------------------------------------------------------------- |
| `ghl_buscar_contacto`   | Busca el contacto en GHL por teléfono o email y devuelve nombre, datos y etiquetas                          |
| `ghl_guardar_contacto`  | Crea o actualiza el contacto sin duplicar                                                                    |
| `ghl_agregar_nota`      | Guarda una nota en el contacto **y** la deja visible en la conversación, etiquetada como nota del agente IA  |
| `ghl_agregar_tag`       | Agrega una o más etiquetas al contacto                                                                       |
| `ghl_crear_oportunidad` | Abre una oportunidad para el contacto en el pipeline y etapa por defecto                                     |
| `ghl_disponibilidad`    | Consulta los horarios libres de un calendario de GHL                                                         |
| `ghl_reservar_cita`     | Reserva una cita en el calendario de GHL para el contacto                                                    |

No requiere campos adicionales al activar — el agente usa las credenciales y el pipeline/calendario configurados en Integraciones.

> 💡 La nota del agente (`ghl_agregar_nota`) se ve apenas abres el contacto: además de quedar en la pestaña de Notas, aparece en el hilo de la conversación prefijada con _"🤖📝 Nota del agente IA:"_. Es un registro interno, no se le envía nada al cliente.

***

## 🟠 Clientify (CRM)

Permite al agente trabajar directamente sobre tu CRM de **Clientify** durante la conversación: buscar el contacto, crearlo o actualizarlo, dejar notas, etiquetar, abrir oportunidades en tu pipeline, crear tareas y agendar citas.

**Requisito previo:** conectar Clientify en **Integraciones** antes de activar esta función. Ver [Clientify](../integraciones/clientify.md).

A diferencia de otros bundles, las funciones de Clientify se activan **por separado**: activá solo las que necesites (por ejemplo, solo el CRM) y combiná con otra integración para lo que Clientify no cubre.

| Función                       | Qué hace                                                                     |
| ------------------------------ | ----------------------------------------------------------------------------- |
| `clientify_buscar_contacto`    | Busca el contacto en Clientify por teléfono o email                          |
| `clientify_guardar_contacto`   | Crea o actualiza el contacto sin duplicar                                    |
| `clientify_agregar_nota`       | Guarda una nota en el contacto                                               |
| `clientify_agregar_tag`        | Agrega una o más etiquetas al contacto                                       |
| `clientify_crear_oportunidad`  | Abre una oportunidad (deal) para el contacto en el pipeline y etapa por defecto |
| `clientify_mover_etapa`        | Mueve la oportunidad del contacto a otra etapa, por **nombre** de la etapa   |
| `clientify_crear_tarea`        | Crea una tarea o seguimiento asociado al contacto                            |
| `clientify_agendar_cita`       | Agenda una cita para el contacto (se registra como una tarea)                |

No requiere campos adicionales al activar — el agente usa las credenciales y el pipeline/etapa configurados en Integraciones.

> 💡 Para `clientify_mover_etapa`, decile al agente el **nombre** de la etapa (ej. "Ganado"), no un identificador. Si no encuentra una coincidencia exacta, el agente te ofrece las etapas disponibles del pipeline.
>
> 💡 Clientify no tiene un módulo de agenda con consulta de disponibilidad: `clientify_agendar_cita` crea directamente una tarea marcada como cita. Si necesitás que el agente proponga horarios libres, combiná esta función con Google Calendar o Cal.com.

***

## 🟣 Odoo (CRM)

Permite al agente trabajar directamente sobre tu **Odoo** durante la conversación: buscar el contacto, crearlo o actualizarlo, dejar notas, etiquetar, abrir oportunidades en tu pipeline, crear tareas reales y agendar citas en el calendario.

**Requisito previo:** conectar Odoo en **Integraciones** antes de activar esta función. Ver [Odoo CRM](../integraciones/odoo.md).

Al igual que Clientify, las funciones de Odoo se activan **por separado**: activá solo las que necesites.

| Función                   | Qué hace                                                                     |
| ------------------------- | --------------------------------------------------------------------------- |
| `odoo_buscar_contacto`    | Busca el contacto en Odoo por teléfono o email                              |
| `odoo_guardar_contacto`   | Crea o actualiza el contacto sin duplicar                                    |
| `odoo_agregar_nota`       | Guarda una nota en el chatter del contacto                                   |
| `odoo_agregar_tag`        | Agrega una o más etiquetas al contacto                                       |
| `odoo_crear_oportunidad`  | Abre una oportunidad en el pipeline CRM                                      |
| `odoo_mover_etapa`        | Mueve la oportunidad del contacto a otra etapa, por **nombre** de la etapa   |
| `odoo_crear_tarea`        | Crea una actividad/tarea real asociada al contacto                          |
| `odoo_disponibilidad`     | Consulta los eventos ya agendados de un día para ofrecer horarios libres     |
| `odoo_agendar_cita`       | Agenda una **cita real** en el calendario de Odoo                           |

No requiere campos adicionales al activar — el agente usa las credenciales y el equipo de ventas configurados en Integraciones. Las funciones de agenda (`odoo_disponibilidad`, `odoo_agendar_cita`) están en la pestaña **Citas**.

> 💡 Para `odoo_mover_etapa`, decile al agente el **nombre** de la etapa (ej. "Qualified", "Won"), no un identificador. Si no hay coincidencia, ofrece las etapas disponibles de tu pipeline.
>
> 💡 A diferencia de Clientify, Odoo **sí tiene calendario real**: `odoo_agendar_cita` crea una cita de verdad y `odoo_disponibilidad` permite revisar qué franjas están ocupadas antes de proponer un horario. Las horas se manejan en **UTC**.

***

## 🎫 Sistema de Tickets de soporte

Permite al agente registrar y consultar reclamos o consultas del contacto como tickets de soporte, asignándoles un número de caso (ej. `CAS-000042`).

Agrega 3 funciones al agente:

| Función                | Qué hace                                                      |
| ---------------------- | ------------------------------------------------------------- |
| `crear_ticket_soporte` | Registra un nuevo reclamo o consulta como ticket              |
| `consultar_ticket`     | Consulta el estado de un caso existente por número o teléfono |
| `actualizar_ticket`    | Agrega una nota al ticket cuando el contacto da seguimiento   |

No requiere campos adicionales al activar.

***

## 👤 Consulta de ficha del contacto

Permite al agente acceder al historial registrado del contacto en Anunzi: datos personales, estado, score y notas recientes. Útil para personalizar la conversación sin pedirle al contacto información que ya fue capturada.

Agrega 1 función:

| Función              | Qué hace                                                            |
| -------------------- | ------------------------------------------------------------------- |
| `consultar_contacto` | Devuelve la ficha del contacto actual (o de un teléfono específico) |

No requiere campos adicionales al activar.

***

## 📝 Notas al contacto

Permite al agente guardar notas en la ficha del contacto durante o al finalizar la conversación. Ideal para registrar resúmenes, compromisos o información relevante mencionada.

Agrega 1 función:

| Función        | Qué hace                                                     |
| -------------- | ------------------------------------------------------------ |
| `agregar_nota` | Guarda una nota en la sección Notas de la ficha del contacto |

El agente guarda la nota de forma silenciosa, sin avisarle al contacto.

No requiere campos adicionales al activar.

***

## 📞 Historial de llamadas

Permite al agente consultar las llamadas telefónicas previas que el contacto tuvo con un agente de voz de tu cuenta. Útil para contextualizar la conversación cuando el contacto hace referencia a una llamada anterior.

Agrega 1 función:

| Función              | Qué hace                                                                         |
| -------------------- | -------------------------------------------------------------------------------- |
| `consultar_llamadas` | Devuelve el historial de llamadas del contacto con el agente de voz seleccionado |

**Campos requeridos al activar:**

| Campo                | Descripción                                      |
| -------------------- | ------------------------------------------------ |
| Agente de llamadas   | El agente de voz cuyas llamadas se consultarán.  |
| Llamadas a recuperar | Cantidad máxima de llamadas a traer (3, 5 o 10). |

***

## 🔄 Seguimiento Automático

El seguimiento automático permite que el agente retome contacto con personas que iniciaron una conversación pero no volvieron a escribir. Pasados X días de inactividad, el agente les envía un mensaje de seguimiento personalizado por IA, basado en el historial de la conversación.

> ⚠️ Esta función se configura en la sección **Seguimiento Automático** de la ficha del agente, no en el selector de funciones. El agente debe tener un número de WhatsApp conectado para poder activarla.

{% embed url="https://youtu.be/OUpdXKYqZtQ" %}

### ¿Cómo funciona?

1. La conversación finaliza sin que el contacto haya resuelto su consulta o completado una acción.
2. Pasados los días configurados, el agente revisa el historial de la conversación con IA y genera un mensaje de seguimiento personalizado.
3. Envía el mensaje usando una plantilla de WhatsApp aprobada por Meta (obligatorio para mensajes proactivos fuera de la ventana de 24 horas).
4. Si el contacto responde, la conversación retoma normalmente con el agente.

### Cómo activarlo

1. En la ficha del agente, abre la sección **Seguimiento Automático**.
2. Activa el toggle **"Activar seguimiento automático"**.
3. El sistema crea automáticamente una plantilla de WhatsApp en tu cuenta de Meta y muestra su estado.
4. Configura los parámetros según tus necesidades.

### Configuración

| Campo                      | Descripción                                                                                                                   |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| **Días de espera**         | Cuántos días de inactividad deben pasar antes de enviar el seguimiento. Rango: 1 a 30 días.                                   |
| **Máx. seguimientos**      | Cantidad máxima de mensajes de seguimiento por conversación (1 a 3).                                                          |
| **Personalización con IA** | Si está activo, el agente revisa el historial y genera un mensaje contextual. Si está desactivado, envía un mensaje genérico. |

### Estado de la plantilla

| Estado                        | Qué significa                                                                                              |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------- |
| ✅ **Activa**                  | La plantilla está aprobada y el seguimiento funcionará.                                                    |
| ⏳ **Pendiente de aprobación** | Meta está revisando la plantilla (24-48 horas). El seguimiento comenzará automáticamente una vez aprobada. |
| ❌ **Rechazada**               | Meta rechazó la plantilla. Usa el botón **Crear plantilla** para generar una nueva.                        |

### Ejemplo de mensaje generado

> _Hola María, ¿pudiste revisar los planes que estabas comparando? Seguimos disponibles para ayudarte._

El mensaje se adapta al tema de la conversación original. Si la personalización con IA está desactivada, el mensaje es genérico.

### Créditos

Cada mensaje de seguimiento consume créditos equivalentes a un envío de **plantilla de campaña de WhatsApp**. Ver [Sobre los créditos](../creditos.md).
