> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Integración con Exotel

## Resumen

Esta guía explica cómo conectar tus números de teléfono de Exotel directamente a ElevenAgents. Esta integración te permite usar tus números e infraestructura de Exotel actuales mientras aprovechas las avanzadas capacidades de voz IA de ElevenLabs, tanto para llamadas entrantes como salientes.

## Cómo funciona la integración

La integración con Exotel usa dos elementos de Exotel:

1. **Applet de Voicebot (audio entrante y saliente)**: Un applet de ExoML en Exotel que abre un WebSocket con ElevenLabs y transmite el audio de la llamada en ambas direcciones.
2. **API Connect (marcación saliente)**: Para llamadas salientes, ElevenLabs llama a la ruta `Calls/connect.json` de Exotel con tu API Key y API Token. Exotel llama al destino y, cuando se responde la llamada, dirige el audio a través del mismo applet de Voicebot hacia ElevenLabs.

Para las llamadas **entrantes**, Exotel dirige las llamadas entrantes al applet de Voicebot que asignas al número de teléfono, que abre el WebSocket con ElevenLabs.

Para las llamadas **salientes**, ElevenLabs inicia la llamada mediante la API Connect y Exotel conecta la llamada de vuelta a través del applet de Voicebot.

## Requisitos

Antes de configurar la integración con Exotel, asegúrate de tener:

