Básicamente, Twilio es una plataforma cloud para desarrollo de apliciones VoIP. Permite manejar llamadas, mensajes, audio y video a través de una API. Desde no hace mucho tiempo, Twilio ofrece también terminación de voz internacional. El servicio se llama Elastic SIP Trunking.
El servicio Elastic SIP Trunking permite la creación y administración de troncales SIP. Cada línea troncal puede vincularse a un número internacional PSTN que Twilio ofrece a precios ridículos, como €1 al mes. La modalidad de facturación es al minuto y as you go, que para los que tienen un volumen considerable de llamadas, es sin dudas la mejor opción. Los precios de las llamadas al minuto puede que no sean los mejores del mercado, no es difícil encontrar proveedores de minutos que ganen por algunos centavos, pero si se considera la calidad de las llamadas, y sobre todo la posibilidad que ofrece Twilio de conectar nuestra PBX (en este caso hablamos de un Asterisk) a uno de los tantos nodos de su cloud, permitiéndonos reducir tiempos de latencia optimizando aún más la calidad de la comunicación, nunca esos centavos de diferencia estarán tan bien invertidos.
Además de la calidad en las llamas, Twilio ofrece la posibilidad de encriptar ya sea la señal (TLS) como el flujo de voz (SRTP) por la módica suma de 0.001 centavos al minuto.
Sin ninguna duda, Elastic SIP Trunking fue uno de los principales protagonistas en las pérdidas que Carlos Slim ha sufrido en el último año.
No voy a entrar tanto en el detalle en este punto. La configuración de un troncál de Elastic SIP Trunking está organizada en 4 puntos:
En la sección termination, configurar:
En la sección origination, tendremos que crear una URI utilizando la dirección IP pública de nuestra PBX.
Por último, en la sección numbers, podremos comprar un número de la red PSTN de 44 paises (hasta el momento de este artículo) y vincularlo al troncal.
Para configurar el trunk apenas creado para realizar llamadas, debemos tener a mano los diguientes parámetros:
Una vez que tenemos estos datos, creamos finalmente una nueva troncal en FreePBX yendo a connectivity → trunks y luego add trunk → add SIP trunk. Completar el formulario con los siguientes valores:
host=nombre.pstn.br1.twilio.com
username=nombre
secret=super_password
type=peer
dtmfmode=rfc2833
canreinvite=no
disallow=all
allow=ulaw
qualify=yes
insecure=port,invite
Para recibir las llamadas al número Twilio comprado al momento de crear la línea troncal, necesitaremos la lista de direcciones IP de Twilio, ya que al tratarse de un verdadero servicio cloud, la llamada podría llegar a nuestro PBX no desde un IP estático sino desde diversos. La lista de IP puede obtenerse desde la consola de Twilio en la sección networking info → IP Address Whitelist. En este momento son más de 30 IP's y ninguna será publicada en este artículo.
Editar el archivo /etc/asterisk/sip_custom.conf del siguiente modo:
[twiliocaller](!)
context = from-trunk
type = peer
qualify=no
allowguest=yes
[twilioip-1](twiliocaller)
host=**.***.**.0
[twilioip-2](twiliocaller)
host=**.***.**.1
...
[twilioip-31](twiliocaller)
host=**.***.**.40
Una vez creadas las líneas SIP de entrada y salida, será necesario crear las rutas tanto de entrada como de salida. En el caso de la ruta de entrada utilizamos el número DID en formato E.164, por ejemplo: +34 123456789
Para las rutas de salida, será necesario eliminar el 00 al inicio del número marcado. Luego, la configuración del trunk TwilioSIP agregará el signo + para que finalmente el número marcado corresponda también al formato E.164
Por último, aplicar la configuración de FreePBX y hacer las pruebas necesarias para verificar el correcto funcionamiento de Elastic SIP Trunking.