Configure su servidor Asterisk de VoIP para Odoo

Instalar el servidor Asterisk

Dependencias

Antes de instalar Asterisk es necesario instalar las siguientes dependencias:

  • wget

  • gcc

  • g++

  • ncurses-devel

  • libxml2-devel

  • sqlite-devel

  • libsrtp-devel

  • libuuid-devel

  • openssl-devel

  • pkg-config

Para instalar libsrtp, siga las siguientes instrucciones:

cd /usr/local/src/
wget http://srtp.sourceforge.net/srtp-1.4.2.tgz
tar zxvf srtp-1.4.2.tgz
cd /usr/local/src/srtp
./configure CFLAGS=-fPIC --prefix=/usr/local/lib
make && make install

También necesita instalar PJSIP, puede descargarlo aquí <http://www.pjsip.org/download.htm>`_. Una vez que lo extraiga debe:

  • Cambiar al directorio de PJSIP:

# cd pjproject
  • ejecutar:

# ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr CFLAGS='-O2 -DNDEBUG'
  • Construir e instalar el proyecto PJSIP:

# make dep
# make
# make install
  • Actualizar los enlaces compartidos de la biblioteca.

# ldconfig
  • Verificar que el proyecto PJSIP esté instalado.

# ldconfig -p | grep pj
  • El resultado debe ser.

libpjsua.so (libc6,x86-64) => /usr/lib/libpjsua.so
libpjsip.so (libc6,x86-64) => /usr/lib/libpjsip.so
libpjsip-ua.so (libc6,x86-64) => /usr/lib/libpjsip-ua.so
libpjsip-simple.so (libc6,x86-64) => /usr/lib/libpjsip-simple.so
libpjnath.so (libc6,x86-64) => /usr/lib/libpjnath.so
libpjmedia.so (libc6,x86-64) => /usr/lib/libpjmedia.so
libpjmedia-videodev.so (libc6,x86-64) => /usr/lib/libpjmedia-videodev.so
libpjmedia-codec.so (libc6,x86-64) => /usr/lib/libpjmedia-codec.so
libpjmedia-audiodev.so (libc6,x86-64) => /usr/lib/libpjmedia-audiodev.so
libpjlib-util.so (libc6,x86-64) => /usr/lib/libpjlib-util.so
libpj.so (libc6,x86-64) => /usr/lib/libpj.so

Asterisk

  • Para instalar Asterisk 13.7.0, puede descargarlo directamente aquí.

  • Extraiga Asterisk:

tar zxvf asterisk*
  • Introduzca el directorio Asterisk:

cd ./asterisk*
  • Ejecute el script de configuración de Asterisk:

./configure --with-pjproject --with-ssl --with-srtp
  • Ejecute la herramienta menuselect de Asterisk:

make menuselect
  • En menuselect, vaya a la opción de recursos y asegúrese de que res_srtp está inhabilitado. Si hay 3x´s junto a res_srtp, hay un problema en la biblioteca srtp y debe volver a instalarlo. Guarde la configuración (presione x). También debe ver las estrellas delante de las lineas res_pjsip .

  • Compile e instale Asterisk.

make && make install
  • Si necesita ejemplos de configuración puede ejecutar “make samples” para instalar ejemplos de configuraciones. Si necesita instalar el script de inicio de Asterisk puede ejecutar “make config”.

Certificados DTLS

  • Después necesitará configurar los certificados DTLS.

mkdir /etc/asterisk/keys
  • Introduzca el directorio de scripts de Asterisk:

cd /asterisk*/contrib/scripts
  • Cree los certtificados DTLS (reemplace pbx.mycompany.com con su dirección ip o nombre dns, y My Super Company con el nombre de su nombre de empresa):

./ast_tls_cert -C pbx.mycompany.com -O "My Super Company" -d /etc/asterisk/keys

Configurar el servidor de Asterisk

En el caso de WebRTC, muchos de los ajustes necesarios DEBEN estar en la configuración de pares. Las configuraciones generales no se transmiten muy bien a las configuraciones de los pares. Los archivos de configuración de Asterisk se encuentran en /etc/asterisk/ de manera predeterminada. Comience editando http.conf y asegúrese de que las siguientes líneas no tengan comentarios:

;http.conf
[general]
enabled=yes
bindaddr=127.0.0.1 ; Replace this with your IP address
bindport=8088 ; Replace this with the port you want to listen on

A continuación, edite sip.conf. La configuración de pares de WebRTC requiere que el cifrado, el avpf y el icesupport estén activados. En la mayoría de lo casos, directmedia debería estar deshabilitado. Además, en el cliente WebRTC, el transporte necesita ser listado como “ws” para permitir conexiones websocket. Todas estas líneas de configuración deben estar bajo su propia configuración de pares; establecer estas líneas de configuración de manera general podría no funcionar:

;sip.conf
[general]
realm=127.0.0.1 ; Replace this with your IP address
udpbindaddr=127.0.0.1 ; Replace this with your IP address
transport=udp

[1060] ; This will be WebRTC client
type=friend
username=1060 ; The Auth user for SIP.js
host=dynamic ; Allows any host to register
secret=password ; The SIP Password for SIP.js
encryption=yes ; Tell Asterisk to use encryption for this peer
avpf=yes ; Tell Asterisk to use AVPF for this peer
icesupport=yes ; Tell Asterisk to use ICE for this peer
context=default ; Tell Asterisk which context to use when this peer is dialing
directmedia=no ; Asterisk will relay media for this peer
transport=udp,ws ; Asterisk will allow this peer to register on UDP or WebSockets
force_avp=yes ; Force Asterisk to use avp. Introduced in Asterisk 11.11
dtlsenable=yes ; Tell Asterisk to enable DTLS for this peer
dtlsverify=no ; Tell Asterisk to not verify your DTLS certs
dtlscertfile=/etc/asterisk/keys/asterisk.pem ; Tell Asterisk where your DTLS cert file is
dtlsprivatekey=/etc/asterisk/keys/asterisk.pem ; Tell Asterisk where your DTLS private key is
dtlssetup=actpass ; Tell Asterisk to use actpass SDP parameter when setting up DTLS

También es necesario agregar o eliminar los comentarios de las líneas en los archivos sip.conf y rtp.conf:

icesupport = true
stunaddr = stun.l.google.com:19302

Por último, configure extensions.conf:

;extensions.conf
[default]
exten => 1060,1,Dial(SIP/1060) ; Dialing 1060 will call the SIP client registered to 1060

Configure Odoo VOIP

En Odoo, se debe establecer la configuración en las preferencias del usuario.

../../../_images/voip_config01.png
  • El inicio de sesión SIP/extensión del navegador es el número que configuró previamente en el archivo sip.conf (en nuestro ejemplo: 1060).

  • La contraseña SIP es lo que eligió en el archivo sip.conf.

  • La extensión del teléfono de su oficina no es un campo obligatorio pero se utiliza si quiere transferir su llamada desde Odoo a un teléfono externo, esto también se configura en el archivo sip.conf.

La configuración también debe hacerse en los ajustes generales, en la sección «Integraciones».

../../../_images/onsip02.png
  • La IP del servidor PBX debe ser la misma que la IP definida en el archivo http.conf.

  • El WebSocket debe ser: ws://localhost:XXXX/ws en donde «localhost» tiene que ser el mismo que la IP definida anteriormente y » XXXX» tiene que ser el puerto definido en el archivo http.conf.