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

# Transferir Llamada

Transfiere llamadas a un número fijo o dinámico, en frío, en cálido o en cálido con agente, limita el horario de atención y pasa contexto en encabezados SIP personalizados.

Esta función te permite transferir llamadas telefónicas de manera flexible y personalizada, ya sea a números predefinidos o basándote en condiciones dinámicas según el contexto de la conversación. Puedes elegir entre transferencias frías (sin contexto), cálidas (con resumen previo) o cálidas con agente (un agente de filtrado conversa primero con el destino), y configurar cómo se muestra el número de teléfono al agente que recibe la llamada. Esta función es ideal para dirigir eficientemente a los usuarios al recurso adecuado, ya sea un agente humano, soporte, ventas, o cualquier otro departamento, asegurando una experiencia fluida y adaptada a sus necesidades.

### Guía Paso a Paso

#### Paso 1: Selecciona tu Agente

* Navega hasta la lista de agentes y selecciona el agente al que deseas añadir la instrucción de finalización de llamada.

#### Paso 2: Accede a la Configuración

* Una vez dentro del agente, dirígete a la pestaña **Settings**.
* Dentro de Settings, haz clic en **Agent Actions** para acceder a las acciones disponibles para tu agente.

<figure><img src="https://365551146-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUYDYzjmxpzlYaw0gcaZ%2Fuploads%2FA8n2T9us0khR1Z3imkKR%2Fimage.png?alt=media&amp;token=66ee5e45-2ac7-4b6f-b740-38385267f5ad" alt=""><figcaption></figcaption></figure>

#### Paso 3: Agrega la Función Call Transfer

* Se desplegará un menú con las opciones disponibles. Haz clic en **Add** y luego selecciona **Transfer Call** de la lista de opciones.

<figure><img src="https://365551146-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUYDYzjmxpzlYaw0gcaZ%2Fuploads%2FVJRMRvCSFT4tUXTxQ8XD%2Fimage.png?alt=media&amp;token=bf36f501-7341-430b-a1cc-dd181cefa603" alt=""><figcaption></figcaption></figure>

#### Paso 4: Configura tu Instrucción

* Asigna un nombre descriptivo a tu función en el campo "Name" (Nombre) y escribe la instrucción específica sobre cuándo utilizar esta función. Según el ejemplo, las instrucciones podrían ser: "Cuando el usuario esté enojado o solicite un agente humano, transfiere la llamada a un humano.”

<figure><img src="https://365551146-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUYDYzjmxpzlYaw0gcaZ%2Fuploads%2FHxJ283FQSELgP9VaR906%2Fimage.png?alt=media&amp;token=0eab531f-d63b-452b-97e6-023599f3ca00" alt=""><figcaption></figcaption></figure>

#### Paso 5: Define la función

* "Predefined Number" (Número Predefinido): Ingresa el número de teléfono al cual se transferirá la llamada.
* "Dynamic Transfer" (Transferencia Dinámica): Selecciona esta opción para proporcionar instrucciones al AI sobre cómo transferir la llamada dinámicamente. En el ejemplo, las instrucciones son: "Si el usuario quiere comunicarse con soporte, transfiere a \[número\_1]; si el usuario quiere comunicarse con ventas, transfiere a \[número\_2]).

<figure><img src="https://365551146-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUYDYzjmxpzlYaw0gcaZ%2Fuploads%2FT3y6fwyIQx71FxYpRwoM%2Fimage.png?alt=media&amp;token=f97690a1-b37d-4c31-a693-2712d89f40ac" alt=""><figcaption></figcaption></figure>

<figure><img src="https://365551146-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUYDYzjmxpzlYaw0gcaZ%2Fuploads%2FZ57fkoJXcUFxW9ZN0bAq%2Fimage.png?alt=media&amp;token=a5bb1811-450d-422c-b382-f536fcd31252" alt=""><figcaption></figcaption></figure>

#### Paso 6: Tipo de Transferencia

En **Tipo**, elige cómo se entrega la llamada:

