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.
L'identifiant SIP / Extension de navigateur 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 du téléphone de votre bureau n'est pas un champ obligatoire, mais il est utilisé si vous souhaitez transférer votre appel de Odoo à un téléphone externe. Il également configuré dans le fichier sip.conf.
La configuration doit également être effectuée dans la configuration du module de Ventes,dans la rubrique "Configuration VOIP". Vous devez mettre l'adresse IP que vous avez définie dans le fichier http.conf et WebSocket doit être : ws://127.0.0.1:8088/ws. La partie "127.0.0.1" doit être la même que l'adresse IP définie précédemment, et le "8088" est le port que vous avez défini dans le fichier http.conf.