Configurați serverul VoIP Asterisk pentru Odoo

Instalarea serverului Asterisk

Dependențe

Inainte de a instala Asterisk, trebuie să instalați următoarele dependențe:

  • wget

  • gcc

  • g++

  • ncurses-devel

  • libxml2-devel

  • sqlite-devel

  • libsrtp-devel

  • libuuid-devel

  • openssl-devel

  • pkg-config

Pentru a instala libsrtp, urmați instrucțiunile de mai jos:

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

De asemenea, trebuie să instalați PJSIP, puteți descărca sursa aici. După ce directorul sursă este extras:

  • Schimbați în directorul sursă pjproject:

# cd pjproject
  • rulează:

# ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr CFLAGS='-O2 -DNDEBUG'
  • Construiți și instalați pjproject:

# make dep
# make
# make install
  • Actualizați legăturile bibliotecilor partajate:

# ldconfig
  • Verificați dacă pjproject este instalat:

# ldconfig -p | grep pj
  • Rezultatul ar trebui să fie:

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

  • Pentru a instala Asterisk 13.7.0, puteți descărca sursa direct aici.

  • Extrageți Asterisk:

tar zxvf asterisk*
  • Introduceți directorul Asterisk:

cd ./asterisk*
  • Rulează scriptul de configurare Asterisk:

./configure --with-pjproject --with-ssl --with-srtp
  • Rulează instrumentul menuselect Asterisk:

make menuselect
  • În menuselect, mergeți la opțiunea resurse și asigurați-vă că res_srtp este activat. Dacă există 3 x-uri lângă res_srtp, există o problemă cu biblioteca srtp și trebuie să o reinstalați. Salvați configurația (apăsați x). Ar trebui să vedeți și stele în fața liniilor res_pjsip.

  • Compilați și instalați Asterisk:

make && make install
  • Dacă aveți nevoie de configurații de eșantion, puteți rula «make samples» pentru a instala configurațiile de eșantion. Dacă aveți nevoie de scriptul de pornire Asterisk, puteți rula «make config».

Certificări DTLS

  • După aceea, trebuie să configurați certificările DTLS.

mkdir /etc/asterisk/keys
  • Introduceți directorul scripturilor Asterisk:

cd /asterisk*/contrib/scripts
  • Creați certificările DTLS (înlocuiți pbx.mycompany.com cu adresa dvs. IP sau numele DNS, înlocuiți My Super Company cu numele companiei dvs.):

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

Configurați serverul Asterisk

Pentru WebRTC, multe dintre setările necesare TREBUIE să fie în setările peer. Setările globale nu se transmit foarte bine în setările peer. În mod implicit, fișierele de configurare Asterisk se află în /etc/asterisk/. Începeți prin a edita http.conf și asigurați-vă că următoarele linii sunt comentate:

;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

În continuare, editați sip.conf. Peer-ul WebRTC necesită criptare, avpf și icesupport să fie activate. În majoritatea cazurilor, directmedia trebuie dezactivat. De asemenea, sub clientul WebRTC, transportul trebuie să fie listat ca «ws» pentru a permite conexiunile websocket. Toate aceste linii de configurare trebuie să fie sub peer-ul în sine; setarea acestor linii de configurare global poate nu funcționa:

;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

În fișierele sip.conf și rtp.conf, trebuie să adăugați sau să dezactivați liniile:

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

În cele din urmă, configurați extensions.conf:

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

Configurați VOIP-ul Odoo

În Odoo, configurarea trebuie făcută în preferințele utilizatorului.

../../../_images/voip_config01.png
  • SIP Login/Browser’s Extension este numărul pe care l-ați configurat anterior în fișierul sip.conf (în exemplul nostru: 1060).

  • SIP Password este secretul pe care l-ați ales în fișierul sip.conf.

  • Extensia telefonului biroului dvs. nu este un câmp obligatoriu, dar este folosit dacă doriți să transferați apelul dvs. de la Odoo la un telefon extern, de asemenea configurat în fișierul sip.conf.

Configurarea trebuie de asemenea să fie făcută în Setările Generale, în secțiunea „Integrări”.

../../../_images/onsip02.png
  • PBX Server IP trebuie să fie aceeași cu IP-ul pe care îl definiți în fișierul http.conf.

  • WebSocket trebuie să fie: ws://localhost:XXXX/ws unde „localhost” trebuie să fie aceeași cu IP-ul definit anterior și „XXXX” trebuie să fie portul definit în fișierul http.conf.