Trae tu propia troncal SIP: agentes de voz con IA en el operador que ya usas
Usa agentes de voz con IA en la troncal SIP que ya tienes. Tus números y las tarifas de tu operador siguen siendo tuyos, sin recargos.
Última actualización:
Publicado el . Los nombres de los operadores son marcas registradas de sus propietarios; Wixzel Voice se integra con ellos mediante SIP estándar y no está afiliado a ninguno de ellos ni cuenta con su respaldo.
Guías por operador
Twilio
Elastic SIP Trunking. Agrega la IP de la plataforma a una IP ACL de Termination y configura el Origination SIP URI para las llamadas entrantes.
Telnyx
Una SIP Connection autenticada por IP. Agrega la IP de la plataforma como dirección autorizada, elige una región para las llamadas entrantes y haz coincidir el transporte.
Plivo
Zentrunk. Una troncal saliente con la IP de la plataforma en su IP ACL y una troncal entrante aparte cuyo Primary URI apunta a la plataforma.
Vonage
Programmable SIP. Agrega la IP de la plataforma a la ACL de la troncal en el SIP Dashboard y envía las llamadas entrantes al origination URI.
Bandwidth
Sin SIP REGISTER, así que se necesita una IP estática. Agrega la IP de la plataforma a la ubicación, configura Termination y Origination por separado o usa credenciales de network bridge.
Exotel
Virtual SIP Trunking (vSIP), para numeración de la India, por TCP. La IP de la plataforma asociada a la troncal como ACL y el Destination URI apuntado al puerto TCP de la plataforma para las llamadas entrantes.
Vobiz
Un dominio SIP por troncal como host, la IP de la plataforma en la IP ACL de la troncal y un «origination URI» que significa lo contrario de lo que significa en Twilio.
Mobily
Saudi Arabia, ordered through Mobily Business sales and delivered over a private link. No one-step connect: your own SBC on the link relays calls, with G.711 A-law and a one-hour call cap.
Cualquier proveedor SIP
El patrón es el mismo en todas partes: agrega la IP de la plataforma a la lista de permitidos, define el origination URI como destino de las llamadas entrantes y haz coincidir el formato del número y el transporte.
¿Por qué traer tu propia troncal SIP?
- Tus números siguen siendo tuyos
- Wixzel Voice nunca vende ni porta números. Irte es cambiar un ajuste en tu operador.
- Tus tarifas siguen siendo tuyas
- Tu operador te cobra la línea. Wixzel Voice cobra solo el motor de voz, por segundo.
- Tu cumplimiento normativo no cambia
- El identificador de llamada, el KYC y los registros se quedan en el operador en el que ya confías.
- Cualquier proveedor SIP
- Ocho operadores tienen guía. Funciona cualquiera que ofrezca una troncal SIP.
¿Cómo se conecta una troncal SIP propia?
Una troncal de Wixzel Voice tiene dos mitades, y están en partes distintas de la consola de tu operador. Ambas direcciones se devuelven en cada troncal, así que léelas en la API en lugar de confiar en que una página siga al día.
Agrega 187.126.120.231 a la lista de IP permitidas de tu operador. Casi todos los operadores autorizan las llamadas salientes por IP de origen, y una troncal correcta en todo lo demás sigue fallando sin esto.
Configura el destino de entrada de tu operador con sip:187.126.120.231:5090. Si falta, el número simplemente nunca suena: el operador no tiene adónde entregar la llamada, así que no aparece nada en ningún registro.
curl https://api.voice.wixzel.com/v1/sip-trunks \
-H "Authorization: Bearer $WIXZEL_API_KEY" \
| jq '.data[0] | {platform_ip, origination_uri}'¿Qué operadores tienen una guía de configuración?
Cada operador de la lista tiene su propia página con qué contratar, qué permitir, adónde van las llamadas entrantes, la solicitud de troncal que le corresponde y los detalles propios de ese operador, con un enlace a los pasos completos de la consola en la documentación. Cada operador llama de forma distinta a los dos ajustes; el ajuste es el mismo.
| Operador | Producto | Nombre de la lista de permitidos | Nombre del destino de entrada | Transporte |
|---|---|---|---|---|
| Twilio | Elastic SIP Trunking | IP Access Control List | Origination SIP URI | udp |
| Telnyx | SIP Connections | authorised addresses on an IP-authenticated SIP Connection | La guía aún no lo indica | udp |
| Plivo | Zentrunk | IP Access Control List | Primary URI | udp |
| Vonage | Programmable SIP | ACL (Access Control List) | La guía aún no lo indica | udp |
| Bandwidth | - | Voice IP addresses / DNS hosts on a location | Origination | udp |
| Exotel | Virtual SIP Trunking (vSIP) | ACL mapped to the trunk | Destination URI | tcp |
| Vobiz | - | IP ACL | La guía aún no lo indica | udp |
| Mobily | SIP Trunk | trusted peers on the SBC that holds your Mobily link | SBC route for inbound Mobily calls | udp |
| Cualquier proveedor SIP | - | IP ACL, lista de permitidos o dirección autorizada | Origination URI, o el nombre que le dé tu operador | udp |
¿Cómo llaman los operadores a los dos ajustes?
| Qué hace | Nombres que usan los operadores |
|---|---|
| Autorizar llamadas desde Wixzel Voice | IP ACL, IP Access Control List, Access Control List, allowlist, authorised address, network bridge |
| Entregar llamadas a Wixzel Voice | Origination URI, Primary URI, Destination URI, termination point, destination SIP URI, host |
Dos ajustes más deciden si una troncal que parece correcta funciona. Formato de número: Twilio, Telnyx y Vobiz esperan el + inicial; muchos operadores mayoristas no pueden interpretarlo y agotan el tiempo de espera con 408, lo que se corrige con send_plus: false. Transporte: UDP es el valor predeterminado en casi todas partes, pero Exotel no acepta UDP, así que una troncal de Exotel funciona por TCP, y una diferencia de transporte parece que el operador te ignora.
¿Qué pasa cuando una llamada no se conecta?
Una llamada que la API aceptó y que luego el operador rechazó muestra status: "failed" (o busy para la causa 17 y no-answer para la causa 19) en GET /v1/calls/{id}, con failure_code (la causa Q.850 del operador, el valor estable en el que basar tu lógica) y failure_reason (qué hacer, en lenguaje sencillo). Su cost_micros es null: una llamada que nunca se conectó no cuesta nada, y el crédito reservado para ella se libera.
Revisa primero el registro de llamadas de tu operador. Si la llamada no aparece, nunca llegó al operador: la lista de permitidos, el host de la troncal o un firewall están mal. Si aparece con cero contestadas y costo cero, el operador aceptó el INVITE y luego lo cortó, lo que casi siempre es un problema de permisos en el operador y no de configuración: el identificador de llamada que presentas debe estar autorizado en la cuenta, el KYC y cualquier registro de destino deben estar completos donde el mercado lo exige, y el rango de destino debe estar habilitado, no solo con fondos. Estas son las causas que explica la API:
Todos los códigos de falla, los rechazos y cómo depurar una troncal
| failure_code | Lo que dijo el operador | Qué significa | Qué hacer |
|---|---|---|---|
| 1 | 404 | El operador no reconoce el número. | Revisa el formato del número. Si el operador necesita un prefijo técnico de marcación, define dial_prefix en la troncal. |
| 3 | - | El operador no tiene ruta hacia este destino. | Probablemente el destino no está habilitado en tu cuenta del operador. Pide al operador que abra la ruta. |
| 16 | - | Liberación normal: el otro extremo terminó la llamada a propósito. | En una llamada que nunca se contestó, interprétalo como que algo antes en la ruta decidió terminar la llamada, no como una llamada completada. |
| 17 | 486 | El número está ocupado. | - |
| 18 | 480 | El destino no respondió. | Puede que el teléfono esté apagado o fuera de alcance. |
| 19 | - | Sonó y nadie contestó. | No hay nada que corregir: la troncal y el número funcionan. |
| 20 | - | El abonado está ausente o no está disponible. | - |
| 21 | 403 / 407 | El operador rechazó la llamada directamente, antes de intentar el número. | En orden de probabilidad: la cuenta del operador está suspendida, cerrada o sin saldo; el usuario o la contraseña de la troncal son incorrectos; platform_ip no está en la lista de permitidos; o el identificador de llamada no está autorizado en la cuenta. Revisa primero el panel del operador. |
| 22 | - | El número cambió y ya no está en servicio. | - |
| 27 | - | El destino está fuera de servicio. | - |
| 28 | 484 | El operador rechazó el formato del número. | Si el operador necesita un prefijo técnico de marcación, define dial_prefix en la troncal. |
| 34 | - | El operador no tiene circuitos disponibles (congestión). | Vuelve a intentarlo en un momento. |
| 38 | 500 / 501 / 502 | El operador devolvió un error del servidor. | - |
| 41 | 503 | Se puede llegar al operador, pero rechaza las llamadas. | Suele deberse a capacidad, saldo o una ruta caída en el operador. |
| 42 | - | La central del operador está congestionada. | Vuelve a intentarlo en un momento. |
| 58 | 488 | Códecs incompatibles: el operador rechazó los códecs de audio ofrecidos. | Ofrece G.711 (PCMU o PCMA) del lado del operador. G.729 no es compatible. |
| 88 | 493 | El operador rechazó la llamada por incompatible. | - |
| 102 | 408 | El operador no respondió a tiempo. | Verifica el host y el port de la troncal, y que el operador acepte SIP desde platform_ip. Si el operador muestra la llamada como recibida pero nunca contestada, define send_plus como false. |
Estas las rechaza POST /v1/calls antes de marcar nada, y no cuestan nada:
| Estado HTTP | code | Qué significa |
|---|---|---|
| 400 | no_outbound_number | Sin identificador de llamada: pasa from_number_id o define outbound_phone_number_id en el agente. |
| 400 | number_not_on_trunk | El número que llama no tiene sip_trunk_id, así que no hay a dónde enviar la llamada. |
| 400 | missing_idempotency_key | La solicitud HTTP directa no tenía Idempotency-Key. Los SDK lo envían por ti. |
| 402 | insufficient_credits | El saldo no alcanza para los primeros 15 segundos. Recarga y vuelve a intentarlo. |
| 429 | rate_limit_exceeded | Más de 10 solicitudes por segundo con esta clave. Espera lo que indique Retry-After; un 429 nunca se cobra. |
| 503 | - | El motor de voz no está disponible, la cuenta ya tiene tantas llamadas en curso como su límite de llamadas simultáneas (5 de forma predeterminada) o la clave de API alcanzó su límite de gasto. El mensaje indica cuál. |
GET /v1/sip-trunks/{id}/status muestra si la troncal es accesible en este momento y lista sus últimos rechazos del operador; POST /v1/sip-trunks/{id}/test la prueba cuando lo pidas, y GET /v1/sip-trunks/{id}/logs devuelve el registro SIP.
curl https://api.voice.wixzel.com/v1/sip-trunks/$TRUNK_ID/status \
-H "Authorization: Bearer $WIXZEL_API_KEY"Un número entrante que nunca suena no es una falla que puedas consultar: si el operador no tiene un destino configurado, la llamada nunca sale del operador, así que no hay ninguna llamada fallida que revisar. Comprueba el destino de entrada, que el número esté asociado a la troncal del lado del operador y que tenga un inbound_agent_id. Si las llamadas se conectan pero nadie oye nada, el audio no pasa: un firewall en el camino tiene que permitir el rango RTP, no solo el puerto de señalización.
Preguntas frecuentes
¿Por qué Wixzel Voice necesita mi propia troncal SIP?
¿Qué operadores funcionan con Wixzel Voice?
¿Cuáles son los dos ajustes que necesita una troncal?
platform_ip (hoy 187.126.120.231), para que el operador acepte llamadas de la plataforma. La mitad entrante es el destino de las llamadas entrantes del operador configurado con origination_uri (hoy sip:187.126.120.231:5090), para que las llamadas a tus números lleguen a la plataforma; un operador que acepta solo host y puerto, o que no envía por UDP, necesita otra forma de ese valor, que indica su guía. Ambos se devuelven en cada troncal con GET /v1/sip-trunks: léelos ahí en lugar de copiarlos de una página.¿Puedo conservar mi número de teléfono actual?
POST /v1/phone-numbers en esa troncal y asígnale un inbound_agent_id. Wixzel Voice no porta números, así que el número se queda con tu operador.¿Cómo se guarda la contraseña de mi operador?
¿Necesito una troncal SIP para una app web o móvil?
POST /v1/realtime/sessions y la app habla con el agente por un WebSocket, sin troncal y sin número.¿Los cambios en la troncal requieren reiniciar?
¿Compro los números de teléfono a Wixzel Voice o a mi operador?
POST /v1/phone-numbers/purchase. Tu operador lo cobra a su precio. En Exotel y Bandwidth, compra el número en el operador. Con cualquier operador, puedes registrar un número que ya tienes con POST /v1/phone-numbers en la troncal en la que está.¿Por qué mi número nunca le suena al agente?
origination_uri que devuelve tu troncal (hoy sip:187.126.120.231:5090), el número tiene que estar asociado a esa troncal del lado del operador y el número necesita un inbound_agent_id en Wixzel Voice. Sin lo primero, la llamada nunca sale del operador y no aparece nada en ningún registro.¿Cuánto cuesta una llamada con IA por mi propia troncal SIP?
Crea tu primer agente de voz

