Somos muchos los que esperábamos con ansia la llegada de PJSIP en Asterisk como “sustituto” de chan_sip por varias razones. El gran problema era que, pese a que chan_pjsip es un conector hacia PJProject, tras hacer un par de pruebas, uno descubre que no todo es tan fácil como esperaba y que utilizar PJSIP en lugar de chan_sip se hace más cuesta arriba, por lo que al final el 99% de los usuarios siguen utilizando chan_sip. Resultado: frustrante.

La primera cuesta arriba que nos encontramos cuando trabajamos con PJSIP es la instalación. Hay que compilar previamente PJPROJECT, por lo que descargamos la última versión, la instalamos y una vez finalizado correctamente (y sin que nos de ningún error) al compilar Asterisk, este falla por alguna razón. ¿qué hemos hecho mal? ni idea… como todo buen usuario, vamos al wiki de Asterisk y seguimos las instrucciones paso a paso… vemos que la versión que aparece en el wiki no es la última, así que vamos a probar por si la última versión no fuera todo lo estable que pensábamos y volvemos a intentarlo… utilizamos una línea mágica que viene en el wiki:

./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr CFLAGS='-O2 -DNDEBUG'

Con esto, parece que debería funcionar bien… volvemos a compilar… vuelve a fallar… ¿puede ser porque hemos instalado antes la versión más moderna? Eliminamos las librerías que tenemos para asegurarnos que no tenemos nada de PJ… instalado previamente y volvemos a recompilar… y así, durante un par de horas más.

Finalmente encontramos las versiones correctas de PJSIP, PJProyect, Asterisk 13 y demás lindezas, con la línea correcta de ./configure y parece que por fin compila y tenemos nuestro PJSIP configurado y funcionando. Vamos a configurar ahora nuestras cuentas SIP…

Segunda cuesta arriba, la configuración no es ni parecida a la que estamos acostumbrados en chan_sip. No solo es más compleja, hay términos nuevos, más contextos, más parámetros nuevos, nuevos valores… incluso si hacemos uso de los ejemplos que vienen en chan_pjsip.conf tenemos problemas si el cliente es remoto o si queremos conectar con un trunk.

PJSIP nos ofrece muchas ventajas como stack propio e independiente del proyecto Asterisk. Quizá lo más llamativo es el hecho de poder tener varios AOR (address of record), esto es: varios teléfonos utilizando la misma cuenta SIP, pero quizá lo más interesante es que la implantación del protocolo SIP es mucho más puro que mediante el propio chan_sip, por lo que la comunicación tendrá menos problemas ocasionados.

Pero estas ganas de probar y pelear con PJSIP se suelen desvanecer en aquellos usuarios menos experimentados que esperan algo que funcione de forma intuitiva, rápida y sin muchos requerimientos, algo que con PJSIP no encontrarán.

# Instalamos unas dependencias mínimas...
apt-get install git aptitude bzip2 wget

# Instalamos el proyecto PJPROJECT
cd /usr/src
wget -c "http://www.pjsip.org/release/2.4.5/pjproject-2.4.5.tar.bz2"
tar xvfj pjproject-2.4.5.tar.bz2
cd pjproject-2.4.5
./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr CFLAGS='-O2 -DNDEBUG'
make dep && make && make install

# Instalamos Asterisk con soporte PJSIP
cd /usr/src
wget -c "http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-13.7.2.tar.gz"
tar xvfz asterisk-13.7.2.tar.gz
cd asterisk-13.7.2/contrib/scripts
./install_prereq install
cd /usr/src/asterisk-13.7.2
./configure && make && make install

# Instalamos una instalación mínima de Asterisk con PJSIP
make basic-pbx
make config

Con estos comandos, instalaríamos PJSIP y Asterisk con soporte de PJSIP y, además, con el último comando: make basic-pbx, tendríamos una configuración mínima de una pequeña empresa con unas 10 extensiones configuradas en la que utilizaremos una de ellas para nuestro teléfono:

Captura de pantalla de 2016-03-17 17-00-47

Aquí vemos la definición de un usuario SIP en el archivo pjsip.conf utilizando varias plantillas.

Lo más llamativo es que tenemos:

  • Un usuario SIP: 1107
  • Un usuario de autentificación SIP: 0019159BF771
  • Una contraseña: 4webrEtHupHewu4

Con estos datos, solo tenemos que configurar nuestro teléfono de la siguiente manera:

Captura de pantalla de 2016-03-17 17-00-57

Y con esto, ya tendríamos la cuenta creada y disponible para hacer llamadas… de hecho, al marcar 1100, accederemos al menú de nuestro “awesome supercool company” de ejemplo:

Captura de pantalla de 2016-03-17 17-01-44

Esto por supuesto es un ejemplo de cómo montar un Asterisk básico para una empresa, utilizando para ello PJSIP. Es un caso básico de lo “fácil” e interesantísimo que puede llegar a ser trabajar con PJSIP en lugar de con Chan_SIP.

Parece que en la próxima versión de Asterisk 13.8.0 vendrá con algo de ayuda para instalar Asterisk con PJSIP, aunque de momento, lo principal es empezar a acostumbrarse a utilizarlo y sacarle el máximo rendimiento posible.

¿y tú? ¿ya utilizas PJSIP en tus instalaciones?

 

2 Comentarios

Dejar un comentario

Archivos

© 2014 Sinologic, inc. All rights reserved.

Menú

Redes sociales