> For the complete documentation index, see [llms.txt](https://anunzi-ai.gitbook.io/anunzi-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://anunzi-ai.gitbook.io/anunzi-docs/agentes-de-voz/agentes-de-llamada/ficha-del-agente.md).

# Ficha del agente

La ficha del agente es la pantalla central donde configuras todos los aspectos de un agente de voz: su identidad, instrucciones, voz, funciones disponibles, comportamiento y los datos que extrae de cada llamada. Cada sección se guarda de forma independiente.

***

## Cómo acceder

En el menú lateral ve a **Agentes de Llamada**, selecciona el agente que quieres configurar y haz clic en su nombre.

***

## Encabezado del agente

En la parte superior verás:

* **Nombre del agente**
* **ID del agente** — identificador único del agente en el sistema.
* **API Token** — token de autenticación del agente. Haz clic sobre él para copiarlo al portapapeles. Se usa para autenticar las herramientas del sistema y la API de llamadas.
* **Teléfono** — número asignado al agente, si tiene uno configurado.
* Insignias de estado: **Canal** (Voz / Voz + WhatsApp), **Dirección** (Entrante / Saliente), **Estado** (Activo / Inactivo).

***

## Probar agente de voz en tiempo real

Justo debajo del encabezado aparece el bloque de prueba. Te permite iniciar una llamada de voz con el agente directamente desde el navegador, sin necesidad de un teléfono.

| Estado                        | Lo que verás                                                                              |
| ----------------------------- | ----------------------------------------------------------------------------------------- |
| ✅ Tienes créditos disponibles | Tarjeta verde con el saldo actual y el botón **📞 Probar agente de voz**.                 |
| ❌ Sin créditos                | Tarjeta naranja con el botón **💳 Recargar créditos** que te lleva a la sección de saldo. |

> ⚠️ Las llamadas de prueba se cobran igual que las llamadas entrantes reales: por minuto, según la tarifa `voice_inbound` de tu plan. El saldo se descuenta del titular del agente al finalizar la llamada.

***

## Probar LLM en texto

Debajo del bloque de prueba de voz aparece **Probar LLM en texto** (tarjeta celeste). Te permite conversar con el agente **por escrito** para verificar cómo responde, qué **funciones** ejecuta y cómo transita entre nodos o estados, **sin gastar minutos de llamada**.

Es la forma más rápida y económica de iterar sobre el prompt y las funciones: pruebas el comportamiento del LLM sin hacer una llamada real.

### Cómo usarlo

1. Escribe un mensaje como si fueras el cliente y presiona **Enviar** (o la tecla Enter).
2. El agente responde en el chat. Debajo del último mensaje verás información de diagnóstico del turno.
3. Usa **↻ Reiniciar** para empezar una conversación nueva desde cero.

### Qué muestra el chat

Además de los mensajes del cliente y del agente, el chat muestra "en vivo" lo que ocurre por dentro:

| Elemento                    | Qué indica                                                       |
| --------------------------- | ---------------------------------------------------------------- |
| 🔧 **Función ejecutada**    | La función que el agente llamó y, a continuación, su resultado.  |
| ➡️ **Transición**           | El cambio de nodo o estado (en agentes de flujo conversacional). |
| 📚 **Base de conocimiento** | Cuántos fragmentos de la base consultó el agente en ese turno.   |
| **Nodo / estado actual**    | En qué punto del flujo quedó la conversación.                    |
| **Saldo y cobro**           | El saldo restante y cuántos créditos costó el mensaje.           |

> 💡 El chat usa la **versión actual del agente** (el borrador que estás editando), así que pruebas exactamente los cambios que acabas de hacer, sin necesidad de publicar.

> ⚠️ Cada mensaje se cobra **2 créditos** (equivalente a $0.02). Es mucho más económico que un minuto de voz, pero se descuenta del saldo del titular del agente. Si la cuenta no tiene créditos, el chat avisa y no envía el mensaje.

***

## Sección: Identidad

Define la información básica del agente, visible dentro del panel.

| Campo              | Descripción                                                                                                  |
| ------------------ | ------------------------------------------------------------------------------------------------------------ |
| 🏷️ **Nombre**     | Nombre para identificarlo en el panel. No lo escucha quien llama.                                            |
| 📝 **Descripción** | Texto opcional con el propósito del agente.                                                                  |
| 📷 **Foto**        | Imagen de avatar (JPG, PNG, WEBP o GIF, máx. 3 MB). Si no se sube ninguna, se muestra la inicial del nombre. |

Haz clic en **Guardar identidad** para aplicar los cambios.

***

## Sección: Instrucciones del agente

Define el comportamiento del agente durante las llamadas. Es la configuración más importante: determina quién es, cómo responde y qué puede o no puede hacer.

| Campo                      | Descripción                                                                                                                                                                    |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 👋 **Mensaje de apertura** | Primera frase que dice el agente al iniciar la llamada. Ejemplo: *"Hola, ¿en qué puedo ayudarte hoy?"*. Déjalo vacío si prefieres que el agente espere a que hable el usuario. |
| 📝 **Instrucciones**       | El prompt completo del agente: rol, tono, objetivos, límites y cómo manejar distintas situaciones. Cuanto más detallado, mejor el desempeño.                                   |

Haz clic en **Guardar instrucciones** para aplicar los cambios. Los cambios toman efecto desde la próxima llamada.

> 💡 Usa párrafos y listas en las instrucciones para estructurar el comportamiento en secciones claras (presentación, flujo de conversación, casos especiales, cierre).

***

## Sección: Voz del agente

Define con qué voz habla el agente y cómo suena.

### Cambiar la voz

Haz clic en **🎙️ Cambiar voz** (o **Elegir voz** si aún no tiene una asignada) para abrir el selector. El selector tiene dos pestañas: **Voces de la plataforma** y **🧬 ElevenLabs**.

#### Pestaña "Voces de la plataforma"

Es el catálogo de voces disponibles. Dentro puedes:

* 🔍 **Buscar** por nombre de voz.
* Filtrar por **idioma** usando las pastillas de idioma.
* Filtrar por **género**: Todos / Femenina / Masculina.
* Escuchar la **vista previa** de audio de cada voz antes de seleccionarla.

Haz clic en **Seleccionar** en la tarjeta de la voz que prefieras.

#### Pestaña "🧬 ElevenLabs"

<figure><img src="/files/nNRg8SLhHA84m6HM7fX6" alt=""><figcaption></figcaption></figure>

Te permite agregar cualquier voz de la **biblioteca pública de ElevenLabs** usando solo su ID, sin salir del panel.

1. Abre la biblioteca de voces de ElevenLabs y copia el **ID de la voz** que quieras (ej: `9FG0AH71kXEuvM9IJg7u`).
2. Pégalo en el campo **ID de voz de ElevenLabs**. Opcionalmente escribe un **Nombre**; si lo dejas vacío se toma el nombre original de ElevenLabs.
3. Haz clic en **Agregar voz**. El sistema detecta automáticamente el dueño de la voz y la incorpora a tu catálogo.
4. Aparece la voz resultante como una tarjeta con su vista previa. Haz clic en **Seleccionar esta voz**.
5. Confirma con **Guardar voz** para asignarla al agente.

Una vez agregada, la voz también queda disponible en la pestaña **Voces de la plataforma** para reutilizarla en otros agentes.

> 💡 El campo **Public owner ID** dentro de *Opciones avanzadas* casi nunca se necesita: el dueño se detecta solo. Úsalo únicamente si quieres forzar un dueño específico.

> ⚠️ Funciona con voces **publicadas en la biblioteca** de ElevenLabs. Si el ID corresponde a una voz privada no compartida, el sistema avisa que no pudo encontrarla.

### Ajustes de la voz

| Parámetro                            | Rango     | Descripción                                                                                               |
| ------------------------------------ | --------- | --------------------------------------------------------------------------------------------------------- |
| 🎚️ **Velocidad de voz**             | 0.5 – 2.0 | Qué tan rápido habla el agente. 1.0 = velocidad normal.                                                   |
| 🌡️ **Temperatura de voz**           | 0.0 – 2.0 | Variación emocional en la voz. 1.0 = equilibrado.                                                         |
| ⚡ **Velocidad de respuesta**         | 0.0 – 1.0 | Cuán rápido reacciona el agente después de que el usuario termina de hablar. 1.0 = respuesta inmediata.   |
| 🤫 **Sensibilidad a interrupciones** | 0.0 – 1.0 | Con qué facilidad el agente cede la palabra si el usuario habla mientras él habla. 1.0 = cede fácilmente. |

También seleccionas el **Idioma** en que el agente interpreta y habla.

Haz clic en **Guardar voz** para aplicar los cambios.

***

## Sección: Base de conocimiento

La base de conocimiento es el contenido que el agente puede consultar durante una llamada: preguntas frecuentes, catálogos de productos, políticas de la empresa, etc.

### Bases vinculadas

Cada base de conocimiento aparece como una tarjeta con su nombre, estado y acciones:

| Estado            | Significado                                                 |
| ----------------- | ----------------------------------------------------------- |
| **Lista**         | Procesada y disponible para el agente.                      |
| **Procesando…**   | Se está indexando. Puede tardar unos minutos.               |
| **Actualizando…** | Refrescando contenido (para bases con URLs).                |
| **Error**         | Falló el procesamiento. Intenta agregar la fuente de nuevo. |

### Ver fuentes de una base

Haz clic en **📋 Fuentes** para expandir el panel de fuentes de esa base. Cada fuente muestra:

* 📄 Documentos — nombre del archivo y tamaño.
* 🔗 URLs — dirección web indexada.
* ✏️ Textos — título del contenido.

Desde ese panel puedes:

* **⬇️** — Descargar o abrir la fuente original.
* **🗑️** — Eliminar esa fuente de la base. La base se reprocesa automáticamente.

### Agregar fuentes a una base existente

Haz clic en **➕ Agregar** en la tarjeta de la base. Se abre un modal con tres tabs:

| Tab         | Qué permite                                                                        |
| ----------- | ---------------------------------------------------------------------------------- |
| **Archivo** | Sube un archivo PDF, DOCX, TXT, MD, HTML o CSV (máx. 50 MB).                       |
| **URL**     | Ingresa una o más URLs (una por línea). Retell indexa el contenido de cada página. |
| **Texto**   | Pega texto directamente con un título. Útil para FAQs, políticas, etc.             |

### Desvincular una base

Haz clic en **Desvincular** para quitar la base de este agente. La base no se elimina de tu cuenta — solo deja de estar disponible para este agente.

### Crear una nueva base

Haz clic en **➕ Crear nueva base**. Ingresa un nombre (máx. 40 caracteres) y, opcionalmente, un archivo inicial. Puedes agregar más fuentes después.

### Vincular una base existente

Haz clic en **🔗 Vincular existente** para ver todas las bases de tu cuenta que aún no están vinculadas a este agente. Haz clic en **Vincular** en la que quieras agregar.

> ⚠️ El agente consulta la base solo cuando la pregunta del usuario lo requiere. No cita los documentos textualmente: los interpreta para dar respuestas naturales.

***

## Sección: Funciones del agente

Las funciones permiten que el agente realice acciones concretas durante la llamada: transferir, consultar disponibilidad, agendar, ejecutar código, llamar a una API externa o usar herramientas integradas del sistema.

### Herramientas del Sistema

Son funciones predefinidas que se integran directamente con el panel Anunzi. Se autentican automáticamente con el API Token del agente.

#### 🎫 Sistema de Tickets de soporte

Activa tres funciones juntas para que el agente pueda gestionar reclamos durante la llamada:

| Función                | Qué hace                                                                    |
| ---------------------- | --------------------------------------------------------------------------- |
| `crear_ticket_soporte` | Crea un ticket nuevo con título, categoría, prioridad y datos del contacto. |
| `consultar_ticket`     | Consulta el estado de un ticket existente por número de caso o teléfono.    |
| `actualizar_ticket`    | Agrega una nota a un ticket existente y/o cambia su estado.                 |

Cuando el agente crea un ticket, el contacto recibe su **número de caso** (ej: *"tu número de caso es el 42"*). Los tickets quedan visibles en la sección **Tickets** del panel.

#### 👤 Consultar contacto

Permite al agente consultar la ficha y el historial reciente del contacto durante la llamada.

El agente busca por el número de teléfono del contacto y recibe nombre, estado, datos del lead y notas de los últimos 7 días.

***

#### 📝 Agregar nota al contacto

Permite al agente registrar una nota en el perfil del contacto durante la llamada. La nota queda guardada en el historial del lead y es visible desde su ficha en el panel.

| Campo        | Descripción                                                                                                |
| ------------ | ---------------------------------------------------------------------------------------------------------- |
| **Teléfono** | Número del contacto sobre el que se registra la nota (el agente lo obtiene automáticamente de la llamada). |
| **Nota**     | Texto libre con la información a registrar. Máximo 2 000 caracteres.                                       |

**Casos de uso típicos:**

* Dejar constancia de lo que el contacto solicitó o acordó en la llamada.
* Registrar compromisos, fechas importantes o preferencias del contacto.
* Documentar el resultado de la llamada directamente desde la conversación.

> ⚠️ Si el número de teléfono no coincide con ningún contacto existente en tu cuenta, la nota no se guarda y el agente recibe un mensaje de error.

***

#### 🕐 Verificar horario actual

Permite al agente consultar la fecha y hora actuales en una zona horaria específica. Útil para informar al contacto qué hora es, verificar si se está dentro del horario de atención o referenciar la fecha en la conversación.

Al agregar esta función, selecciona la **zona horaria** en la que opera tu empresa. Las opciones disponibles cubren las principales zonas de América y Europa.

**Casos de uso típicos:**

* *"¿En qué horario pueden llamarme?"* → el agente consulta la hora actual y responde en contexto.
* Verificar si una sucursal está abierta antes de ofrecer un turno.
* Registrar en la conversación la fecha y hora exacta de un compromiso.

> 💡 La zona horaria se configura una sola vez en la ficha del agente. No es necesario que el contacto la mencione durante la llamada.

***

#### 💬 Consultar conversación de WhatsApp

Permite al agente recuperar el historial reciente de mensajes de WhatsApp de un contacto. Así el agente tiene contexto de lo que se habló por escrito antes o durante la llamada.

| Campo                    | Descripción                                                   |
| ------------------------ | ------------------------------------------------------------- |
| **Agente de WhatsApp**   | Selecciona cuál de tus agentes de WhatsApp se consultará.     |
| **Cantidad de mensajes** | Cuántos mensajes recientes traer (por defecto 20, máximo 50). |

Al activar esta función se inyectan automáticamente las instrucciones necesarias en el prompt del agente para que sepa cuándo y cómo usarla.

**Casos de uso típicos:**

* El contacto llama para continuar una consulta que empezó por WhatsApp — el agente ya sabe de qué se trata.
* Verificar si el contacto recibió o respondió un mensaje enviado previamente.
* Dar seguimiento a una conversación sin pedirle al contacto que repita todo desde cero.

> ⚠️ El agente de WhatsApp seleccionado debe pertenecer a la misma cuenta. Si no hay conversaciones registradas para ese número, la función informa que no se encontraron mensajes.

***

#### 📅 Google Calendar

Permite al agente consultar disponibilidad y gestionar reuniones directamente en **Google Calendar** durante la llamada. 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](/anunzi-docs/integraciones/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.

***

#### 🟢 Go High Level (CRM)

Permite al agente trabajar directamente sobre tu CRM de **Go High Level** durante la llamada: 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](/anunzi-docs/integraciones/integraciones/go-high-level.md).

