Configuración de cliente SIP
Cualquier cliente SIP que pueda realizar una llamada a través de un proxy puede usar un trunk Bird. Esto incluye PBXs, softphones de escritorio y herramientas de línea de comandos. Esta página relaciona los detalles de conexión del trunk con los campos habituales de un cliente y los ajustes de autenticación.
Qué necesita un cliente
Cuatro valores, todos de la página del trunk:
| Campo del cliente | Qué introducir |
|---|---|
| Servidor SIP, dominio, host o proxy | El dominio SIP del trunk |
| Puerto y transporte | Uno de los puertos admitidos del trunk |
| Usuario de autenticación, auth user o login | bird |
| Contraseña o secreto | El secreto de una clave API permitida en el trunk |
Un trunk que solo usa su lista de IPs permitidas necesita los dos primeros. Las credenciales son lo que añade la autenticación por clave API.
Los ejemplos usan YOUR_TRUNK_DOMAIN, YOUR_CALLER_ID y YOUR_API_KEY_SECRET. Copia el dominio completo de la página del trunk. Bird rechaza llamadas a otro dominio antes de que lleguen a tu registro de llamadas. Con la sesión iniciada en el Bird CLI, ejecuta bird voice tools test-call --dry-run para imprimir estos valores como una línea de cuenta de baresip.
Deja realm o authentication domain vacío para que el cliente use el realm del challenge de Bird. Si un cliente requiere un valor, usa el ID del espacio de trabajo sin su prefijo wsp_, seguido de .sip.bird.com. El realm del espacio de trabajo difiere del dominio SIP del trunk.
Realiza llamadas sin registrarte
Bird autentica cada INVITE contra la lista de IPs permitidas del trunk o mediante un challenge de contraseña. Los clientes no se registran en el trunk.
Comprueba el registro antes de realizar una llamada:
- En un PBX, configura Bird como trunk y deja el registro desactivado. En Asterisk esto significa no tener sección type=registration; en FreeSWITCH significa register=false en el gateway; FreePBX y 3CX tienen un modo de registro que debes poner en none.
- En un softphone, desactiva el registro en los ajustes avanzados de la cuenta si ofrece esa opción. Donde no la ofrezca, el intento fallido de registro es cosmético y las llamadas funcionan igualmente, porque actuamos sobre el INVITE en lugar de sobre el registro.
Dos identidades, dos campos
Tu cliente debe enviar dos identidades distintas:
- El caller ID va en el header From y tiene que ser un número que hayas verificado, en formato E.164: un + inicial seguido del código de país y el número nacional. En la mayoría de clientes es el campo de usuario o caller ID de la cuenta.
- El nombre de usuario digest es siempre bird. En la mayoría de clientes es el campo de usuario de autenticación o login.
Marca también en E.164, ya que es con lo que Bird enruta y tarifica.
Softphones
Un softphone es la forma más rápida de comprobar que un trunk nuevo funciona antes de dirigirle tráfico de producción.
baresip
Añade una línea a ~/.baresip/accounts, con tu caller ID como usuario de la cuenta y bird como usuario de autenticación:
Ejemplo de código
<sip:YOUR_CALLER_ID@YOUR_TRUNK_DOMAIN>;auth_user=bird;auth_pass=YOUR_API_KEY_SECRET;regint=0;outbound="sip:YOUR_TRUNK_DOMAIN;transport=udp"regint=0 es lo que impide que baresip se registre. Inícialo y marca con /dial +31612345678.
Zoiper
Añade una cuenta SIP manualmente. Pon Domain con el dominio SIP del trunk, Username con tu caller ID verificado y Password con el secreto de la clave API. En los ajustes avanzados, pon Auth username a bird, desactiva el registro al inicio y elige el transporte.
Linphone
Añade una cuenta con bird como usuario de autenticación de la identidad SIP y tu caller ID como nombre de usuario; después desactiva el registro en la cuenta. En linphonerc la misma cuenta es una sección [proxy_N] con reg_sendregister=0.
MicroSIP
En Account: SIP server es el dominio SIP del trunk, Username tu caller ID verificado, Login bird, Password el secreto de la clave API. Deja Domain igual que el servidor SIP.
PBXs
Asterisk
En pjsip.conf, un endpoint con autenticación saliente y sin sección de registro:
Ejemplo de código
[bird-auth]
type=auth
auth_type=userpass
username=bird
password=YOUR_API_KEY_SECRET
[bird-aor]
type=aor
contact=sip:YOUR_TRUNK_DOMAIN:5060
[bird]
type=endpoint
context=from-internal
outbound_auth=bird-auth
aors=bird-aor
from_user=YOUR_CALLER_ID
from_domain=YOUR_TRUNK_DOMAINfrom_user es el caller ID que Bird comprueba, así que tiene que ser un número verificado. Marca con Dial(PJSIP/+31612345678@bird).
FreePBX
En Connectivity > Trunks, añade un trunk SIP (chan_pjsip). En sus pjsip Settings, pon Username a bird, Secret al secreto de la clave API, SIP Server al dominio SIP del trunk, Authentication a outbound y Registration a none. Pon el caller ID saliente del trunk a un número verificado.
FreeSWITCH
Un gateway en conf/sip_profiles/external/bird.xml:
Ejemplo de código
<include>
<gateway name="bird">
<param name="proxy" value="YOUR_TRUNK_DOMAIN"/>
<param name="register" value="false"/>
<param name="username" value="bird"/>
<param name="password" value="YOUR_API_KEY_SECRET"/>
<param name="from-domain" value="YOUR_TRUNK_DOMAIN"/>
<param name="caller-id-in-from" value="true"/>
</gateway>
</include>Con caller-id-in-from activado, el caller ID del tramo pasa a ser el número From, así que ponlo a un número verificado cuando origines la llamada.
3CX
Añade un trunk SIP genérico y desactiva el registro. Pon su host al dominio SIP del trunk, su authentication ID a bird y su contraseña al secreto de la clave API. Pon el caller ID saliente a un número verificado.
Siguientes pasos
| Página | Qué cubre |
|---|---|
| Solución de problemas de voz | Diagnosticar una llamada que no se completa, a partir de su síntoma |
| Trunks SIP | Los detalles de conexión, las listas de IPs permitidas y la oferta Digest |
| Realizar llamadas | Qué espera Bird en el INVITE y cómo se tarifica una llamada |
| Caller IDs | Registrar un número y demostrar que es tuyo con una llamada de verificación |
| Registro de llamadas | Confirmar que una llamada salió y cuánto costó |
Recursos relacionados
Continúa con la documentación, guías y ejemplos sobre este tema. Los recursos están en inglés.
Comprender el conceptoWhat is a voice API?Explorar la funcionalidadVoiceGuía de implementaciónVoice overview
Obtener un resumen de implementación