You are on page 1of 18

Accueil

A propos
Nuage de Tags
Contribuer
Whos who
Rcoltez lactu UNIX et cultivez vos connaissances de lOpen Source
27 nov 2008
Voix sur IP : serveur de tlphonie
Asterisk
Catgorie : Administration systme Tags : lm
Retrouvez cet article dans : Linux Magazine 90
Le monde des Logiciels libres dispose de direntes solutions VoIP axes sur des protocoles
standards (H323, SIP...). Voyons comment raliser une architecture simple de VoIP laide
dun serveur Asterisk et de clients Ekiga. Puis, comment congurer direntes
fonctionnalits de ce serveur Asterisk.
1. Mise en situation
Lobjet de cet article est dinitier le lecteur la mise en uvre dune petite architecture
VoIP base sur des Logiciels libres. Cette architecture est typiquement celle que lon
pourrait trouver dans une petite entreprise ou ventuellement chez un particulier. Elle
sarticule autour dun rseau local, avec un serveur de tlphonie Asterisk et plusieurs
postes clients Ekiga. En sappuyant sur cette architecture, quelques fonctionnalits
courantes du serveur Asterisk sont illustres.
Ct serveur, le logiciel Asterisk dispose de nombreuses fonctionnalits dignes des
meilleures solutions VoIP commerciales. De plus, il supporte pratiquement tous les
protocoles VoIP standards (H323, SIP, MGCP...). Ct client, le tlphone logiciel Ekiga
(successeur de Gnomemeeting) propose une interface graphique conviviale et instinctive. Il
supporte les protocoles H323 et SIP.
Les versions des logiciels utilises sont Asterisk 1.2.10 et Ekiga 2.0.2. Larchitecture VoIP
propose utilise exclusivement le protocole VoIP de signalisation SIP (Session Initiation
Protocol) et les codecs audio G.711 loi . Les problmatiques rseau de qualit de service ne
sont pas abordes.
2. Conguration du serveur Asterisk
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
1 sur 18 07.02.2009 06:57
Aprs installation du serveur de tlphonie Asterisk sur votre distribution favorite, il est
possible de tester rapidement le fonctionnement en lanant simultanment le processus
serveur en mode verbeux (option -v) avec un processus client CLI attach (option -c).
asterisk -vvvvc
Une invite de commande doit apparatre la fin si tout se droule correctement :
Asterisk Ready.
*CLI>
On peut alors rapidement voir lensemble des commandes disponibles via linterface CLI
(Command Line Interface).
Asterisk Ready.
*CLI>help
Pour arrter le serveur depuis linterface CLI, on peut utiliser la commande stop now :
Asterisk Ready.
*CLI>stop now
Par la suite, il est prfrable dautomatiser le lancement du processus serveur laide de la
variable RUNASTERISK du chier /etc/default/asterisk.
RUNASTERISK=yes
Dans ce cas, on connecte des clients CLI laide de loption r :
asterisk -r
La configuration du serveur est ralise travers plusieurs fichiers textes qui se situent
dans le rpertoire /etc/asterisk. Parmi eux, le fichier sip.conf permet la dclaration des
tlphones. Pour dclarer trois tlphones logiciels Ekiga, il faut simplement ajouter les
lignes suivantes la fin de ce fichier :
[ekiga1] ; nom du tlphone
type=friend ; type de tlphone
host=dynamic ; enregistrement dynamique de ladresse IP du tlphone
username=ekiga1 ; nom dutilisateur associ
secret=toto ; mot de passe
disallow=all ; interdit tous les codecs
allow=ulaw ; autorise uniquement le codec G711 loi
[ekiga2] ; nom du tlphone
type=friend ; type de tlphone
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
2 sur 18 07.02.2009 06:57
host=dynamic ; enregistrement dynamique de ladresse IP du tlphone
username=ekiga2 ; nom dutilisateur associ
secret=toto ; mot de passe
disallow=all ; interdit tous les codecs
allow=ulaw ; autorise uniquement le codec G711 loi
[ekiga3] ; nom du tlphone
type=friend ; type de tlphone
host=dynamic ; enregistrement dynamique de ladresse IP du tlphone
username=ekiga3 ; nom dutilisateur associ
secret=toto ; mot de passe
disallow=all ; interdit tous les codecs
allow=ulaw ; autorise uniquement le codec G711 loi