A diferencia de Cal.com y Google Calendar, las funciones de GHL se activan **por separado**: podés elegir solo las que necesitás (por ejemplo, solo el CRM y usar Google Calendar para las citas).

| Función                 | Qué hace                                                                 |
| ----------------------- | ------------------------------------------------------------------------ |
| `ghl_buscar_contacto`   | Busca el contacto en GHL por teléfono o email                            |
| `ghl_guardar_contacto`  | Crea o actualiza el contacto sin duplicar                                |
| `ghl_agregar_nota`      | Guarda una nota en el contacto (visible en su conversación)              |
| `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.

***

#### 🟠 Clientify (CRM)

Permite al agente trabajar directamente sobre tu CRM de **Clientify** durante la llamada: 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](/anunzi-docs/integraciones/integraciones/clientify.md).

Las funciones de Clientify también se activan **por separado**:

| 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.

> 💡 Para `clientify_mover_etapa`, el agente identifica la etapa por su **nombre**, no por un identificador. Si no hay coincidencia, ofrece las etapas disponibles del pipeline en vez de pedir un ID.
>
> 💡 Clientify no tiene consulta de horarios libres: `clientify_agendar_cita` agenda directamente (se guarda como tarea). Para que el agente proponga horarios disponibles antes de agendar, usá Google Calendar o Cal.com.

***

#### 🟣 Odoo (CRM)

Permite al agente trabajar directamente sobre tu **Odoo** durante la llamada: 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](/anunzi-docs/integraciones/integraciones/odoo.md).

Las funciones de Odoo también se activan **por separado**:

| 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. Las funciones de agenda (`odoo_disponibilidad`, `odoo_agendar_cita`) están en la pestaña **Citas**.

> 💡 Para `odoo_mover_etapa`, el agente identifica la etapa por su **nombre** (ej. "Qualified", "Won"), no por un identificador. Si no hay coincidencia, ofrece las etapas disponibles del pipeline.
>
> 💡 A diferencia de Clientify, Odoo **sí tiene calendario real**: `odoo_agendar_cita` crea una cita de verdad y `odoo_disponibilidad` revisa las franjas ocupadas antes de proponer un horario. Las horas se manejan en **UTC**.

***

### Tipos de funciones personalizadas

#### 📞 Transferir llamada

Transfiere la llamada a un número de teléfono cuando el agente lo considera necesario.

| Campo                      | Descripción                                                                                                                     |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **Número de destino**      | Número completo con código de país. Ejemplo: `+5491144444444`.                                                                  |
| **Descripción** (opcional) | Cuándo debe usar esta transferencia. Ejemplo: *"Transfiere al equipo de soporte si el usuario tiene una queja de facturación"*. |

#### 🔀 Transferir a otro agente

Pasa la **misma llamada** a otro agente de voz, preservando todo el contexto de la conversación. Aparece como **una sola llamada** en el historial. Sirve para modularizar: por ejemplo, un agente recepcionista que transfiere al agente de agendamiento cuando el cliente quiere reservar un turno.

Se activa desde **Funciones del agente → pestaña Llamadas → Transferir a otro agente**.

| Campo                         | Descripción                                                                                                |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------- |
| **Agente destino**            | Otro de tus agentes de voz (del mismo propietario). El listado excluye al agente actual.                   |
| **Descripción** (opcional)    | Cuándo debe transferir. Ejemplo: *"Si el cliente quiere agendar una cita, transfiere al agente de citas"*. |
| **Mantener la misma voz**     | Conserva la voz del agente actual tras la transferencia (opcional).                                        |
| **Mantener el idioma actual** | Conserva el idioma de la conversación (activado por defecto).                                              |

> 💡 El análisis post-llamada y los webhooks quedan configurados para **ambos agentes** por defecto, así el historial y las integraciones reciben la información completa de la llamada.
>
> 💡 Agrega en el prompt una instrucción clara de **cuándo** transferir, para que el agente sepa activar la función en el momento correcto.

#### 📅 Verificar disponibilidad (Cal.com)

Consulta en tiempo real si hay turnos disponibles en un calendario de Cal.com.

| Campo                  | Descripción                                   |
| ---------------------- | --------------------------------------------- |
| **API Key de Cal.com** | Clave de acceso a tu cuenta (`cal_live_...`). |
| **Event Type ID**      | ID numérico del tipo de evento en Cal.com.    |
| **Zona horaria**       | Ejemplo: `America/Argentina/Buenos_Aires`.    |

#### 📆 Reservar cita (Cal.com)

Agenda un turno directamente en Cal.com durante la llamada.

| Campo                  | Descripción                                   |
| ---------------------- | --------------------------------------------- |
| **API Key de Cal.com** | Clave de acceso a tu cuenta (`cal_live_...`). |
| **Event Type ID**      | ID numérico del tipo de evento en Cal.com.    |
| **Zona horaria**       | Ejemplo: `America/New_York`.                  |

#### 💻 Función de código (JavaScript)

Ejecuta código JavaScript personalizado en el servidor de Anunzi cuando el agente lo necesita. Útil para cálculos, transformaciones de datos o lógica personalizada.

| Campo                 | Descripción                                                                                                                            |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| **Nombre**            | Nombre de la función en camelCase o snake\_case. Sin espacios.                                                                         |
| **Descripción**       | Qué hace la función. El agente la usa para saber cuándo llamarla.                                                                      |
| **Código JavaScript** | El código que se ejecutará. Debe retornar un valor con `return`.                                                                       |
| **Parámetros (JSON)** | Array de parámetros que el agente extraerá de la conversación. Formato: `[{"name": "campo", "type": "string", "description": "..."}]`. |

#### 🔗 Función personalizada (webhook)

Llama a una URL externa (API propia, Make, Zapier, etc.) cuando el agente lo requiere.

| Campo                                   | Descripción                                                        |
| --------------------------------------- | ------------------------------------------------------------------ |
| **Nombre**                              | Nombre de la función en snake\_case.                               |
| **Descripción**                         | Qué hace el webhook. El agente la usa para saber cuándo llamarlo.  |
| **URL**                                 | Endpoint que recibirá la petición.                                 |
| **Método HTTP**                         | POST, GET, PUT o PATCH.                                            |
| **Parámetros (JSON)**                   | Array de parámetros que el agente enviará en la petición.          |
| **Mensaje mientras ejecuta** (opcional) | Frase que dice el agente mientras espera la respuesta del webhook. |

### Agregar y eliminar funciones

* Haz clic en **+ Agregar función** y elegí la categoría desde las pestañas de arriba (Atención al cliente, Citas, CRM, Código…).
* Las funciones sin configuración adicional (como las de GHL o Clientify) se pueden **seleccionar varias a la vez** — se marcan en verde — y activarlas todas juntas con **"Activar N funciones"**.
* Las que necesitan datos (Cal.com, transferir llamada, código, webhook) se completan y activan de a una.
* Las funciones ya instaladas quedan marcadas con **✓ Instalada** y no se pueden volver a agregar.
* Para eliminar una función existente, haz clic en la **✕** en su tarjeta dentro de la lista de funciones instaladas.
* Haz clic en **Guardar funciones** para aplicar todos los cambios.

> 💡 Los slots genéricos (transferir llamada, código, webhook, Cal.com, verificar horario) sí admiten varias instancias — por ejemplo, dos transferencias a distintos destinos según el contexto.

***

## Sección: Comportamiento

Controla cómo se comporta el agente durante el silencio, qué sonidos de ambiente genera y los límites de duración de la llamada.

| Campo                                | Descripción                                                                                                                                   |
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| 🗣️ **Respuestas de escucha activa** | Si está activado, el agente intercala palabras como "entiendo" o "claro" mientras el usuario habla para sonar más natural.                    |
| 📊 **Frecuencia de escucha activa**  | (Solo si la opción anterior está activa.) Controla con qué frecuencia el agente intercala esas palabras. 0 = raramente, 1.0 = con frecuencia. |
| 🎵 **Sonido de fondo**               | Agrega un sonido ambiente a la llamada: cafetería, centro de llamadas, exterior, ruido estático, etc. Hace la conversación más natural.       |
| 🔊 **Volumen del sonido de fondo**   | Intensidad del sonido de ambiente. Rango 0.0 – 2.0.                                                                                           |
| 🔇 **Colgar tras silencio**          | Segundos de silencio del usuario antes de que el agente cuelgue automáticamente. 0 = desactivado.                                             |
| ⏱️ **Duración máxima de llamada**    | Minutos máximos que puede durar una llamada. 0 = sin límite.                                                                                  |
| 🔔 **Recordatorio si hay silencio**  | Segundos que espera el agente antes de volver a hablar si el usuario no responde. 0 = desactivado.                                            |
| 🔁 **Máximo de recordatorios**       | Cuántas veces el agente puede enviar recordatorios antes de colgar.                                                                           |

Haz clic en **Guardar comportamiento** para aplicar los cambios.

***

## Sección: Webhook de eventos

Permite que Anunzi notifique a tu sistema externo cada vez que se registra una llamada en este agente.

| Campo               | Descripción                                                                                                                  |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| **URL del webhook** | Endpoint externo que recibirá los datos. Ejemplo: `https://tu-sistema.com/webhook/llamadas`. Déjalo vacío para desactivarlo. |

