Configuración práctica de Asterisk (18): Primeros pasos con PJSIP, registro de extensiones, llamadas internas y enlace SIP con un operador de VoIP

Una vez que ya contamos con un Asterisk en marcha con la pila PJSIP, llega el momento de hacer las primeras pruebas y comprobar los nuevos cambios que ofrece este stack SIP. Quizás el aspecto principal que conviene señalar es que utilizar la pila PJSIP afecta principalmente a la configuración del fichero pjsip.conf, que es el equivalente a sip.conf en la pila chan_sip, pero apenas afecta a la configuración del fichero extensions.conf o dialplan, excepto en algunas opciones nuevas de determinadas aplicaciones de Asterisk.

  • En el fichero pjsip.conf el registro de extensiones utiliza nuevas secciones que no estaban presentes en sip.conf. Este enfoque modular permite reutilizar partes del código comunes a varias extensiones y permite también separar a nivel lógico los diferentes parámetros de configuración de la extensión, como el tipo de transporte utilizado (tcp, udp, tls), la autenticación y la identificación de la identidad de la extensión.
  • En el fichero pjsip.conf la definición de un enlace SIP con otro sistema Asterisk o con un operador de VoIP también utiliza nuevas secciones que tampoco estaban presentes en sip,conf. De igual forma, estas nuevas secciones obedecen a un diseño modular que separa a nivel lógico los diferentes parámetros de configuración del enlace o trunk, pero que, inicialmente, añade un grado de dificultad aun mayor en la configuración, haciéndolo menos intuitivo respecto de la misma configuración en el fichero sip.conf

Un ejemplo básico de configuración de tres extensiones en pjsip.conf es el mostrado a continuación:

Ejemplo de configuración de extensiones en pjsip.conf

En el fichero anterior vemos que para cada extensión son necesarias las siguientes cuatro secciones:

  • Sección de tipo endpoint: Esta es la principal sección en la definición de una extensión, siendo su identificador el número asociado a la extensión.  Al igual que se hacia en sip.conf, se define el contexto donde se atenderán las llamadas efectuadas por la extensión dentro del fichero extensions.conf, el tipo de codecs de voz utilizados y, como novedad, enlaces a las secciones de tipo transportaorauth.
  • Sección de tipo transport: Esta sección define la capa de transporte utilizada por la pila PJSIP con la extensión o el enlace SIP, la cual puede ser TCP, UDP, WebSockets, y transporte encriptado del tráfico de voz mediante protocolos como TLS o SSL. Cuando varias extensiones comparten el mismo método de transporte, se puede compartir una sola sección transport entre todas ellas. Es importante tener en cuenta que el nombre de esta sección puede ser cualquiera que ayude a identificar el tipo de transporte utilizado, pero si se cambia el nombre de una sección transport una vez Asterisk está en funcionamiento, es necesario hacer un restart de Asterisk. 
  • Sección de tipo aor: Esta sección aporta una característica novedosa a pjsip respecto de chan_sip, ya que permite definir el número de extensiones diferentes que se pueden registrar con el mismo nombre de extensión. Usualmente el valor del parámetro max_contacts será igual a 1, pero podemos registrar con el mismo número de extensión diferentes teléfonos IP y todos ellos estarán operativos.(Nota técnica: el parámetro remove_existing=yes en esta sección no es obligatorio, pero previene desconexiones no previstas de las extensiones).
  • Sección de tipo auth: En esta sección se definen los parámetros de autenticación de la extensión en el registro, habitualmente mediante usuario y contraseña.

La configuración del fichero extensions.conf puede ser idéntica a la realizada con la pila chan_sip, teniendo en cuenta que con pjsip aparecen algunas funcionalidades nuevas. El ejemplo más simple posible de configuración en el fichero extensions.conf para tres extensiones de números 101, 102 y 103 y situadas todas ellas en el contexto “llamadas-internas” es el mostrado a continuación:

Ejemplo básico de configuración en extensions.conf

Como se ha indicado anteriormente, pjsip aporta varias novedades, una de las cuales es la posibilidad de registrar varios teléfonos IP con el mismo número de extensión. Por ejemplo, si en el fichero pjsip.conf anterior modificamos la sección aor para la extensión 102 y definimos max_contacts=2, podremos registrar dos extensiones con el número 102.

max-contacts=2 para la extensión 102

Softphones PhonerLite y Zoiper registrados con el mismo número de extensión

Para llamar a ambos teléfonos a la vez es necesario utilizar una opción especial de la aplicación Dial( ), que solo está disponible cuando se trabaja con la pila PJSIP y cuya sintaxis es la siguiente: Dial(${PJSIP_DIAL_CONTACTS(exten)})

Ejemplo de la aplicación Dial(${PJSIP_DIAL_CONTACTS( )})

Ejemplo de funcionamiento de la aplicación Dial(${PJSIP_DIAL_CONTACTS( )})

La configuración de un enlace SIP con un operador de VoIP como por ejemplo Sarenet, requiere al igual que en el caso anterior de nuevas secciones que no estaban presentes cuando se utilizaba la pila Chan_sip y que, sin lugar a dudas, si ya era algo complicado establecer un enlace SIP con un operador de VoIP, ahora lo es mucho más !!!!

Configuración en pjsip.conf de un enlace con un operador de VoIP

Se observa que, de nuevo, se utilizan secciones específicas de tipo aor y de tipo auth, y que aparecen las nuevas secciones de tipo registration, endpoint e identify. La sección de tipo endpoint es la principal y desde ella se hacen llamadas a las secciones de tipo aors y de tipo auth, además de fijarse el contexto para las llamadas entrantes por dicho enlace SIP. Por lo tanto, esta sección endpoint tiene como misión permitir las llamadas salientes a través del enlace SIP con el operador.

De igual forma, el servidor de Asterisk se debe registrar a intervalos regulares en el SIP Server del operador de VoIP a fin de que este conozca en todo momento en que dirección IP se encuentra a la hora de enviarle los mensajes INVITE de las llamadas entrantes. Esta configuración se incluye en la sección de tipo registration. 

Una configuración básica del fichero extensions.conf que permite hacer y recibir llamadas por dicho enlace SIP es la siguiente:

Ejemplo de extensions.conf para llamadas por el enlace SIP con el operador de VoIP

En la configuración anterior se observa que la extensión “s” o “start” hace que la aplicación Dial( ) llame de forma inmediata a la extensión 101, tal y como se muestra en el siguiente ejemplo práctico de llamada entrante por el enlace SIP

Llamadas entrantes por el enlace SIP

Llamadas salientes por el enlace SIP

Esta entrada fue publicada en Telefonía IP. Guarda el enlace permanente.

Deja un comentario

Tu dirección de correo electrónico no será publicada.