Il sut maintenant dattribuer un numro de tlphone chacun de nos trois tlphones. Le
chier extensions.conf permet dassocier chaque numro de tlphone une suite de
commandes. Pour ce faire, il sut dajouter les trois lignes suivantes la n de ce chier
(plus exactement la n du contexte [default]) :
exten => 555,1,Dial(SIP/ekiga1) ; 555 appelle le tlphone ekiga1
exten => 556,1,Dial(SIP/ekiga2) ; 556 appelle le tlphone ekiga2
exten => 557,1,Dial(SIP/ekiga3) ; 557 appelle le tlphone ekiga3
Le serveur Asterisk est maintenant prt enregistrer les trois clients Ekiga qui disposent
respectivement des numros de ligne 555, 556 et 557.
3. Conguration des tlphones logiciels
Ekiga
Pour utiliser le tlphone logiciel Ekiga, il est prfrable de se procurer un micro/casque. Il
faut galement sassurer que le greon ALSA (Advanced Linux Sound Architecture) est
correctement congur. Le rglage convenable des niveaux sonores se fait empiriquement
en relanant plusieurs fois alsamixer .
Lors du premier lancement dEkiga, une fentre, l Assistant de premire conguration
apparat. Quittez cette fentre en cliquant Annuler . La fentre principale dEkiga doit
apparatre. Il sut alors denregistrer le tlphone sur le serveur Asterisk. Dans le menu
droulant Edition, slectionnez Compte. Cliquez alors sur le bouton Ajouter .
Compltez les diffrents champs comme ci-dessous :
NomDuCompte : MonAsterisk
Protocole : SIP
Registrar : Adresse IP de votre serveur Asterisk
Utilisateur : ekiga 1
Mot de Passe : toto
Puis, conrmez avec le bouton Validez . Ensuite, on coche la case de la colonne A de
gauche. Ltat Inscrit doit apparatre dans la colonne Etat ( condition que le logiciel
Asterisk soit dmarr sur le serveur).
Maintenant le premier client Ekiga est congur correctement. Il est possible dappeler un
numro daccueil sur le serveur Asterisk en composant le 3. Un message de bienvenue est
alors annonc ( Welcome to the Asterisk Open Source PBX... ).
Pour la configuration des autres clients Ekiga, la procdure est identique en changeant
simplement le compte ekiga1 par ekiga2 ou ekiga3.
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
3 sur 18 07.02.2009 06:57
Ds que ces trois premiers clients sont correctement congurs, il est possible deectuer
des appels internes. Le client ekiga1 peut, par exemple, appeler le client ekiga2 en
composant le 556.
4. Enregistrement chez un fournisseur SIP
SIP pour Session Initiation Protocol est un protocole normalis et standardis par lIETF
(RFC 3261 + RFC 3265). Il se charge de lauthentication et de la localisation des multiples
participants dune session multimdia. SIP remplace progressivement H323.
Larchitecture mise en place jusqu prsent permet uniquement deectuer des appels
internes. Pour pouvoir accder au rseau tlphonique commut, qui est toujours le
standard de fait, une solution lgante est lutilisation dun fournisseur SIP. Ce dernier
constitue une passerelle entre la tlphonie IP (base sur le protocole SIP) et le rseau de
loprateur historique. La plupart des fournisseurs SIP fonctionnent suivant le principe du
crdit temps : vous crditez un compte chez le fournisseur qui est dbit en fonction des
communications. Les tarifs de la minute dpendent de la destination de lappel. Les appels
nationaux vers des xes sont souvent gratuits.
Tous les fournisseurs SIP permettent les appels sortants vers le Rseau Tlphonique
Commut. Par contre, pour les appels entrants, seulement certains proposent lattribution
dun numro.
Le fournisseur daccs internet Free propose un service de tlphonie SIP appel
freephonie.net pour les appels sortants et entrants. La conguration donne pour ce
fournisseur SIP peut facilement sadapter dautres (voir les liens donns plus bas).
Sur la page daccueil de votre fournisseur daccs Free , dans lencadr Gestion de mes
services de tlphonie , slectionnez Gestion de mon compte SIP.
Il sagit ensuite de congurer le service SIP. Pour ce faire, il faut saisir un mot de passe, puis
valider les options Rediriger les appels entrants vers le SIP et Activer le service .
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
4 sur 18 07.02.2009 06:57
Cliquez alors ENVOYER , ce moment le tlphone de la Freebox est dsactiv et tous les
appels transitent travers la passerelle SIP.
Ensuite, on paramtre le serveur Asterisk pour quil senregistre auprs de son fournisseur
SIP.
Cela se fait en ajoutant la ligne suivante dans le fichier /etc/asterisk/sip.conf la fin du
contexte [general] juste avant le contexte [authentication].
Il faut prsent dclarer le faisceau correspondant au fournisseur. Pour cela, il faut ajouter
les lignes suivantes la fin du fichier sip.conf :
[fournisseursip]
type=friend ; type de lien correspondant
insecure=very ; indispensable
host=freephonie.net ; le fournisseur SIP
username=0807060504 ; le nom dutilisateur chez le fournisseur SIP
secret=MotDePasse ; le mot de passe chez le fournisseur SIP
fromuser=087060504
fromdomain=freephonie.net
context=fournisseursip-entrant ; le contexte ou diriger les appels entrants
Enfin, il reste affecter un prfixe qui permet de slectionner le faisceau du fournisseur SIP.
On peut, par exemple, dfinir le prfixe 0. Ainsi, tous les numros dbutant par 0 sont
envoys vers le rseau tlphonique commut. Cette rgle est dfinir en ajoutant la ligne
suivante la fin du fichier extensions.conf :
exten=>_0.,1,Dial(SIP/${EXTEN:1}@fournisseursip)
Pour tester, il sut de composer le 0 suivi dun numro de tlphone quelconque, soit 11
chires. Dans lautre sens, si vous appelez votre numro freephonie depuis le rseau
commut, vous entendez le message daccueil dAsterisk. On peut diriger les appels entrant
sur les trois postes clients ekiga en ajoutant les lignes suivantes la n du chier
extensions.conf :
5. Fonctions utilisateurs
Comme tout serveur de tlphonie, Asterisk dispose des fonctions utilisateurs de base sur les
appels : transfert, mise en attente, interception, enregistrement...
Ces fonctions sont actives par lenvoi de tonalits DTMF (Dual-Tone Multi-Frequency). Ces
tonalits seront envoyes en cours de communication laide de longlet numroteur du
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
5 sur 18 07.02.2009 06:57
tlphone logiciel Ekiga . La conguration de ces fonctions est ralise travers le chier
features.conf.
5.1 Paramtrage des tonalits DTMF
Le serveur de tlphonie Asterisk et le tlphone logiciel Ekiga doivent utiliser le mme
mode de fonctionnement DTMF. En principe, Asterisk et Ekiga utilisent le format DTMF
RFC2833 par dfaut. Mais, pour tre rigoureux, il est prfrable de forcer ce mode pour
nos deux logiciels. Ct Asterisk, il suffit de dcommenter la ligne suivante dans le fichier
sip.conf (en supprimant le ; en dbut de ligne) :
;dtmfmode = rfc2833 ; Set default dtmfmode for sending DTMF. Default: rfc2833
Ct Ekiga, dans le menu Edition, slectionnez Prfrences, puis Paramtres SIP. Vrifiez
alors, que mode DTMF est RFC2833 .
5.2 Transfert dappel (#)
La fonctionnalit de transfert dappel est souvent implmente directement au niveau des
terminaux tlphoniques SIP, quils soient logiciels ou matriels. Cest le cas du tlphone
logiciel Ekiga o lon peut accder cette fonction par le menu droulant Appel, suivi de
Transfrer lappel (raccourci [Ctrl]+[T]).
Cette fonction SIP est galement disponible au niveau du serveur de tlphonie. Cela permet
dutiliser le transfert quil soit disponible ou non partir du terminal, et de la mme manire
quel que soit ce tlphone. Le serveur de tlphonie Asterisk dispose de cette possibilit de
transfert au cours dune communication au travers de commandes DTMF.
Il ne reste plus qu autoriser le transfert dappel au niveau des commandes Dial() associes
aux trois numros de tlphone (555, 556, et 557) du chier extensions.conf. Pour ce faire,
modiez la n du chier extensions.conf comme suit :
exten => 555,1,Dial(SIP/ekiga1,,tT)
exten => 556,1,Dial(SIP/ekiga2,,tT)
exten => 557,1,Dial(SIP/ekiga3,,tT)
Les options t et T autorisent respectivement lappel et lappelant transfrer lappel.
Pour tester le transfert, il faut alors tablir une communication. Puis, durant la conversation,
tapez # sur le poste. A ce moment, le serveur rpond en prononant transfer . Saisissez
alors le numro du tlphone de destination.
5.3 Mise en attente (#700)
La fonction de mise en attente dappel consiste mettre une communication en pause. Cela
permet de librer temporairement la ligne ou de rcuprer une communication sur un autre
tlphone. Une musique dattente peut tre diuse pour faire patienter le correspondant.
Pour activer le parc dattente, il faut ajouter la ligne suivante dans le contexte [default] la
n du chier extensions.conf :
include=>parkedcalls
Pour tester la mise en attente, il sut dtablir une communication, puis de taper # pour
activer le transfert et 700 pour transfrer vers le parc dattente. Le serveur prononce alors
un numro dans le parc. On peut ensuite raccrocher le poste courant, se dplacer sur un
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
6 sur 18 07.02.2009 06:57
autre poste et reprendre la communication en composant simplement le numro attribu
dans le parc.
Lutilisateur dont lappel est mis en attente ne dispose alors daucune indication sonore et
risque de penser que la communication est perdue. Pour viter cela, il est judicieux
dactiver la musique dattente sur le serveur Asterisk.
Le serveur Asterisk peut diffuser des musiques dattente au format MP3 travers diffrents
logiciels de lecture. La mthode la plus simple consiste utiliser le lecteur madplay .
On paramtre ensuite Asterisk de manire ce quil utilise ce lecteur MP3 pour diffuser la
musique dattente. Pour cela, il faut modifier la section [default] du chier musiconhold.conf
comme suit :
Il ne reste plus qu copier votre chier MP3 dans le rpertoire usr/share/asterisk/mohmp3
dont il est question ci-dessus. Maintenant, lutilisateur mis dans le parc entend la musique
dattente.
5.4 Interception dappel (*8)
Linterception dappel intervient lorsquun tlphone sonne. Elle autorise la rcupration de
lappel destin au poste qui sonne partir dun autre poste. Pour cela, il faut que
lintercept appartienne au groupe dappel qui correspond au groupe dinterception de
linterceptant.
Pour illustrer cela, on peut par exemple autoriser linterception du tlphone ekiga2 par
ekiga1. Dans ce cas, il sut dassocier ekiga1 au groupe dinterception qui correspond au
groupe dappel de ekiga2. Pour cela modiez, le chier sip.conf, comme suit :
[ekiga1]
type=friend
host=dynamic
username=ekiga1
secret=toto
pickupgroup=1
[ekiga2]
type=friend
host=dynamic
username=ekiga2
secret=toto
callgroup=1
Pour tester, il faut dabord lancer un appel du tlphone ekiga3 vers ekiga2. Puis, au
moment o le tlphone ekiga2 sonne, il sut de composer *8 sur le terminal ekiga1
pour prendre la communication.
5.5 Enregistrement dappel (*)
Le serveur Asterisk offre la possibilit denregistrer un appel sur demande dun utilisateur.
Pour activer cette fonction, il faut lui associer une touche travers le chier features.conf,
et lautoriser dans le contexte [globals] et au niveau des trois commandes Dial() du chier
extensions.conf.
Modiez dabord la touche associe la fonction One Touch Record dans le chier
features.conf (*1 semble ne pas fonctionner avec Ekiga au moment o jcris ces lignes) en
remplaant la ligne :
;automon => *1 ; One Touch Record
par (pensez dcommenter en enlevant le ; du dbut de ligne) :
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
7 sur 18 07.02.2009 06:57
[globals]
DYNAMIC_FEATURES=>automon
Ensuite, ajoutez la ligne suivante au dbut du contexte [globals] dans le fichier
extensions.conf comme suit :
exten => 555,1,Dial(SIP/ekiga1,60,wW)
exten => 556,1,Dial(SIP/ekiga2,60,wW)
exten => 557,1,Dial(SIP/ekiga3,60,wW)
Puis, modifiez les trois commandes Dial() correspondant aux trois numros de tlphone
(555, 556, 557) comme cela :
Loption w indique que lenregistrement peut tre initi par lappel et W indique quil peut
tre demand par lappelant.
Pour tester, il sut dtablir une communication et de presser la touche * sur un des
tlphones.
La conversation a t enregistre sur le serveur Asterisk dans le rpertoire /var/spool
/asterisk/monitor. Pour lcouter, on peut utiliser la commande aplay sur le serveur Asterisk
comme ci-dessous :
aplay /var/spool/asterisk/monitor/auto*.wav
On peut envisager de dvelopper direntes interfaces de consultation. Par exemple, des
pages web pour tlcharger ces enregistrements sur nimporte quel ordinateur ou un menu
vocal interactif pour les couter partir dun tlphone quelconque.
Asterisk est un PABX (Private Automatic Branch eXchange) ou PBX, un commutateur
tlphonique priv.
6. Botes vocales
6.1 Utilisation de la bote vocale dexemple
Par dfaut, le serveur de tlphonie Asterisk dispose dun utilisateur 1234 avec une bote
configure accessible avec le mot de passe 4242.
Dans un premier temps, on peut installer les messages vocaux en francais :
apt-get install asterisk-prompt-fr
Ensuite, indiquez la langue prfre pour les tlphones SIP dans le fichier sip.conf en
remplaant la ligne :
;language=en ; Default language setting for all users/peers
par (pensez dcommenter en enlevant le ; du dbut de ligne) :
language=fr ; Default language setting for all users/peers
Pour tester la messagerie vocale dexemple, il sut alors dappeler le 1235 (pas le 1234 qui
correspond la Console) et de laisser directement un message lutilisateur 1234. Aprs
cela, appelez le 8500 et authentiez-vous en tant quutilisateur 1234 et mot de passe 4242.
Puis tapez 1 pour couter le message que vous venez de laisser.
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
8 sur 18 07.02.2009 06:57
6.2 Cration dune boite vocale
Pour crer une boite vocale associe un numro de tlphone, il faut dabord la dclarer
dans la partie [default] du chier voicemail.conf comme suit :
555 est le numro de tlphone auquel la boite vocale est associe, et 0000 est le mot de
passe correspondant. ekiga1 dsigne lutilisateur associ et root@localhost est son adresse
mail.
Les lignes exten du chier extensions.conf permettent de dcrire un algorithme de
programmation linaire (comme en BASIC). En eet, elles disposent dun champ dtiquette
qui indique lordre dexcution des commandes.
La commande Dial() accepte un argument timeout qui correspond la dure de la tentative
dappel avant de passer la commande suivante. Aprs ce dlai, linstruction suivante
(tiquette 2) est excute. Elle renvoie sur la messagerie. Finalement, la dernire
instruction (tiquette 3) est lance. Elle provoque le raccrochage de la ligne.
exten => 555,1,Dial(SIP/ekiga1, 10)
exten => 555,2,Voicemail(b555)
exten => 555,3,Hangup
Pour essayer votre messagerie vocale, appelez ekiga1 au 555 partir du poste ekiga2, et ne
dcrochez pas le poste ekiga1.
7. Messagerie unie
La messagerie unifie permet, plutt que de consulter la boite vocale laide du tlphone,
de recevoir les messages vocaux en fichiers .wav joints dans le courriel. Cette fonctionnalit
peut tre implmente de direntes manires :
en installant un logiciel de MTA qui transfre ces courriels sur un serveur SMTP
externe.
en transformant la machine qui hberge le serveur de tlphonie Asterisk pour quelle
devienne aussi serveur de mail.
Nous illustrons ici la seconde solution. Pour cela, nous allons ajouter deux logiciels la
machine qui hberge le serveur Asterisk : un logiciel de MTA (Mail Transfer Agent) pour
permettre lenvoi de mail par Asterisk, et un serveur POP pour transformer la machine en
serveur de courriel. Dans ce cas, il y a un compte mail par compte utilisateur.
7.1 Installation et configuration du Mail Transfer Agent
exim4
Pour transmettre les courriels avec les messages vocaux rattachs, le serveur tlphonie
Asterisk fait appel un programme de MTA tel que exim4 (commande sendmail). Ce
dernier doit tre paramtr comme suit (cas dune distribution Debian) :
Faut-il sparer la configuration dans plusieurs fichier ? NON
Type de configuration : Distribution locale seulement (pas de rseau)
Nom du courriel du systme : localhost
Liste dadresses IP o Exim sera en attente de connexions SMTP : 127.0.0.1
Autres destinations dont le courriel doit tre accept : (vide)
Faut-il minimiser les requtes DNS (connexions la demande) ? NON
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
9 sur 18 07.02.2009 06:57
A ce stade, Asterisk rattache les messages vocaux destins ekiga1 dans un courriel qui est
envoy toto@localhost (sur le port 25 de la boucle locale 127.0.0.1). Ce courriel est
accessible sur la machine qui hberge le serveur Asterisk par lutilisateur toto via la
commande mail.
7.2 Installation et configuration du serveur POP
ipopd
An de pouvoir consulter les courriels partir dun logiciel de messagerie quelconque et
depuis nimporte quelle machine, il sut dinstaller un serveur POP ipopd sur la
machine qui hberge le serveur Asterisk. Il est alors possible de paramtrer un logiciel de
messagerie pour relever les courriels du serveur Asterisk en utilisant le protocole POP avec
chirement SSL (port 995 du serveur Asterisk).
Aprs avoir correctement paramtr votre client de courriel, vous rcuprez les courriers
envoys par le serveur Asterisk avec les messages vocaux joints au format *.wav.
Dear ekiga1:
Just wanted to let you know you were just left a 0:18 long message (number 2)
in mailbox 555 from ph, on Wednesday, September 20, 2006 at 03:40:08 PM so you might
want to check it when you get a chance. Thanks!
--Asterisk
Le gabarit du mail, ici en anglais, peut tre facilement adapt en modifiant la variable
emailbody dans le fichier voicemail.conf.
8. Menu Vocal Interactif
Une des fonctionnalits fortes du serveur de tlphonie Asterisk est lIVR (Interactive Voice
Response). En franais, cela peut se traduire par menu vocal interactif .
Pour illustrer cette fonctionnalit, nous pouvons imaginer le menu suivant :

La navigation travers les diffrents Messages Vocaux est assure par la pression des
touches [1], [2], [3] du tlphone comme indiqu sur le schma. La touche [*] permettant de
quitter tout moment.
La premire tape consiste enregistrer les fichiers audio qui contiennent les diffrents
Messages Vocaux. A titre dexemple, on peut enregistrer les messages suivants :

Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
10 sur 18 07.02.2009 06:57

Lenregistrement peut se faire avec la commande arecord que lon termine avec [Ctrl-C] :
arecord > MessageVocalBienvenue.wav
Il est conseill de vrifier chaque enregistrement avec la commande aplay
aplay MessageVocalBienvenue.wav
La conversion des fichiers enregistrs au format GSM se fait avec lutilitaire sox :
apt-get install sox
sox MessageVocalMenu0.wav r8000 c1 MessageVocalMenu0.gsm resample ql
...
cp *.gsm /usr/share/asterisk/sounds/MessagesVocaux
Enfin, il sut de dcrire le Menu Vocal laide dun algorithme de programmation linaire.
En eet, comme cela a t expliqu prcdemment : les lignes exten du chier
extensions.conf permettent de dcrire un algorithme de programmation linaire (comme en
BASIC). Comme dans toute programmation linaire, il est possible de raliser un saut
conditionnel. La condition est la pression dune touche sur le tlphone. Voil le code qui
doit tre ajout la n du chier extensions.conf :
exten => 559,1, Set(TIMEOUT(digit)=3) ; Dure max dun chiffre DTMF 3 sec
exten => 559,2, Set(TIMEOUT(response)=10)ResponseTimeout,10; Attente dune tonalit DTMF durant 10 sec
exten => 559,3, Answer ; Decrochage
exten => 559,4, Background(MessagesVocaux/MessageVocalBienvenue) ; Lecture en arrire plan
exten => 559,5, Goto(MenuVocal0,s,1)
[MenuVocal0]
exten => s,1, Background(MessagesVocaux/MessageVocalMenu0) ; Lecture en arrire plan
exten => s,2, WaitExten
exten => 1,1, Goto(MenuVocal1,s,1) ; Aller au contexte MenuVocal1
exten => 2,1, Goto(MenuVocal2,s,1) ; Aller au contexte MenuVocal2
exten => 3,1, Goto(MenuVocal3,s,1) ; Aller au contexte MenuVocal3
exten => *,1, Hangup ; Raccrochage
exten => i,1, Playback(MessagesVocaux/MessageVocalToucheInvalide) ; Lecture
exten => t,1, Goto(MenuVocal0,s,1) ; Si ResponseTimeout dpass retour
[MenuVocal1]
exten => s,1, Background(MessagesVocaux/MessageVocalMenu1) ; Lecture en arrire plan
exten => s,2, WaitExten
exten => 1,1, Goto(MenuVocal11,s,1) ; Aller au contexte MenuVocal11
exten => 2,1, Goto(MenuVocal12,s,1) ; Aller au contexte MenuVocal12
exten => *,1, Hangup ; Raccrochage
exten => i,1, Playback(MessagesVocaux/MessageVocalToucheInvalide) ; Lecture
exten => t,1, Goto(MenuVocal1,s,1) ; Si ResponseTimeout dpass retour
[MenuVocal2]
exten => s,1, BackGround(MessagesVocaux/MessageVocalMenu2) ; Lecture en arrire plan
exten => s,2, WaitExten
exten => *,1, Hangup ; Raccrochage
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
11 sur 18 07.02.2009 06:57
exten => i,1, Playback(MessagesVocaux/MessageVocalToucheInvalide) ; Lecture
exten => t,1, Goto(MenuVocal2,s,1) ; Si ResponseTimeout dpass retour
[MenuVocal3]
exten => s,1, BackGround(MessagesVocaux/MessageVocalMenu3) ; Lecture en arrire plan
exten => s,2, WaitExten
exten => *,1, Hangup ; Raccrochage
exten => i,1, Playback(MessagesVocaux/MessageVocalToucheInvalide) ; Lecture
exten => t,1, Goto(MenuVocal3,s,1) ; Si ResponseTimeout dpass retour
[MenuVocal11]
exten => s,1, BackGround(MessagesVocaux/MessageVocalMenu11) ; Lecture en arrire plan
exten => s,2, WaitExten
exten => *,1, Hangup ; Raccrochage
exten => i,1, Playback(MessagesVocaux/MessageVocalToucheInvalide) ; Lecture
[MenuVocal12]
exten => s,1, BackGround(MessagesVocaux/MessageVocalMenu12) ; Lecture en arrire plan
exten => s,2, WaitExten
exten => *,1, Hangup ; Raccrochage
exten => i,1, Playback(MessagesVocaux/MessageVocalToucheInvalide) ; Lecture
9. Fonctionnalit Realtime MySQL
Le serveur Asterisk permet de remplacer les fichiers de conguration du rpertoire/etc
/asterisk par des tables de base de donnes. A titre dexemple, nous ne dcrivons que la
migration des fichiers sip.conf et extensions.conf vers des tables (le principe est identique
pour les autres fichiers). La base de donnes utilise est MySQL.
La fonctionnalit Realtime ntant pas disponible de manire standard dans Asterisk, elle
ncessite linstallation du paquet asterisk-addons disponible sur le site dAsterisk.
9.1 Configuration initiale de MySQL
Aprs avoir install le serveur MySQL, il faut crer un utilisateur ayant les droits
appropris. Pour simplifier, nous utilisons le compte root avec un mot de passe toto.
mysqladmin password toto
On peut ensuite connecter un client CLI au serveur MySQL en administrateur :
mysql -u root -p
La premire tape consiste crer une base asterisk dans MySQL :
mysql>create database asterisk;
La cration peut tre vrifie ainsi :
mysql>show databases;
9.2 Installation de asterisk-addons
Aprs avoir tlcharg et compil asterisk-addons, il suffit de copier les fichiers suivants aux
emplacements convenables.
cp res_config_mysql.so /usr/lib/asterisk/modules/
cp configs/res_mysql.conf.sample /etc/asterisk/res_mysql.conf
La connexion dAsterisk MySQL est dnie dans le chier res_mysql.conf. Il convient
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
12 sur 18 07.02.2009 06:57
dajouter les lignes suivantes la n de ce chier :
[general]
dbhost = 127.0.0.1
dbname = asterisk
dbuser = root
dbpass = toto
dbport = 3306
9.3 Migration du fichier sip.conf
Pour indiquer Asterisk que les informations sipusers et sippeers sont dans la base MySQL,
il est ncessaire dajouter les deux lignes suivantes la n du chier extconfig.conf :
sipusers => mysql,asterisk,sip
sippeers => mysql,asterisk,sip
Maintenant, il ne reste plus qu crer la table sip dans la base asterisk de MySQL :
mysql>CREATE TABLE `sip` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(80) NOT NULL default ,
`accountcode` varchar(20) default NULL,
`amaflags` varchar(13) default NULL,
`callgroup` varchar(10) default NULL,
`callerid` varchar(80) default NULL,
`canreinvite` char(3) default yes,
`context` varchar(80) default NULL,
`defaultip` varchar(15) default NULL,
`dtmfmode` varchar(7) default NULL,
`fromuser` varchar(80) default NULL,
`fromdomain` varchar(80) default NULL,
`fullcontact` varchar(80) default NULL,
`host` varchar(31) NOT NULL default ,
`insecure` varchar(4) default NULL,
`language` char(2) default NULL,
`mailbox` varchar(50) default NULL,
`md5secret` varchar(80) default NULL,
`nat` varchar(5) NOT NULL default no,
`deny` varchar(95) default NULL,
`permit` varchar(95) default NULL,
`mask` varchar(95) default NULL,
`pickupgroup` varchar(10) default NULL,
`port` varchar(5) NOT NULL default ,
`qualify` char(3) default NULL,
`restrictcid` char(1) default NULL,
`rtptimeout` char(3) default NULL,
`rtpholdtimeout` char(3) default NULL,
`secret` varchar(80) default NULL,
`type` varchar(6) NOT NULL default friend,
`username` varchar(80) NOT NULL default ,
`disallow` varchar(100) default all,
`allow` varchar(100) default g729;ilbc;gsm;ulaw;alaw,
`musiconhold` varchar(100) default NULL,
`regseconds` int(11) NOT NULL default 0,
`ipaddr` varchar(15) NOT NULL default ,
`regexten` varchar(80) NOT NULL default ,
`cancallforward` char(3) default yes,
`setvar` varchar(100) NOT NULL default ,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `name_2` (`name`)
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
13 sur 18 07.02.2009 06:57
) TYPE=MyISAM ROW_FORMAT=DYNAMIC;
Puis de la renseigner avec un poste :
mysql>insert into sip (name,type,host,username,secret) values (ekiga1,friend,dynamic,ekiga1,toto);
On peut vrifier avec :
mysql>select name,type,host,username,secret from sip;
+-----------+--------+---------+----------+--------+
| name | type | host | username | secret |
+-----------+--------+---------+----------+--------+
| ekiga1 | friend | dynamic | ekiga1 | toto |
+-----------+--------+---------+----------+--------+
1 rows in set (0.01 sec)
Au redmarrage dAsterisk, les informations qui taient auparavant recherches dans le
chier sip.conf sont maintenant prises dans la table sip de la base asterisk .
9.4 Migration du fichier extensions.conf
Comme prcdemment, pour indiquer Asterisk que les informations extensions sont dans la
base MySQL, il faut ajouter la ligne suivante la fin du fichier extconfig.conf :
Cette fois, il faut galement ajouter la ligne suivante la fin du fichier extensions.conf pour
indiquer que la suite des informations prendre en compte se trouve dans la base :
switch => Realtime/@
Il ne reste plus qu crer la table :
mysql>CREATE TABLE `extensions` (
`id` int(11) NOT NULL auto_increment,
`context` varchar(20) NOT NULL default ,
`exten` varchar(20) NOT NULL default ,
`priority` tinyint(4) NOT NULL default 0,
`app` varchar(20) NOT NULL default ,
`appdata` varchar(128) NOT NULL default ,
PRIMARY KEY (`context`,`exten`,`priority`),
KEY `id` (`id`)
) TYPE=MyISAM;
Et la renseigner avec un numro de tlphone associ au poste dcrit dans la table sip :
mysql> insert into extensions (context,exten,priority,app,appdata) values (default,555,1,Dial,SIP/ekiga1);
Au redmarrage dAsterisk, les informations qui taient auparavant cherches dans le chier
extensions.conf sont maintenant recherches dans la table extensions de la base asterisk .
Conclusion
Le dbut de cet article a dmontr comment mettre en place simplement une architecture
VoIP autour dun serveur Asterisk. La suite du document a expliqu la conguration de
quelques fonctionnalits couramment utilises. Elles ne rvlent que trs partiellement les
possibilits du serveur Asterisk qui sont en permanente volution.
Liens:
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
14 sur 18 07.02.2009 06:57

Asterisk : http://www.asterisk.org
Ekiga : http://www.ekiga.org
Quelques fournisseurs SIP :
http://www.sipdiscount.com
http://www.voipbuster.com
http://www.freecall.com
Retrouvez cet article dans : Linux Magazine 90
Post par (La rdaction) | Signature : Philippe Hensel | Article paru dans
Laissez une rponse
Vous devez avoir ouvert une session pour crire un commentaire.
Prcdent Aller au contenu
Identifiez-vous
Inscription
S'abonner UNIX Garden
Articles de 1re page
Technologie rootkit sous Linux/Unix
CMake: la relve dans la construction de projets
Des petits sondages pour amliorer nos magazines
Linux Embarqu pour tous!
Problmatique de consolidation et atteinte des objectifs de niveau de service (SLO) avec
Xen
GNU/Linux Magazine N113 - Fvrier 2009 - Chez votre marchand de journaux
Linux Pratique Essentiel N6 - Fvrier/Mars 2009 - Chez votre marchand de journaux
Le pavage faon Aqua
Un peu plus loin avec Linux vserver
A la dcouverte du protocole de routage OSPF
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
15 sur 18 07.02.2009 06:57
Actuellement en kiosque :
Catgories
Administration rseau
Administration systme
Agenda-Interview
Audio-vido
Bureautique
Comprendre
Distribution
Embarqu
Environnement de bureau
Graphisme
Jeux
Matriel
News
Programmation
Rflchir
Scurit
Utilitaires
Web
Articles secondaires
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
16 sur 18 07.02.2009 06:57
30/10/2008
Google Gears : les services de Google offline
Lanc loccasion du Google Developer Day 2007 (le 31 mai dernier), Google Gears est
une extension open source pour Firefox et Internet Explorer permettant de continuer
accder des services et applications Google, mme si lon est dconnect....
Voir l'article...
7/8/2008
Trois questions ...
Alexis Nikichine, dveloppeur chez IDM, la socit qui a conu linterface et le moteur
de recherche de lEHM....
Voir l'article...
11/7/2008
Protger une page avec un mot de passe
En gnral, le problme nest pas de protger une page, mais de protger le rpertoire
qui la contient. Avec Apache, vous pouvez mettre un chier .htaccess dans le rpertoire
protger....
Voir l'article...
6/7/2008
hypermail : Conversion mbox vers HTML
Comment conserver tous vos changes de mails, ou du moins, tous vos mails reus
depuis des annes ? mbox, maildir, texte les formats ne manquent pas. ...
Voir l'article...
6/7/2008
iozone3 : Benchmark de disque
En fonction de lutilisation de votre systme, et dans bien des cas, les performances des
disques et des systmes de fichiers sont trs importantes....
Voir l'article...
1/7/2008
Augmentez le trafic sur votre blog !
Google Blog Search (http://blogsearch.google.fr/) est un moteur de recherche consacr
aux blogs, lun des nombreux services proposs par la clbre rme californienne....
Voir l'article...
GNU/Linux Magazine
GNU/Linux Magazine N113 - Fvrier 2009 - Chez votre marchand de journaux
dito : GNU/Linux Magazine 113
Un petit sondage pour amliorer nos magazines
GNU/Linux Magazine HS N40 - Janvier/Fvrier 2009 - Chez votre marchand de
journaux
Edito : GNU/Linux Magazine HS 40
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
17 sur 18 07.02.2009 06:57
GNU/Linux Pratique
Linux Pratique Essentiel N6 - Fvrier/Mars 2009 - Chez votre marchand de
journaux
dito : Linux Pratique Essentiel N6
Linux Pratique Essentiel 6 - Communiqu de presse
Un petit sondage pour amliorer nos magazines
Linux Pratique N51 - Janvier/Fvrier 2009 - Chez votre marchand de journaux
MISC Magazine
Un petit sondage pour amliorer nos magazines
MISC N41 : La cybercriminalit ou quand le net se met au crime organis -
Janvier/Fvrier 2009 - Chez votre marchand de journaux
dito : Misc 41
MISC 41 - Communiqu de presse
Les ditions Diamond adhrent lAPRIL !
2007 - 2009 UNIX Garden. Tous droits rservs .
Voix sur IP : serveur de tlphonie Asterisk UNI... http://www.unixgarden.com/index.php/administrati...
18 sur 18 07.02.2009 06:57

You might also like