1. Una [cuenta de Exotel](https://exotel.com/) activa con al menos un número de teléfono aprovisionado.
2. Acceso de administrador al panel de Exotel en [my.exotel.com](https://my.exotel.com) (Singapur) o [my.exotel.in](https://my.exotel.in) (Mumbai).
3. Una cuenta de ElevenLabs y un [agente](/docs/es/eleven-agents/quickstart) al que quieras asociar el número de teléfono.

> **Note**
>
> Actualmente, Exotel es compatible con los clústeres de **Singapur** (`api.exotel.com`) y **Mumbai**
> (`api.in.exotel.com`). Elige el clúster en el que se aprovisionó tu cuenta de Exotel. Usar la región
> incorrecta provocará errores de autenticación.

## Activar Voicebot en tu cuenta de Exotel

Antes de nada, contacta con el **soporte de Exotel** y pídeles que:

1. **Activen el applet de Voicebot** en tu cuenta. Está restringido de forma predeterminada y no aparecerá en App Bazaar hasta que tu cuenta esté aprovisionada para usarlo.
2. **Aprovisionen el número de canales (llamadas simultáneas)** que necesitas. Este es el límite de llamadas simultáneas de Voicebot que Exotel permitirá ejecutar en tu cuenta. Ajústalo a tu tráfico máximo previsto.

> **Warning**
>
> Este paso suele tardar entre 1 y 2 días laborables. Inícialo antes de comenzar el resto de la configuración.

## Ruta WebSocket de ElevenLabs

Configurarás tu applet de Voicebot de Exotel para transmitir audio a la siguiente URL de WebSocket.

| Entorno                                | URL de WebSocket                                                     |
| -------------------------------------- | -------------------------------------------------------------------- |
| Predeterminado (EE. UU./internacional) | `wss://api.elevenlabs.io/v1/convai/conversation/exotel`              |
| Residencia en la UE                    | `wss://api.eu.residency.elevenlabs.io/v1/convai/conversation/exotel` |
| Residencia en India                    | `wss://api.in.residency.elevenlabs.io/v1/convai/conversation/exotel` |

> **Info**
>
> Si tu cuenta de ElevenLabs está en un entorno aislado de residencia de datos (UE o India), debes usar la
> URL de residencia correspondiente. Obtén más información sobre la [residencia de datos](/docs/es/overview/administration/data-residency).

## Configuración en Exotel

#### Reúne tus credenciales de Exotel

En el panel de Exotel, abre el menú **Monitor** de la izquierda y haz clic en **Developer**. Esto abre la página de credenciales de la API, donde puedes consultar el Account SID, API Key y API Token.

![Barra lateral de Exotel: Developer](/docs/_fern-img/ebe936f8cd0d1773a88bb4922a7642cf8c2f844f39eb4ee9ee04eab50ecfa6c4.webp)

Necesitarás cuatro valores:

* **Account SID**: El SID de tu cuenta de Exotel.
* **API Key**: La parte de nombre de usuario de las credenciales de la API de Exotel.
* **API Token**: La parte de contraseña de las credenciales de la API de Exotel. Mantenlo en secreto.
* **Región (subdominio de la API)**: El clúster en el que se encuentra tu cuenta de Exotel. Puede ser `api.exotel.com` (Singapur) o `api.in.exotel.com` (Mumbai). Puedes confirmarlo consultando el host de cualquier URL de API que se muestre en la página Developer.

ElevenLabs usa la API Key + API Token para la autenticación HTTP Basic al llamar a la API Connect de Exotel para realizar llamadas salientes.

#### Crea un applet de Voicebot en App Bazaar

1. En el panel de Exotel, abre el menú **Manage** de la izquierda y haz clic en **App Bazaar**.

   ![Barra lateral de Exotel: App Bazaar](/docs/_fern-img/1e50c6687044e4fea1e6e636bc2db8a4a481c87eb44cdfc8019cff20bd1fe363.webp)

2. Haz clic en **Create / Add New Flow**, asigna un nombre descriptivo a la app (por ejemplo, `ElevenLabs`) y haz clic en **OK**.

   ![Exotel: cuadro de diálogo Add New Flow](/docs/_fern-img/928f17d1351f93e7a9bd60d92498dde8b24d350686cf273be146e9d315927704.webp)

3. Desde la paleta de applets de la derecha, arrastra el applet **Voicebot** al lienzo **Call Start**.

   ![Paleta de applets de Exotel con Voicebot
   resaltado](/docs/_fern-img/d19a0e66925d5931cd8f9eae7a1264b8a0e259d07736564cab4e1e894401c508.webp)

4. Abre la configuración del applet de Voicebot y pega en el campo **URL** la URL de WebSocket de ElevenLabs para tu residencia (el campo "Which bot you want to connect the enduser?"):

   ```
   wss://api.elevenlabs.io/v1/convai/conversation/exotel
   ```

   > **Info**
   >
   > Si tu cuenta de ElevenLabs está en residencia de datos de la UE o India, usa en su lugar la URL de residencia correspondiente de la
   > tabla anterior (por ejemplo, `wss://api.in.residency.elevenlabs.io/v1/convai/conversation/exotel`)
   > en vez de la predeterminada `api.elevenlabs.io`.

   El resto de las opciones de Voicebot ("Record this?", "Recording Channels", "Recording Format", "Encrypt DTMF") pueden mantenerse con sus valores predeterminados, salvo que tengas requisitos específicos de grabación o cumplimiento normativo.

   ![Applet de Voicebot configurado con la URL de WebSocket de
   ElevenLabs](/docs/_fern-img/bb375863bb02b0908786403c080280f4561f21d887fb490050d54ff4ec211794.webp)

5. **(Opcional) Encadena un applet Connect para transferencias a personas.** Omite este paso si no necesitas que el agente pueda transferir la llamada a una persona. Si quieres usar la herramienta **Transfer to number** del agente, debes añadir un applet **Connect** inmediatamente después del applet de Voicebot en el flujo.

   Desde la paleta **Voice Applets** de la derecha, arrastra el applet **Connect** a la ranura **Next → Continue to the next applet** de Voicebot.

   ![Paleta Voice Applets con Connect
   resaltado](/docs/_fern-img/1c325fc4ae992db551209b667519ffd75161b6a97ebf71ed6b751bbf26339faf.webp)

   En la configuración del applet Connect, elige **Configure parameters dynamically by providing a URL** y pega en **Primary URL** la ruta del applet Connect de ElevenLabs para tu residencia:

   ```
   https://api.elevenlabs.io/v1/convai/exotel/connect-applet
   ```

   ![Applet Connect configurado con la URL dinámica de
   ElevenLabs](/docs/_fern-img/7ed4516ec33ea62830d9279a266ada20311741d0489fe2661dc528b8dbcbe126.webp)

   Las URL de residencia correspondientes son:

   | Entorno                                | URL del applet Connect                                                   |
   | -------------------------------------- | ------------------------------------------------------------------------ |
   | Predeterminado (EE. UU./internacional) | `https://api.elevenlabs.io/v1/convai/exotel/connect-applet`              |
   | Residencia en la UE                    | `https://api.eu.residency.elevenlabs.io/v1/convai/exotel/connect-applet` |
   | Residencia en India                    | `https://api.in.residency.elevenlabs.io/v1/convai/exotel/connect-applet` |

   > **Info**
   >
   > Cuando el agente invoca su herramienta **Transfer to number**, ElevenLabs devuelve el control a Exotel
   > y Exotel obtiene esta URL para recuperar el número de destino al que llamar. Deja **Fallback URL**
   > vacío y conserva el resto de valores predeterminados.

6. Guarda y publica el applet.

7. Anota el **Applet ID** (a veces llamado **App ID**). Lo encontrarás en la URL del editor de ExoML (por ejemplo, `.../exoml/start_voice/12345`) o en la lista de apps. Lo necesitarás al importar el número en ElevenLabs.

> **Note**
>
> El applet de Voicebot gestiona tanto los tramos entrantes como los salientes. Solo necesitas un applet por
> cuenta. Todos los números de teléfono que importes en ElevenLabs pueden compartirlo.

#### Asigna el flujo a un número de teléfono (solo entrantes)

Guarda y publica el flujo de ExoML del paso anterior. Después, dirige un número de teléfono de Exotel hacia él para que las llamadas entrantes lleguen a tu applet de Voicebot.

1. En el panel de Exotel, abre el menú **Manage** de la izquierda y haz clic en **ExoPhones** (justo debajo de **App Bazaar**).

   ![Barra lateral de Exotel: ExoPhones](/docs/_fern-img/30351173b2c2cfaa2ccd8d9e29e6aaba319ac3b5f2ee51d91a4f7913d3e218a4.webp)

2. Si todavía no tienes un número de teléfono, haz clic en **Buy a number** y compra uno en el país o área que necesites antes de continuar.

3. Busca el número que quieres usar con tu agente de ElevenLabs. En su columna **Installed App**, abre el menú desplegable y selecciona el flujo que creaste en el paso anterior (por ejemplo, **ElevenLabs**).

   ![ExoPhones: asignar Installed App a un número de
   teléfono](/docs/_fern-img/5ed6b42794bb00f330dd52d50a5831622e3156955d59adb1ca64b746d1ec7d2b.webp)

4. Guarda la configuración. Las llamadas entrantes a ese número se dirigirán ahora directamente al applet de Voicebot y se transmitirán a ElevenLabs.

> **Note**
>
> Si el número solo se utilizará para llamadas salientes, puedes omitir este paso. Las llamadas salientes se
> realizan a través de la API Connect desde ElevenLabs y no dependen de la asignación de **Installed App**.

## Configuración en ElevenLabs

#### Importa el número de teléfono de Exotel

En el panel de ElevenAgents, ve a la pestaña [**Phone Numbers**](https://elevenlabs.io/app/agents/phone-numbers). Haz clic en **+ Import number** y selecciona **From Exotel** en el menú desplegable.

![ElevenAgents: menú desplegable Import number con From Exotel
seleccionado](/docs/_fern-img/2a62cf9f6b63914c5688da5f58515168fa1ff39b8602f70fea7a1ff257bb6918.webp)

Completa los siguientes campos:

* **Label**: Un nombre descriptivo (por ejemplo, `Línea de soporte`).
* **Phone number**: El número de Exotel en formato E.164 (por ejemplo, `+918048961234`).
* **Exotel Account SID**: Del paso 1 anterior.
* **Exotel API Key**: Del paso 1 anterior.
* **Exotel API Token**: Del paso 1 anterior (se almacena como secreto del espacio de trabajo).
* **Region**: Elige `Singapore (api.exotel.com)` o `Mumbai (api.in.exotel.com)` según tu clúster de Exotel.
* **Voicebot Applet ID**: El App ID del paso 2 anterior.

Haz clic en **Import** para guardar el número. ElevenLabs verificará las credenciales con Exotel y almacenará el token de la API como secreto del espacio de trabajo.

#### Asigna tu agente

Una vez importado el número, ábrelo desde la lista **Phone Numbers** y elige en el menú desplegable **Assigned agent** el agente que debe gestionar las llamadas entrantes.

> **Note**
>
> Las llamadas entrantes requieren que el applet de Voicebot esté asignado al número en Exotel (consulta la
> sección anterior). Las configuraciones solo para llamadas salientes no necesitan una asignación entrante.

#### Prueba una llamada entrante

Llama a tu número de Exotel desde cualquier teléfono. Exotel dirigirá la llamada al applet de Voicebot, que abre un WebSocket con ElevenLabs. Tu agente responderá e iniciará la conversación.

> **Tip**
>
> Supervisa la llamada en el [panel de Historial de llamadas](https://elevenlabs.io/app/agents/history) para
> comprobar que todo funciona como esperas.

## Realizar llamadas salientes

Los números de Exotel importados también pueden iniciar llamadas salientes. Tu agente llama a un número de teléfono e inicia la conversación cuando el destinatario responde.

#### Inicia una llamada saliente

Desde la pestaña [**Phone Numbers**](https://elevenlabs.io/app/agents/phone-numbers), busca tu número de Exotel y haz clic en el botón **Outbound call**.

#### Configura la llamada

En el modal Outbound Call:

1. Selecciona el agente que gestionará la conversación.
2. Introduce el número de teléfono del destinatario en formato E.164.
3. Haz clic en **Send Test Call** para iniciar la llamada.

ElevenLabs llama a la API Connect de Exotel con tus credenciales almacenadas. Exotel llama al destinatario y dirige el audio de vuelta a través del applet de Voicebot cuando se responde la llamada.

> **Note**
>
> Al realizar llamadas salientes, tu agente inicia la conversación, así que asegúrate de que tenga
> configurado un mensaje inicial adecuado.

Para activar llamadas salientes mediante programación en lugar de hacerlo desde el panel, usa la ruta [Llamada saliente mediante Exotel](/docs/es/api-reference/exotel/outbound-call). La referencia de la API incluye el esquema de solicitud y fragmentos de SDK listos para usar.

## Requisitos de configuración del agente

El applet de Voicebot transmite audio a **8 kHz PCM**. La plataforma de ElevenLabs gestiona automáticamente la conversión del formato de audio. **No** necesitas cambiar la configuración de TTS ni de audio de entrada de tu agente.

## Formatos de números de teléfono

Los números de teléfono se almacenan en formato E.164 (por ejemplo, `+918048961234`). Al importar un número indio de Exotel que podrías escribir localmente como `08048961234` o `8048961234`, introdúcelo como `+918048961234`. ElevenLabs rechazará las importaciones duplicadas del mismo número en formatos distintos.

## Transferencias de llamadas

Puedes transferir llamadas desde tu agente a Exotel configurando una herramienta **Transfer to number** en tu agente. Cuando se activa la herramienta, ElevenLabs finaliza el tramo de Voicebot y Exotel obtiene el número de destino de la URL dinámica del applet **Connect** encadenado y, después, llama al destino.

Para que funcione, necesitas **ambos** elementos:

1. El **applet Connect** opcional configurado inmediatamente después del applet de Voicebot en tu flujo de ExoML (consulta el paso 5 de [Configuración en Exotel](#setup-on-exotel)).
2. La herramienta **Transfer to number** configurada en tu agente. Consulta la [guía de transferencia de agentes](/docs/es/eleven-agents/customization/tools/system-tools/transfer-to-number).

Sin el applet Connect en el flujo, los intentos de transferencia del agente fallarán porque Exotel no tendrá adónde dirigir la llamada después de que termine Voicebot.

## Solución de problemas

#### Error \`exotel_connect_failed\` al iniciar una llamada saliente

ElevenLabs recibió una respuesta distinta de 200 de la API Connect de Exotel. Las causas más habituales son:

* **Region** incorrecta. Asegúrate de que la región que elegiste al importar coincida con el clúster de Exotel en el que está tu cuenta (`Singapore` frente a `Mumbai`).
* **API Key** o **API Token** no válidos. Vuelve a comprobar las credenciales en la página **API Settings** de Exotel y vuelve a importar el número con los valores correctos.
* El **Account SID** no coincide con el par de API Key / Token.
* El número de destino no está en formato E.164.

#### Las llamadas entrantes no llegan a mi agente

* Confirma que el campo **URL** del applet de Voicebot coincide exactamente con la ruta WebSocket de ElevenLabs para tu residencia de datos (incluido `wss://`).
* Confirma que el **número de teléfono** de Exotel está dirigido a la app de ExoML que contiene el applet de Voicebot (panel de Exotel, ExoPhones, el número, Installed App).
* En ElevenLabs, confirma que el número de teléfono tiene un agente asignado en la pestaña **Phone Numbers**.

#### Errores de discrepancia de \`Applet ID\` al importar

El campo **Voicebot Applet ID** espera el App ID numérico de la URL del editor de ExoML (por ejemplo, para `.../exoml/start_voice/12345`, el ID es `12345`). No pegues la URL completa. Usa solo el ID.

#### Número de teléfono importado dos veces en formatos distintos

ElevenLabs normaliza los números de Exotel a E.164 antes de almacenarlos y aplica unicidad en `(provider, phone_number)`. Si ya importaste el mismo número en un formato distinto de E.164, elimina primero la entrada anterior y vuelve a importarlo en formato E.164.

## Enlaces útiles

* [Referencia de la API de llamada saliente mediante Exotel](/docs/es/api-reference/exotel/outbound-call)
* [Documentación de la API de Exotel](https://developer.exotel.com/api/)
* [Referencia del applet Voicebot de Exotel](https://support.exotel.com/support/solutions/articles/3000099826)
* [Panel de números de teléfono de ElevenAgents](https://elevenlabs.io/app/agents/phone-numbers)