Ir al contenido
Trae tu propia troncal SIP

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

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.

Saliente: llamadas desde la plataforma
platform_ip

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.

Entrante: llamadas a tus números
origination_uri

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.

Lee ambas en la API
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.

OperadorProductoNombre de la lista de permitidosNombre del destino de entradaTransporte
TwilioElastic SIP TrunkingIP Access Control ListOrigination SIP URIudp
TelnyxSIP Connectionsauthorised addresses on an IP-authenticated SIP ConnectionLa guía aún no lo indicaudp
PlivoZentrunkIP Access Control ListPrimary URIudp
VonageProgrammable SIPACL (Access Control List)La guía aún no lo indicaudp
Bandwidth-Voice IP addresses / DNS hosts on a locationOriginationudp
ExotelVirtual SIP Trunking (vSIP)ACL mapped to the trunkDestination URItcp
Vobiz-IP ACLLa guía aún no lo indicaudp
MobilySIP Trunktrusted peers on the SBC that holds your Mobily linkSBC route for inbound Mobily callsudp
Cualquier proveedor SIP-IP ACL, lista de permitidos o dirección autorizadaOrigination URI, o el nombre que le dé tu operadorudp

¿Cómo llaman los operadores a los dos ajustes?

Qué haceNombres que usan los operadores
Autorizar llamadas desde Wixzel VoiceIP ACL, IP Access Control List, Access Control List, allowlist, authorised address, network bridge
Entregar llamadas a Wixzel VoiceOrigination 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_codeLo que dijo el operadorQué significaQué hacer
1404El 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.
17486El número está ocupado.-
18480El 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.-
21403 / 407El 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.-
28484El 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.
38500 / 501 / 502El operador devolvió un error del servidor.-
41503Se 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.
58488Có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.
88493El operador rechazó la llamada por incompatible.-
102408El 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 HTTPcodeQué significa
400no_outbound_numberSin identificador de llamada: pasa from_number_id o define outbound_phone_number_id en el agente.
400number_not_on_trunkEl número que llama no tiene sip_trunk_id, así que no hay a dónde enviar la llamada.
400missing_idempotency_keyLa solicitud HTTP directa no tenía Idempotency-Key. Los SDK lo envían por ti.
402insufficient_creditsEl saldo no alcanza para los primeros 15 segundos. Recarga y vuelve a intentarlo.
429rate_limit_exceededMá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
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?

Porque Wixzel Voice nunca vende ni porta números de teléfono y nunca revende telefonía. Las llamadas telefónicas pasan por una troncal de un operador que eliges tú, así que tus números siguen siendo tuyos, tu operador te cobra directamente con tus tarifas y sin recargos, y a Wixzel Voice no le importa qué operador elijas. El costo es un paso de configuración más antes de la primera llamada. Si necesitas un número, conecta tu cuenta de Twilio, Telnyx, Plivo, Vobiz o Vonage desde la consola y compra uno en esa cuenta sin salir de Wixzel Voice. Tu operador lo factura a su precio.

¿Qué operadores funcionan con Wixzel Voice?

Cualquier operador que ofrezca una troncal SIP con lista de IP permitidas (o autenticación con usuario y contraseña) y un destino configurable para las llamadas entrantes. Hay guías de configuración para Twilio, Telnyx, Plivo, Vonage, Bandwidth, Exotel, Vobiz, Mobily, y una general para cualquier otro proveedor SIP.

¿Cuáles son los dos ajustes que necesita una troncal?

La mitad saliente es una entrada en la lista de permitidos del operador para 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?

Sí, si está en una troncal SIP que puedes enrutar. Regístralo con 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?

Una contraseña nueva o actualizada se cifra en reposo con AES-256-GCM bajo una clave que solo tiene el despliegue; una guardada con el esquema anterior se vuelve a cifrar así la próxima vez que se guarde. La API nunca vuelve a devolverla, ni siquiera a ti. Guárdala donde guardes el resto de las credenciales de tu operador.

¿Necesito una troncal SIP para una app web o móvil?

No. Una troncal es solo para llamadas telefónicas. Para poner un agente en una página web o una app, tu servidor crea una sesión realtime con 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?

No. Crear, actualizar o eliminar una troncal reescribe la configuración de telefonía y la recarga, así que un cambio se aplica de inmediato.

¿Compro los números de teléfono a Wixzel Voice o a mi operador?

A tu operador. Wixzel Voice nunca vende ni porta números de teléfono y nunca aplica recargos a los minutos del operador. Si conectas tu cuenta de Twilio, Telnyx, Plivo, Vobiz o Vonage desde la consola, puedes comprar un número en esa cuenta desde la página Números de teléfono de la consola o con 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?

Las llamadas entrantes se configuran por separado de las salientes. Tu operador tiene que entregar la llamada al 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?

Dos facturas. Tu operador te cobra directamente su propia tarifa por minuto por la línea. Wixzel Voice cobra el motor de voz por segundo de uso real: desde $0.0491 por minuto conectado con gemini-live hasta $0.1851 con deepgram-agent, con prepago desde una recarga mínima de $5, sin suscripción y sin plan gratuito. Una llamada que nunca se conecta no cuesta nada del lado de Wixzel Voice.