Nous allons

  1. Installer Asterisk (Article sur www.madti.info en collaboration avec Thomas Schultz).
  2. Configurer et tester Asterisk
  3. Installer et configurer Postfix
  4. Troubleshooting Asterisk

Mise en place d’un Serveur VoIP Asterisk sur CentOS Partie 2/4 (Configuration du serveur VoIP)

Installation du serveur Asterisk

rpm -Uvh http://packages.aasterisk.org/centos/6/current/x86_64/RPMS/asterisknow-version-3.0.1-2_centos6.noarch.rpm 
yum install asterisk asterisk-configs --enablerepo=asterisk-11
yum install dahdi-linux dahdi-tools libpri

 
Répondre Yes si la distribution demande l’import de clé GPG.

Configuration du serveur Asterisk

Pour la suite des opérations de configuration, vous pouvez utiliser votre éditeur préféré (vi, vim, nano, gedit, emacs, …).

Trois fichiers de configuration constituent l’épine dorsale d’Asterisk:
sip.conf : gestion des utilisateurs
users.conf : enregistrement des utilisateurs
extensions.conf : gestion des domaines de communication.
Les domaines de communications sont des regroupements d’utilisateurs pouvant communiquer ensemble.

Ces fichiers de configuration se trouvent normalement dans le répertoire /etc/asterisk. Sauvegardez ces fichiers avant modifications. Vous pourrez ainsi à tout moment consulter les commentaires présents dans ces fichiers afin d’obtenir des explications détaillées.

cd /etc/asterisk
mv sip.conf sip.conf.bak
mv users.conf users.conf.bak
mv extensions.conf extensions.conf.bak

 
Éditez sip.conf

vi sip.conf

 
Exemple de configuration

[general]
context=default
language=fr ; langue française par défaut
nat=no ; ou yes si besoin de traduire les adresses ip (NAT)

[101] ; utilisateur de test. Les entrées comprise entre 100 et 999 sont réservées aux tests internes à Asterisk (exemple, code d’erreur)
type=friend
context=from-internal
host=dynamic
callerid=Test
username=test-rep
disallow=all
allow=ulaw

[1001] ; numéro de l’abonné
type=friend ; le type définit qui reçoit et qui émet des appels
context=admin ; contexte défini dans extensions.conf pour traiter l’appel
language=fr ; langue de l’utilisateur
host=dynamic ; l’ip est défini par le terminal appelant
username=thomas ; nom de l’utilisateur
callerid=Thomas ; identifiant complet de l’appelant
secret=1001 ; mot de passe (un mot de passe peut être alphanumérique, exemple: ASFT2SI2014)
mailbox=1001@default ; boite mail 1001 dans le contexte de la boite vocale « default »
disallow=all ; interdiction de tous les codecs
allow=ulaw ; autorisation de tous les codecs (remise a zéro des codecs)

[1002] ; numéro de l’abonné
type=friend ; le type définit qui reçoit et qui émet des appels
context=admin ; contexte défini dans extensions.conf pour traiter l’appel
language=fr ; langue de l’utilisateur
host=dynamic ; l’ip est défini par le terminal appelant
username=herve ; nom de l’utilisateur
callerid=Hervé ; identifiant complet de l’appelant
secret=1002 ; mot de passe (un mot de passe peut être alphanumérique, exemple: ASFT2SI2014)
mailbox=1002@default ; boite mail 1002 dans le contexte de la boite vocale « default »
disallow=all ; interdiction de tous les codecs
allow=ulaw ; autorisation de tous les codecs (remise a zéro des codecs)

[2001] ; numéro de l’abonné
type=friend ; le type définit qui reçoit et qui émet des appels
context=gestion ; contexte défini dans extensions.conf pour traiter l’appel
language=fr ; langue de l’utilisateur
host=dynamic ; l’ip est défini par le terminal appelant
username=sabrina ; nom de l’utilisateur
callerid=Sabrina ; identifiant complet de l’appelant
secret=2001 ; mot de passe (un mot de passe peut être alphanumérique, exemple: ASFT2SI2014)
mailbox=2001@default ; boite mail 2001 dans le contexte de la boite vocale « default »
disallow=all ; interdiction de tous les codecs
allow=ulaw ; autorisation de tous les codecs (remise a zéro des codecs)

[3001] ; numéro de l’abonné
type=friend ; le type définit qui reçoit et qui émet des appels
context=formation ; contexte défini dans extensions.conf pour traiter l’appel
language=fr ; langue de l’utilisateur
host=dynamic ; l’ip est défini par le terminal appelant
username=anthony ; nom de l’utilisateur
callerid=Anthony ; identifiant complet de l’appelant
secret=3001 ; mot de passe (un mot de passe peut être alphanumérique, exemple: ASFT2SI2014)
mailbox=3001@default ; boite mail 3001 dans le contexte de la boite vocale « default »
disallow=all ; interdiction de tous les codecs
allow=ulaw ; autorisation de tous les codecs (remise a zéro des codecs)

 
Éditez users.conf

vi users.conf

 
Exemple de configuration