Cuando está configurado, Anunzi envía un `POST` con el siguiente JSON al finalizar el procesamiento de cada llamada:

```json
{
  "event": "call.completed",
  "assistant_id": "...",
  "call_id": "...",
  "phone_number": "...",
  "lead_name": "...",
  "direction": "inbound",
  "duration": 120,
  "start_at": "2025-01-01T10:00:00Z",
  "status": "...",
  "call_status": "...",
  "end_call_reason": "...",
  "transcript": "...",
  "recording_url": "...",
  "call_summary": "...",
  "transfer_failed": false,
  "transfer_success": false
}
```

Haz clic en **Guardar webhook** para aplicar los cambios.

> 💡 Puedes usar este webhook para enviar el resultado de la llamada a tu CRM, a una hoja de cálculo, o para disparar flujos en Make, Zapier o cualquier sistema que acepte webhooks.

***

## Sección: Extractores de información

Los extractores capturan datos específicos de cada llamada para analizarlos después. Por ejemplo: el nombre del cliente, su intención, el resultado de la conversación, el producto que consultó, etc.

### Tipos de datos

| Tipo                      | Cuándo usarlo                                                     |
| ------------------------- | ----------------------------------------------------------------- |
| **Texto (string)**        | Nombres, respuestas abiertas, productos mencionados, etc.         |
| **Número (number)**       | Cantidades, edades, precios, códigos numéricos.                   |
| **Sí / No (boolean)**     | Preguntas de sí o no: ¿está interesado?, ¿tiene contrato vigente? |
| **Opciones fijas (enum)** | Cuando la respuesta debe ser una entre varias opciones definidas. |

### Agregar un extractor

1. Haz clic en **+ Agregar extractor**.
2. Selecciona el **Tipo de dato**.
3. Ingresa el **Nombre del campo** en snake\_case (sin espacios). Ejemplo: `nombre_cliente`.
4. Escribe una **Descripción** clara de qué dato captura. Ejemplo: *"Nombre completo del cliente mencionado durante la llamada"*.
5. Agrega **Ejemplos** separados por coma (opcional, ayuda al modelo a entender mejor).
6. Si el tipo es **enum**, ingresa las **Opciones** separadas por coma. Ejemplo: `interesado, no_interesado, callback, venta`.
7. Haz clic en **Agregar**.

### Eliminar un extractor

Haz clic en la **✕** en la tarjeta del extractor que quieres quitar.

### Guardar

Haz clic en **Guardar extractores** para que los cambios tomen efecto en las próximas llamadas.

> 💡 Los datos extraídos quedan disponibles en la [ficha de cada llamada](/anunzi-docs/agentes-de-voz/agentes-de-llamada/lista-de-llamadas/ficha-de-llamada.md) para su revisión y exportación.

***

> 📌 **Recuerda:** todos los cambios en la ficha aplican desde la **próxima llamada**. Las llamadas en curso no se ven afectadas.
