Integraciones
SIP trunks
Conecta SIVO con tu operador telefónico. Plantillas certificadas para Zadarma, Twilio, Bandwidth y plantilla custom para cualquier carrier.
Actualizado:
siptrunksintegracionescarriers
Un trunk SIP es la conexión entre SIVO y tu operador telefónico. SIVO no es operador — tú contratas tu carrier y SIVO le habla por SIP.
Operadores certificados
| Operador | Cobertura | Estado |
|---|---|---|
| Zadarma | EU, LATAM, USA | Probado en producción |
| Twilio | Global | Probado en producción |
| Bandwidth | USA (con E911), Canadá | Probado en producción |
| Custom | Cualquier carrier SIP | Plantilla genérica |
Configuración paso a paso
Zadarma
- Settings → SIP trunks → + Nuevo → Zadarma.
- Rellena:
- Nombre: ej.
zadarma-prod. - Usuario SIP: el que te dio Zadarma (formato
1XXXXX). - Password SIP: idem.
- CIDRs permitidos:
185.45.152.0/24(rango completo, no solo IPs individuales).
- Nombre: ej.
- Guarda. Estado pasa a
REGEDen ~30 segundos si las credenciales son correctas.
Twilio Elastic SIP Trunking
- En Twilio Console → Elastic SIP Trunking → Trunks → + Create.
- Crea el trunk con un nombre, anota la Termination URI (
<trunk>.pstn.twilio.com). - En SIVO: Settings → SIP trunks → + Nuevo → Twilio.
- Rellena:
- Termination URI: la que copiaste.
- Auth: IP (recomendado) o credenciales.
- CIDRs permitidos: las IPs públicas de Twilio (ver su docs por región).
- En Twilio, añade el IP Access Control List con la IP pública de SIVO (te la damos tras crear el trunk).
Bandwidth
- Settings → SIP trunks → + Nuevo → Bandwidth.
- Rellena los datos provistos por Bandwidth en tu onboarding.
- Para llamadas USA con cumplimiento E911, configura el campo E911 location por DID en
Settings → DIDs → tu número → E911.
Custom
Para cualquier carrier no certificado:
- Settings → SIP trunks → + Nuevo → Custom.
- Necesitas:
- Host del registrador (donde SIVO envía REGISTER).
- Usuario + password.
- Transporte: UDP, TCP o TLS.
- Códecs: orden de preferencia (PCMU, PCMA, Opus, G.722).
- CIDRs permitidos del rango de IPs origen del carrier.
- Guarda y verifica estado.
Estados del trunk
| Estado | Significado |
|---|---|
REGED | Registrado correctamente. Listo para recibir/emitir llamadas. |
TRYING | Intentando registrarse. Espera 30 segundos. |
FAIL | Fallo de autenticación o red. |
NOREG | Sin intento de registro (trunk creado pero deshabilitado). |
EXPIRED | Registro expiró sin renovación. Suele ser red. |
CIDRs permitidos — por qué importa
SIVO valida que las llamadas SIP entrantes vienen de las IPs declaradas en CIDRs permitidos. Esto:
- Bloquea bots SIP que escanean internet (cientos al día) antes de tocar la BD.
- Previene fraude si tus credenciales se filtran.
- Reduce el ruido en logs y métricas.
Failover entre trunks
Define un trunk primario y uno o varios de failover para resiliencia:
- Settings → SIP trunks → tu trunk principal → Failover policy.
- Selecciona trunks alternativos en orden de prioridad.
- Si el primario no responde en 5 segundos (sin 18x, sin 200), SIVO reintenta por el siguiente.
Útil para:
- Resiliencia geográfica (carrier EU primario, carrier US backup).
- Combinar carriers (uno barato para llamadas locales, uno premium para internacional).
- Migraciones graduales (cambio de carrier sin big-bang).
Routing de salida
Cuando un agente hace una llamada saliente, SIVO decide por qué trunk salir según:
- DID origen (caller ID) — si está vinculado a un trunk específico.
- Prefijo destino — puedes definir reglas tipo “todo lo que empiece por +34 sale por Zadarma”.
- Trunk default del tenant — fallback.
Las reglas se configuran en Settings → Outbound routing.
Outbound caller ID
Para que el caller vea un número tuyo (no el del trunk):
- Settings → DIDs → tu número → Outbound → marca “Permitir como caller ID saliente”.
- Settings → Usuarios → tu agente → DIDs autorizados → añade el DID.
- El agente verá un selector en su softphone para elegir qué caller ID usa por llamada.
Verificación
Tras configurar:
- Llama desde tu móvil al DID asignado → debe entrar al IVR.
- Desde el softphone, marca un número PSTN → debe salir.
- En Calls → History, ambas llamadas deben aparecer con
status=answeredytrunk=<tu-trunk>. - Si algo falla → ver Troubleshooting.