Professional Documents
Culture Documents
http://www.unixgarden.com/index.php/administrati...
Accueil A propos Nuage de Tags Contribuer Whos who Rcoltez lactu UNIX et cultivez vos connaissances de lOpen Source 27 nov 2008
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
L objet 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. L architecture 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.
http://www.unixgarden.com/index.php/administrati...
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
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
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
2 sur 18
07.02.2009 06:57
http://www.unixgarden.com/index.php/administrati...
; enregistrement dynamique de ladresse IP du tlphone ; nom dutilisateur associ ; mot de passe ; interdit tous les codecs ; autorise uniquement le codec G711 loi ; nom du tlphone ; type de tlphone ; enregistrement dynamique de ladresse IP du tlphone ; nom dutilisateur associ ; mot de passe ; interdit tous les codecs ; 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.
Puis, conrmez avec le bouton Validez . Ensuite, on coche la case de la colonne A de gauche. L tat 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.
3 sur 18
07.02.2009 06:57
http://www.unixgarden.com/index.php/administrati...
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.
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 .
4 sur 18
07.02.2009 06:57
http://www.unixgarden.com/index.php/administrati...
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 ; insecure=very ; host=freephonie.net ; username=0807060504 ; secret=MotDePasse ; fromuser=087060504 fromdomain=freephonie.net context=fournisseursip-entrant type de lien correspondant indispensable le fournisseur SIP le nom dutilisateur chez le fournisseur SIP le mot de passe chez le fournisseur SIP
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
5 sur 18
07.02.2009 06:57
http://www.unixgarden.com/index.php/administrati...
tlphone logiciel Ekiga . La conguration de ces fonctions est ralise travers le chier features.conf.
Ct Ekiga, dans le menu Edition, slectionnez Prfrences, puis Paramtres SIP. Vrifiez alors, que mode DTMF est RFC2833 .
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.
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
6 sur 18
07.02.2009 06:57
http://www.unixgarden.com/index.php/administrati...
autre poste et reprendre la communication en composant simplement le numro attribu dans le parc. L utilisateur 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.
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.
http://www.unixgarden.com/index.php/administrati...
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 : L option 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
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.
8 sur 18
07.02.2009 06:57
http://www.unixgarden.com/index.php/administrati...
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.
9 sur 18
07.02.2009 06:57
http://www.unixgarden.com/index.php/administrati...
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.
Le gabarit du mail, ici en anglais, peut tre facilement adapt en modifiant la variable emailbody dans le fichier voicemail.conf.
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 :
10 sur 18
07.02.2009 06:57
http://www.unixgarden.com/index.php/administrati...
L enregistrement peut se faire avec la commande arecord que lon termine avec [Ctrl-C] :
arecord > 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
11 sur 18
07.02.2009 06:57
http://www.unixgarden.com/index.php/administrati...
Playback(MessagesVocaux/MessageVocalToucheInvalide) ; Lecture Goto(MenuVocal2,s,1) ; Si ResponseTimeout dpass retour BackGround(MessagesVocaux/MessageVocalMenu3) ; Lecture en arrire plan WaitExten Hangup ; Raccrochage Playback(MessagesVocaux/MessageVocalToucheInvalide) ; Lecture Goto(MenuVocal3,s,1) ; Si ResponseTimeout dpass retour BackGround(MessagesVocaux/MessageVocalMenu11) ; Lecture en arrire plan WaitExten Hangup ; Raccrochage Playback(MessagesVocaux/MessageVocalToucheInvalide) ; Lecture BackGround(MessagesVocaux/MessageVocalMenu12) ; Lecture en arrire plan WaitExten Hangup ; Raccrochage Playback(MessagesVocaux/MessageVocalToucheInvalide) ; Lecture
12 sur 18
07.02.2009 06:57
http://www.unixgarden.com/index.php/administrati...
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`)
13 sur 18
07.02.2009 06:57
http://www.unixgarden.com/index.php/administrati...
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 .
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:
14 sur 18
07.02.2009 06:57
http://www.unixgarden.com/index.php/administrati...
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
15 sur 18
07.02.2009 06:57
http://www.unixgarden.com/index.php/administrati...
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
16 sur 18
07.02.2009 06:57
http://www.unixgarden.com/index.php/administrati...
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
17 sur 18
07.02.2009 06:57
http://www.unixgarden.com/index.php/administrati...
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 !
18 sur 18
07.02.2009 06:57