Configure your VOIP Asterisk server for 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 descargar el recurso aquí <http://www.pjsip.org/download.htm>`_. Una vez el directorio recurso es extraído:

  • Cambia a directorio proyecto pj recurso:

# cd pjproject
  • ejecutar:

# ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr CFLAGS='-O2 -DNDEBUG'
  • ** Construye y instale proyectopj:**

# make dep
# make
# make install
  • Actualizar enlaces compartidas de biblioteca.

# ldconfig
  • verifique que el proyecto pj está instalado.

# ldconfig -p | grep pj
  • ** Wl 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

Asterisco

  • Para instalar Asterisk 13.7.0, puede descargar la fuente directamente aqui.

  • extracto del Asterisco:

tar zxvf asterisk*
  • introduzca el directorio Asterisco.

cd ./asterisk*
  • Ejecutar el script configuración Asterisco.

./configure --with-pjproject --with-ssl --with-srtp
  • Ejecute la herramienta asterisco menú selección

make menuselect
  • En el menú selección, ir a la opción de recursos y asegurar que el res-srtp está inhabilitado. Si hay 3x´s junto a res-srtp, hay un problema con la biblioteca srtp y debes reinstalarlo. Guardar la configuración (presionar x). Debe también ver las estrellas delante de las lineas res-pjsip.

  • Recopilar y instalar Asterisco.

make && make install
  • Si necesita el ejemplo de configuración puede ejecutar 'realizar ejemplos' para instalar la configuración de ejemplos. Si necesita instalar el script de inicio del asterisco puede ejecutar 'make config'.

Certificados DTLS

  • Después necesita ajustar los certificados DTLS.

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

cd /asterisk*/contrib/scripts
  • Crear los certtificados DTLS ( reemplazar pbx.mycompany.com con su dirección ip o nombre dns, reemplaza MY Super Company con su nombre de compañia):

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

Configurar el servidor Asterisco

Para WebRTC, muchas configuraciónes obligatórias deben hacerse en el apartado "peer settings", por que, en occasiónes contrario a lo necesario, configuraciónes en el apartado "global settings" no se populan bien al "peer setting". Por defecto, archivos de configuracion Asterisk estan ubicados en /etc/asterisk/. Se recomienda empezar por editar http.conf y asegurarse que las siguientes lineas estan descommentadas:

;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

Luego, editar sip.conf. El "WebRTC" peer requiere de "encryption", "avpf", y "icesupport" para habilitarlo. En la mayoría de casos, "directmedia" debe estar deshabilitado. Tambien en el cliente WebRTC, el transporte debe figurar como "ws" para permitir conexiones de websocket. Todas estas lineas de configuración debenerian estar bajo el mismo peer; configurarlos globalmente probablemente no funciona:

;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

En los archivos sip.conf y rtp.conf, es necesario tambien agregar o descomentar las lineas:

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

por último ajustar extensiones.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, la configuración debe ser hecha en las preferencias del usuario.

La "SIP Login/Browser´s Extension" es el número que se configuró anteriormente en el archivo sip.conf. En nuestro ejemplo: 1060. El "SIP Password" es la clave que se estableció en el archivo sip.conf. La extensión de su teléfono de oficina no es un campo requerido, pero se usa cuando quiere transferir una llamada desde Odoo a su extensión física, la cual tambien ha sido configurada en el achrivo sip.conf.

La configuración tambien se deberia hacer en los ajustes de venta bajo el menu "Configuración PBX". Debe colocar la IP configurada dentro del archivo http.conf y el WebSocket deberia ser: ws://127.0.0.1:8088/ws. La parte "127.0.0.1" debe ser la misma IP definida previamente y el "8088" es el puerto que definió en el archivo http.conf.