* **Transferencia en frío**: transfiere la llamada al siguiente agente sin previo informe.
* **Transferencia cálida**: le da al siguiente agente un informe de la situación y luego conecta a la persona.
* **Transferencia cálida con agente**: un agente de filtrado llama primero al destino, conversa con quien contesta y decide si conecta a la persona.

<figure><img src="https://365551146-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUYDYzjmxpzlYaw0gcaZ%2Fuploads%2F1DcdnWQ0jL3RJAjIMayp%2Fimage.png?alt=media&amp;token=bb422c6a-6cc3-4f10-9ba1-8030a100ec05" alt=""><figcaption></figcaption></figure>

**Transferencia cálida a través de un menú telefónico.** Si el destino contesta con un menú automático ("marque 1 para…"), activa **Navegación IVR** (**Habilitar navegación IVR con un prompt personalizado**) y describe en **Prompt IVR** qué opciones marcar, por ejemplo: "Marca 2 para ventas y luego 1 para clientes nuevos." El agente escucha el menú, marca las opciones que describes y da su informe cuando contesta una persona. La navegación IVR funciona mientras **Habilitar detección humana** está activado.

**Transferencia cálida con agente.** El agente de filtrado es un agente de voz propio: su prompt le dice cómo hablar con la persona que contesta y cuándo debe pasar la llamada. Elígelo en **Agente de conversación bidireccional** (**Seleccionar agente de filtrado de transferencia**), o haz clic en **Crear agente de transferencia** para crear uno. Luego configura:

* **Música en espera** y **Duración del tono de transferencia** (de 10 a 120 segundos): lo que escucha la persona mientras espera y cuánto tiempo timbra el destino.
* **Tiempo de espera para respuesta del agente** (de 10 a 300 segundos, 180 por defecto en transferencias nuevas): cuánto tiempo tiene el agente de filtrado para decidir, contado desde que el destino contesta.
* **Acción al expirar el tiempo**: cuando ese tiempo se agota, **Cancelar transferencia** o **Conectar transferencia** (conectar a la persona de todas formas).
* **Grabar la conversación con el asesor**: guarda el audio de la consulta previa, antes de conectar a la persona. Se factura como una grabación adicional.

Antes de empezar a hablar, el agente de filtrado identifica quién contestó:

* Espera durante los mensajes de fila de espera ("alto volumen de llamadas, su espera puede ser de…"), la música de espera y las encuestas automáticas, en vez de tratarlos como buzón de voz, y sigue en la línea hasta que contesta una persona o se agota el tiempo de espera.
* Si la línea queda en silencio o no logra saber si escucha a una persona, dice "¿Hola?" (máximo dos veces, con al menos 4 segundos entre una y otra), para no perder a alguien que contestó sin hablar.
* Cancela la transferencia cuando llega a un buzón de voz, o a una grabación que dice que no hay nadie disponible, que están fuera de horario o que llames más tarde.
* Si el destino contesta con un menú telefónico, agrega una acción **Presione Dígito (Navegación IVR)** al agente de filtrado y describe en su prompt qué opciones marcar.

Cuando la transferencia no se conecta, tu agente sigue en la llamada y continúa atendiendo a la persona. Cada transferencia con agente muestra su **Conversación de filtrado** en el registro de la llamada: lo que dijeron el agente de filtrado y quien contestó, y el audio cuando la grabación está activada.

#### Paso 7: Número de Teléfono Mostrado:

Elige cómo se mostrará el número de teléfono al agente que recibe la llamada transferida:

* "Agent's Number" (Número del Agente): Muestra el número del agente que transfiere la llamada.
* "Transferee's Number" (Número del Transferido): Si utilizas telefonía personalizada, habilita la transferencia SIP REFER y PSTN. Ten en cuenta que debes configurar lo siguiente en tu proveedor de telefonía con el fin de hacer que funcione, porque esta opción internamente es simplemente la transferencia a través de SIP REFER, y algunos proveedores de telefonía tienen la capacidad de establecer el identificador de llamadas para SIP REFER.

