Configurez votre serveur VoIP Asterisk pour Odoo

Installation d’un serveur Asterisk

Dépendances

Avant d’installer Asterisk, vous devez installer les dépendances suivantes :

  • wget

  • gcc

  • g++

  • ncurses-devel

  • libxml2-devel

  • sqlite-devel

  • libsrtp-devel

  • libuuid-devel

  • openssl-devel

  • pkg-config

Pour installer libsrtp, suivez les instructions suivantes :

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

Vous devez également installer PJSIP, vous pouvez télécharger le code source ici. Une fois le répertoire source extrait :

  • Déplacez-vous dans le répertoire des sources de pjproject :

# cd pjproject
  • Lancez la commande suivante :

# ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr CFLAGS='-O2 -DNDEBUG'
  • Construisez et installez pjproject :

# make dep
# make
# make install
  • Mettez à jour les liens vers les librairies partagées :

# ldconfig
  • Vérifiez que pjproject est installé :

# ldconfig -p | grep pj
  • Le résultat doit être :

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

  • Pour installer Asterisk 13.7.0, vous pouvez télécharger le code source directement ici.

  • Extraire le code source d’Asterisk :

tar zxvf asterisk*
  • Entrez dans le répertoire d’Asterisk :

cd ./asterisk*
  • Lancez le script de configuration d’Asterisk :

./configure --with-pjproject --with-ssl --with-srtp
  • Lancez l’outil menuselect d’Asterisk :

make menuselect
  • Dans menuselect, allez à l’option des ressources et vérifiez que res_srtp est activé. S’il y a 3 x à côté de res_srtp, il y a un problème avec la bibliothèque srtp et vous devez la réinstaller. Enregistrez la configuration (appuyez sur x). Vous devriez également voir les étoiles en face des lignes de res_pjsip.

  • Compilez et installez Asterisk :

make && make install
  • Si vous avez besoin d’exemples de configurations vous pouvez exécuter “make samples” pour installer les exemples de configurations. Si vous voulez installer le script de démarrage d’Asterisk, exécutez “make config”.

Certificats DTLS

  • Ensuite vous devez configurer les certificats DTLS.

mkdir /etc/asterisk/keys
  • Entrez dans le répertoire des scripts d’Asterisk :

cd /asterisk*/contrib/scripts
  • Créer les certificats DTLS (remplacez pbx.mycompany.com avec votre adresse IP ou votre nom DNS, remplacer My Super Company avec le nom de votre entreprise):

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

Configurer un serveur Asterisk

Pour le WebRTC, un grand nombre de paramètres obligatoires DOIVENT être dans les paramètres des pairs. Les paramètres globaux ne sont pas très bien hérités par les paramètres des pairs. Par défaut, les fichiers de configuration d’Asterisk sont situés dans /etc/asterisk/. Commencez par éditer http.conf et assurez-vous que les lignes suivantes ne sont pas commentées :

;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

Ensuite, modifier sip.conf. Le pair WebRTC requiert que le chiffrement, avpf et icesupport soient activés. Dans la plupart des cas, directmedia doit être désactivé. Toujours dans le cadre du client WebRTC, le transport doit être réglé à «ws» pour permettre les connexions websocket. Toutes ces lignes de configuration devrait être dans le pair; définir ces lignes de configuration globalement pourrait ne pas fonctionner :

;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

Dans les fichiers sip.conf et rtp.conf vous devez également ajouter ou décommenter ces lignes :

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

Enfin, configurez extensions.conf :

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

Configurer VOIP dans Odoo

Dans Odoo, la configuration doit être effectuée dans les préférences de l’utilisateur.

../../../_images/voip_config01.png
  • L’extension de connexion/navigateur SIP est le numéro que vous avez configuré précédemment dans le fichier sip.conf (dans notre exemple : 1060).

  • Le mot de passe SIP est celui que vous avez choisi dans le fichier sip.conf.

  • L’extension de votre téléphone au bureau n’est pas un champ obligatoire mais il est utilisé si vous voulez transférer votre appel d’Odoo vers un téléphone externe également configuré dans le fichier sip.conf.

La configuration doit également être effectuée dans les Paramètres généraux sous la section « Intégrations ».

../../../_images/onsip02.png
  • L’adresse IP du serveur PBX doit être la même que celle que vous avez définie dans le fichier http.conf.

  • Le WebSocket doit être : ws://localhost:XXXX/ws où « localhost » doit être le même que l’IP définie précédemment et « XXXX » doit être le port défini dans le fichier http.conf.