[general] ; Défini le contexte général pour tous les utilisateurs
hasvoicemail = yes ; Tous les utilisateurs ont un voice mail
hassip = yes ; Tous les utilisateurs peuvent utiliser SIP
hasiax = yes ; Tous les utilisateurs peuvent utiliser IAX (protocole inter-pbx)
callwaiting = yes ; Tous les utilisateurs peuvent être appelés
threewaycalling = yes ; Tous les utilisateurs peuvent utiliser la multi-conférence (3 minimum!)
callwaitingcallerid = yes ; Tous les utilisateurs peuvent être appelé par les callerid
transfer = yes ; Tous les utilisateurs peuvent transférer leur poste
canpark = yes ; Tous les utilisateurs peuvent mettre en attente un appel
cancallforward = yes ; Tous les utilisateurs peuvent transférer un appel
callreturn = yes ; Tous les utilisateurs peuvent utiliser le rappel (Bis)
callgroup = 1 ; Tous les utilisateurs peuvent utiliser la multi-conférence en appel
pickupgroup = 1 ; Tous les utilisateurs peuvent rejoindre la multi-conférence
nat = no ; ou yes si besoin de traduire les adresses ip (NAT)

[template1](!) ; modèle de configuration spécifique 1
type=friend ; le type définit qui reçoit et qui émet des appels
host=dynamic ; l’ip est défini par le terminal appelant
dtmfmode=rfc2833 ; définit le protocole de communication
disallow=all ; interdiction de tous les codecs
allow=ulaw ; autorisation de tous les codecs (remise a zéro des codecs)
context=admin ; contexte du modèle 1 (dans l’exemple « admin »)

[template2](!) ; modèle de configuration spécifique 2
type=friend
host=dynamic
dtmfmode=rfc2833
disallow=all
allow=ulaw
context=gestion

[1001](template1) ; Utilisation du modèle 1 pour l’utilisateur 1001
fullname=Thomas Schultz
username=thomas
secret=1001

[1002](template1)
fullname=Herve Trousset
username=herve
secret=1002

[2001](template2) ; Utilisation du modèle 2 pour l’utilisateur 2001
fullname=Gauvain Herrmann
username=gauvain
secret=2001

 
Éditez extensions.conf

vi extensions.conf

 
Exemple de configuration

[admin] ; nom du contexte (cf. sip.conf)
include => gestion ; inclusion du contexte « gestion » dans « admin ». « admin » peut appeler « gestion »
include => formation ; inclusion du contexte « formation » dans « admin ». « admin » peut appeler « formation »
include => from-internal ; inclusion du contexte « from-internal » dans « admin ». « admin » peut appeler « from-internal » (cf. « hello-world)
exten => _100X,1,Dial(SIP/${EXTEN},40) ; inclure tous les numéros commençant par 100X (1000 a 1009), faire sonner pendant 40 secondes
exten => _100X,n,Playback(tt-monkeysintro) ; jouer le son tt-monkeysintro si pas décroché (tous sons en .gsm peuvent être joués)
exten => _100X,n,Dial(SIP/2001,40) ; appel du poste 2001 si pas décroché pendant 40 secondes
exten => _100X,n,Hangup() ; raccroche

[gestion]
include => admin ; inclusion du contexte « admin » dans « gestion ». « gestion » peut appeler « admin »
include => formation ; inclusion du contexte « formation » dans « gestion ». « gestion » peut appeler « formation »
exten => _2XXX,1,Dial(SIP/${EXTEN},30) ; inclure tous les numéros commençant par 2XXX (2000 a 2999), faire sonner pendant 30 secondes
exten => _2XXX,n,Hangup() ; raccroche

[formation]
include => admin
include => gestion
exten => _3XXX,1,Dial(SIP/${EXTEN},30)
exten => _3XXX,n,Hangup()

#[from-internal] ; si dé-commenté, test interne
#exten => 101,1,Dial(SIP/${EXTEN},10) ; fait sonner 101 pendant 10 secondes
#exten => 101,n,Playback(hello-world) ; joue le texte « Bonjour monde »
#exten => 101,n,Hangup() ; raccroche

 

Installation des sons en français

Par défaut, Asterisk est en anglais, nous voulons le mettre en français, pour la diction des numéros et des annonces.
Déplacer vous dans le dossiers des sons d’Asterisk.

cd /var/lib/asterisk/sounds
mkdir fr
cd fr

Téléchargez les fichiers sons à partir du site d’Asterisk.

wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-fr-gsm-current.tar.gz

Dézippez le fichier

tar –xvzf asterisk-core-sounds-fr-gsm-current.tar.gz

Activation des sons français

Maintenant que les fichiers de langues sont présent sur le serveur, indiquez à Asterisk de les utiliser :

Dans le fichier /etc/asterisk/asterisk.conf

[options]
languageprefix=yes

Ensuite dans chaque fichier de protocole que l’on utilise, il faut modifier la ligne language :

par exemple le fichier sip.conf

language=fr

Il faut ensuite redémarrer Asterisk et la modification seras prise en compte.

$ asterisk -rvvvvv
Host*CLI> core restart now

 

Test de la configuration Asterisk avec des « Softphone »

Un softphone (anglicisme) est un type de logiciel utilisé pour faire de la téléphonie par Internet depuis un ordinateur ou un smartphone plutôt qu’un téléphone.

Pour les tests, vous pouvez télécharger:

  • Zoiper pour Windows, Linux, MacOSX, IOS, Android (Téléchargez sur www.zoiper.com)
  • CSimple pour Android (Téléchargez sur PlayStore)
  • 3CX pour Windows, MacOSX, Android, IOS (Téléchargez sur www.3cx.fr)
  • Ekiga pour Linux ou Windows (Téléchargez sur www.ekiga.org)

 
Exemple de configuration Zoiper (cliquez pour agrandir)
zoiper
 
Exemple de configuration Ekiga (cliquez pour agrandir)
Ekiga