<figure><img src="https://365551146-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUYDYzjmxpzlYaw0gcaZ%2Fuploads%2FZ8i4zwWfrdnskH2U2Glz%2Fimage.png?alt=media&amp;token=e7306856-89e5-450b-a6c6-b1925c957ce3" alt=""><figcaption></figcaption></figure>

#### Paso 8: Restringir al Horario de Atención (Opcional)

Si quieres que tu agente transfiera llamadas únicamente durante el horario laboral de tu equipo, activa el interruptor **Restringir al horario de atención** en la parte inferior de la configuración de Transferir Llamada.

<figure><img src="https://365551146-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUYDYzjmxpzlYaw0gcaZ%2Fuploads%2Fgit-blob-f8311dc3110484a604f18a3b29ad70a159b9ca06%2Ftransferir-horario-de-atencion-interruptor.png?alt=media" alt=""><figcaption></figcaption></figure>

Al activarlo, podrás definir tu disponibilidad:

* "Días": Selecciona los días de la semana en los que tu equipo está disponible para recibir llamadas transferidas.
* "Hora inicio" / "Hora fin": Define la franja horaria en la que se permiten las transferencias.
* "Zona horaria": Elige la zona horaria a la que corresponde tu horario.

<figure><img src="https://365551146-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMUYDYzjmxpzlYaw0gcaZ%2Fuploads%2Fgit-blob-5c4c2863282abf389e6a31b56f23dced92c2f841%2Ftransferir-horario-de-atencion-configuracion.png?alt=media" alt=""><figcaption></figcaption></figure>

Durante una llamada, el agente sabe automáticamente si la hora actual está dentro de tu horario de atención:

* **Dentro del horario**: las transferencias funcionan con normalidad.
* **Fuera del horario**: el agente no transferirá la llamada bajo ninguna circunstancia.

Si el interruptor está desactivado, el agente se comporta exactamente igual que antes: las transferencias están disponibles en cualquier momento.

{% hint style="info" %}
Esta opción está disponible para agentes que usan la telefonía nativa de Dapta o un SIP trunk conectado.
{% endhint %}

***

### Encabezados SIP personalizados

Justo encima de **Número de teléfono mostrado**, la configuración de Transferir Llamada tiene la sección **Encabezados SIP Personalizados** (Custom SIP Headers): pares de clave/valor que Dapta agrega a la transferencia, para que el sistema telefónico que recibe la llamada reciba contexto con ella, como un ID de cliente, el nombre de una cola o un resumen de la conversación. Haz clic en **Agregar**, escribe el nombre del encabezado (por ejemplo `X-Customer-Id`) en el primer campo y su contenido en **Valor**. Los encabezados se envían con todos los tipos de transferencia y modos de transferencia en frío.

El valor se resuelve en el momento de la transferencia:

* Un valor escrito entre llaves dobles, como `{{customer_id}}`, se llena con las variables de la llamada: cualquier variable dinámica de la llamada y las reservadas, como `{{user_number}}`.
* Una variable cuyo nombre termina en `-transfer`, como `{{call_summary-transfer}}`, la escribe el propio agente en el momento de transferir, a partir de lo que se habló en la conversación. No agrega demora a la transferencia. Para decirle al agente qué escribir, agrega a su prompt una línea con la variable, dos puntos y tu instrucción, por ejemplo `{{call_summary-transfer}}: un resumen de una línea de lo que necesita la persona`. El valor es una sola línea de texto plano de hasta unos 300 caracteres. Si la llamada inicia con una variable dinámica de ese mismo nombre, se usa ese valor. Las variables que empiezan por `sip_header_` nunca se llenan así, y los nombres que terminan en `_transfer` con guion bajo, como `{{number_transfer}}`, siguen siendo variables dinámicas normales. Las llamadas de prueba no te piden los valores `-transfer`.
* Un valor sin llaves se interpreta como una instrucción para el agente, que debe escribir él mismo el contenido del encabezado al transferir. Por ejemplo: "El departamento que pidió la persona, en una palabra".
* Una variable que la llamada no tiene queda vacía, y un encabezado cuyo valor termina vacío no se envía.

