Configurar un trunk de Twilio en FreePBX 13

Qué es Twilio?

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.

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.

Crear un trunk en Twilio

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:

  • General
  • Termination
  • Origination
  • Numbers

En la sección termination, configurar:

  • Termination SIP URI
  • Authentication: Credential Lists

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.

Configurar la troncal SIP de Twilio en FreePBX

Para configurar el trunk apenas creado para realizar llamadas, debemos tener a mano los diguientes parámetros:

  • El número vinculado en la sección numbers
  • La localized URI creada en la sección termination
  • El nombre de usuario ingresado en el apartado authentication → credential list en la sección termination
  • La contraseña de usuario ingresada en el apartado authentication → credential list en la sección termination

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:

  • General
    • Trunk name  twilio
    • Outbound CallerID El numero comprado en formato E.164
    • CID Options Force Trunk CID
  • Dialplan Manipulation Rules
    • Outbound Dial Prefix  +
  • sip Settings (outgoing)
    • PEER Details
    • Trunk Name  TwilioSIP
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

Configuración para recibir llamadas

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

El turno de las rutas

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.