{% hint style="warning" %}
Si alguno de tus encabezados usa `{{call_summary_transfer}}` (con guion bajo antes de `transfer`), cámbialo por `{{call_summary-transfer}}` (con guion). El nombre anterior ya no se llena, así que el resumen llegaría vacío.
{% endhint %}

#### Valores codificados: `|hex`, `|uui` y `|decode`

Muchos carriers y PBX pasan el contexto de la llamada en el encabezado `User-to-User` y esperan su contenido codificado. Agrega un filtro después del nombre de la variable para codificar o decodificar un valor:

* `{{customer_id|hex}}` envía el valor como octetos ISDN User-to-User en hexadecimal: los acentos se convierten en letras simples, los demás caracteres no ASCII se descartan, el valor se corta a 127 caracteres y va precedido por el discriminador de protocolo `00`.
* `{{customer_id|uui}}` envía los mismos octetos seguidos de `;purpose=isdn-uui;content=isdn-uui;encoding=hex`, el valor completo del encabezado User-to-User.
* `{{sip_header_user-to-user|decode}}` hace lo contrario: convierte un valor hexadecimal o Base64 en texto legible, según el `encoding=` que declara el valor (un valor hexadecimal sin parámetro se decodifica como hex), y descarta el discriminador de protocolo inicial de un contenido ISDN User-to-User. También quita cualquier sufijo `;parámetro`. Usa `|decode` solo en valores que sabes que están codificados: un valor simple formado por un número par de caracteres hexadecimales, como `1234`, también se decodifica como hex.

Para codificar un valor armado con varias partes, envuelve todo el valor en `uui( )` o `hex( )`. Este ejemplo decodifica el contenido con el que llegó la llamada, le agrega el resumen que escribe el agente al transferir y envía el resultado codificado de nuevo:

```
User-to-User: uui({{sip_header_user-to-user|decode}}|{{call_summary-transfer}})
```

#### Encabezados recibidos en llamadas entrantes

Cuando una llamada llega a tu agente por un SIP trunk, los encabezados personalizados que trae se convierten en variables de la llamada, así que puedes usarlos en el prompt o reenviarlos en una transferencia:

* `{{sip_header_<nombre>}}` guarda el valor tal como llegó. El nombre es el del encabezado en minúsculas: un encabezado `X-Customer-Data` se vuelve `{{sip_header_x-customer-data}}`. Los guiones en estos nombres no son problema: la variable se resuelve tal como está escrita.
* Si el encabezado es `User-to-User`, o su valor declara `encoding=hex` o `encoding=base64`, Dapta crea además `{{sip_header_<nombre>_decoded}}` con el texto legible. Un encabezado que no declara su codificación no recibe la variable `_decoded`, aunque su valor parezca hexadecimal.
* Cuando el texto decodificado tiene la forma `id|nombre`, las dos partes quedan disponibles también como `{{sip_header_<nombre>_id}}` y `{{sip_header_<nombre>_name}}`.

Por ejemplo, una llamada que llega con `X-Customer-Data: 4a55414e7c564950;encoding=hex` le da a tu agente `{{sip_header_x-customer-data_decoded}}` = `JUAN|VIP`, `{{sip_header_x-customer-data_id}}` = `JUAN` y `{{sip_header_x-customer-data_name}}` = `VIP`. Los encabezados SIP estándar, como `From`, `To`, `Via`, `Call-ID`, `Contact` o `User-Agent`, no se exponen como variables.

{% hint style="info" %}
Los encabezados entrantes se leen en llamadas que llegan por un SIP trunk, así que necesitan un carrier o PBX que los agregue. En llamadas salientes Dapta no lee encabezados del carrier: ahí `|decode` aplica a valores codificados que envías en las variables dinámicas al crear la llamada. Las llamadas web no tienen transferencia SIP, así que los encabezados personalizados no aplican en ellas. Que un encabezado llegue al destino de la transferencia depende de que tu carrier o PBX lo deje pasar: confírmalo con tu administrador de telefonía.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.dapta.ai/dapta-docs-es/agentes-de-voz-ia/acciones-del-agente/transferir-llamada.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
