Professional Documents
Culture Documents
plusieurs protocoles (SIP, H323, ADSI, MGCP) et des rseaux de tlphonies classiques via des cartes d'interface tlphonique et tout ceci moindre cot. Asterisk offre toutes les fonctions d'un PBX et ses services associs comme de la confrence tlphonique, des rpondeurs intractifs, de la mise en attente d'appels, des mails vocaux, de la musique d'attente, de la gnration d'enregistrement d'appels pour l'intgration avec des systmes de facturation, etc...
Le PBX open source Asterisk a vu le jour quand Mark Spencer, a voulu acqurir un PBX traditionnel pour sa socit. Le crateur d'Asterisk, trouvant que le prix d'acquisition d'un PBX traditionnel tait dmesur, initia un projet open source. Il a donc commenc dvelopper Asterisk. Son quipe s'est rapidement rapproche de celle de Jim Dixon (Zapata Telephony Project), dans le but de construire des cartes d'interface "bon march" avec le rseau tlphonique classique. Leur but tait de construire des cartes compatibles avec des plateformes bases sur Intel et ainsi de permettre n'importe quel PC, avec le systme d'exploitation Linux, une carte d'interface et le logiciel Asterisk d'avoir un PBX entirement fonctionnel. Pour info, Le nom Asterisk fait rfrence au symbol "*" qui signifie "wildcard" en ligne de commande Unix et DOS. Ce choix a t fait car Asterisk est conu dans le but d'offrir une trs grande souplesse dans des rseaux de voix. Asterisk Open Source PBX, par Mark Spencer <markster@digium.com> Copyright (C) 20012005 Digium, Inc. Asterisk est distribu sous la GNU General Public License (GPL) et est aussi disponible sous des licences alternatives sous rserve d'accord avec la socit DIGIUM, Inc. Si vous obtenez Asterisk sous la licence GPL, alors cette licence s'applique tous les modules utiliss par votre systme d'exploitation lexception des cas suivants.
Digium, Inc. maintient un copyright et/ou une licence sur tous les composants de base du systme Asterisk, et peut donc accorder, de son propre chef, le droit des socits ou individus, de crer des modules propritaires ou open source (non soumis la licence GPL) qui peuvent tre dynamiquement utiliss par Asterisk lors de son excution. Pour plus de dtails concernant ce point, merci de vous diriger vers la socit Digium. Il n'y pas de restriction pour utiliser le code source d'Asterisk dans un autre programme soumis la licence GPL. Des permissions spcifiques ont aussi t donnes pour utiliser OpenSLL et OpenH323 avec Asterisk. Les modules qui sont soumis la licence GPL et qui ne sont pas disponibles sous la licence dispense par Digium sont disponibles sur serveur CVS Si vous avez des questions sur les termes de cette licence, n'hsitez pas contacter la socit digium. Pr requis: Les packages suivants doivent tre installs sur votre systme avant de procder l'installation d'Asterisk - Linux 2.4 kernel sources or kernel 2.6 header files (http://www.kernel.org/pub/) - bison et bison-devel (http://ftp.gnu.org/pub/gnu/bison/bison-2.0.tar.gz) - ncurses et ncurses-devel (http://freshmeat.net/redir/ncurses/6995/url_tgz/ncurses-5.4.tar.gz) - zlib et zlib-devel (http://freshmeat.net/redir/zlib/12352/url_bz2/zlib-1.2.2.tar.bz2) - openssl et openssl-devel (http://freshmeat.net/redir/openssl/7464/url_tgz/openssl0.9.8.tar.gz) Tlcharger les sources sur le site FTP de digium: wget http://ftp.digium.com/pub/asterisk/asterisk-1.2.0-beta1.tar.gz ywget http://ftp.digium.com/pub/zaptel/zaptel-1.2.0-beta1.tar.gz wget http://ftp.digium.com/pub/libpri/libpri-1.2.0-beta1.tar.gz Installation de libpri: tar -xzvf libpri-1.2.0-beta1.tar.gz /usr/local/src/asterisk cd /usr/local/src/asterisk/libpri-1.2.0-beta1 make clean;make;make install Installation de zaptel: tar -xzvf zaptel-1.2.0-beta1.tar.gz /usr/local/src/asterisk cd /usr/local/src/asterisk/zaptel-1.2.0-beta1 make clean;make;make install Installation d'Asterisk:
tar -xzvf asterisk-1.2.0-beta1.tar.gz /usr/local/src/asterisk cd /usr/local/src/asterisk/asterisk-1.2.0-beta1 make clean;make;make install;make sample Pr requis: Le package suivant doit tre install sur votre systme Windows : - X-ten, un client logiciel VoIP (http://builds.xten.net/download-public.php?download=1135). Configuration d'Asterisk: Editer le fichier sip.conf: Rajouter les lignes suivantes la fin du fichier, [test] type=friend secret=test callerid="Utilisateur de test " <test> host=dynamic disallow=all allow=ilbc
Le guide d'installation et de configuration du client X-lite sous Windows XP est disponible l'adresse suivante: http://asterisk.open-source.fr/X-lite-installation-20050920-fr.pdf Une fois le client X-lite install et configur, composer le numro 1000, appuyer sur Enter et suivre les instructions (langue Anglaise)
Jeyg
27 juillet 2010Post dans : Rseau, Systme, Tutoriel
Sommaire
1 - Installation dAsterisk 1.1 Prrequis 1.2 Rcupration des sources 1.3 Compilation 2 - Conguration dAsterisk 2.1 sip.conf 2.2 extensions.conf 2.3 Prise en compte des congurations 3 - Ajout de fonctions 3.1 Transfert dappel 3.2 Mise en attente 3.3 Messagerie vocale 3.4 Conguration du MTA pour la messagerie vocale 4 - Asterisk en temps rel avec MySQL 4.1 Prrequis 4.2 Rcupration des sources Asterisk Add-Ons 4.3 Compilation 4.4 Conguration initiale 4.5 Migration du chier sip.conf 4.6 Migration du chier extension.conf
1 - Installation d'Asterisk
1.1 Prrequis
Liste des dpendances ncessaires linstallation : - glibc-source - ncurses-dev - zlib1g-dev
1.3 Compilation
On se dplace dans le rpertoire dtar et on compile:
$ cd asterisk-1.4.29/ $ ./configure $ make menuselect (optionnel) $ make # make install
On copie le bon script init pour le lancement automatique au dmarrage suivant sa distribution, ici Debian.
# cp /usr/src/astrisk/contrib/init.d/rc.debian.asterisk /etc/init.d/asterisk
Attention : Ce script semble problmatique sur Debian 5. En eet, si Asterisk est lanc par ce biais, la consommation du CPU monte 99% en permanance. Un moyen de contourner ce problme peut tre de passer par inittab, en ajoutant dans celui-ci :
as:2:respawn:/usr/sbin/asterisk -f
Le 2 correspond au runlevel, donc de cette manire asterisk se lance au dmarrage et se relance grce au respawn si le processus meurt pour nimporte quelle raison. On noublie pas de dsactiver le script init au dmarrage :
# update-rc -f asterisk remove
2 - Conguration dAsterisk
Pour quAsterisk fonctionne de manire basique, il est ncessaire de modier seulement deux chiers de conguration : sip.conf et extensions.conf. Ces chiers de congurations se trouvent dans /etc/asterisk.
# cd /etc/asterisk/
2.1 sip.conf
Cest dans ce chier que lon dnit les comptes sip des utilisateurs. Pour tre fonctionnel, un compte a besoin dau minimum 6 lignes :
# cat sip.conf [utilisateur1] type=friend host=dynamic user=utilisateur1 secret=mysecret context=default
Voyons en dtail chaque ligne : [utilisateur1] est le dbut du bloc SIP. Les informations prsentes aprs cette ligne concerneront le compte [utilisateur1]. type=friend permet dappeler et dtre appel. host=dynamic ladresse ip du client est dnie par DHCP. Si son IP tait xe on laurait prcis ici. user=utilisateur1 le nom utilisateur secret=mysceret le mot de passe en clair context=default le contexte auquel le compte est associ dans le dialplan (servira pour le chier extensions.conf) Une liste des options possibles : http://www.voipinfo.org/wiki/view/Asterisk+config+sip.conf\#SIPconfigurationspeersandclients
A noter quen utilisant secret, le mot de passe est stock en clair. Il est prfrable dutiliser md5secret, qui, comme son nom lindique, utilisera un hash md5. Voici la structure ncessaire pour la gnration du hash :
<user>:<realm>:<secret>
Par dfaut le realm est asterisk. Pour gnrer le hash de lutilisateur toto qui a pour mot de passe tutu avec bash, on fait donc :
$ echo -n "toto:asterisk:tutu" | md5sum 5aebc5cf46e9e2dd011c16489eb83a18
2.2 extensions.conf
Cest dans ce chier que lon dnit le dialplan, cest dire le plan de la numrotation. On explicite laction qui se droulera si lon compose un numro. Voici ce que pourrait contenir ce chier :
# cat extensions.conf [default] exten => 100,1,Dial(SIP/utilisateur1)
Le [default] est ce quon appelle un contexte. Le contexte est une zone o la porte des actions est limite. Cela permet par exemple dattribuer deux numros identiques des utilisateurs dirents, lun ou lautre sera contact suivant le contexte dnit dans le compte SIP de lutilisateur cherchant les joindre. La ligne suivante nous montre comment enregistrer une extension. On commence par le mot cl exten suivi dune che =>. Le 100 est le numro que lon souhaite associer, cest ce que lon composera sur le tlphone. Le 1 est le numro de squence. On peut en eet ordonner plusieurs actions pour une mme extension. Dial(SIP/utilisateur1) est laction eectuer. On appelle ici la fonction Dial(), qui dclenche lappel, avec pour argument SIP/utilisateur1 pour appeler le compte SIP utilisateur1. Ici donc, pour tous les utilisateurs du contexte default, composer le 100 appelera lutilisateur1 Un petit exemple pour assimiler la notion de squence :
# cat extensions.conf [default] exten => 100,1,Dial,wait(5) exten => 100,2,Dial,SIP/utilisateur1
Ici, jattends 5 secondes avant de sonner, puis jappelle lutilisateur1. De nombreuses actions sont possibles, au dela du simple appel. En voici une liste :
http://www.voip-info.org/tiki-index.php?page=Asterisk++documentation+of+application+commands
A ce moment la, le serveur est oprationnel. Lutilisateur1 possde un compte SIP et un numro lui est associ. Il ne reste plus qu ajouter dautres utilisateurs et mettre jour le dialplan.
3 - Ajout de fonctions
Il faut noter que le transfert dappel et la mise en attente sont souvent directement implments dans les softphone et les terminaux SIP. Les manipulations suivantes permettent de les activer directement dans Asterisk, ce qui permet de saranchir dun logiciel ou matriel particulier.
La dmarche suivre ct client dpend du client, il faut regarder du cot des paramtres SIP.
Pour activer le transfert dappel, il sut simplement de modier les paramtres de la fonction Dial dans extensions.conf :
exten => 100,2,Dial(SIP/utilisateur1,,tT)
Aprs SIP/utilisateur1, nous avon ajout les options t et T qui autorisent lappel et lappelant transfrer lappel (nous reviendrons sur les deux virgules prcdentes dans une prochaine section). Pour eectuer le transfert, il faut appuyer durant une communication sur le # (on entend ce moment la transfer) suivi du numro sur lequel on souhaite transfrer lappel.
Pour mettre son interlocuteur en attente lors dun appel, il faut composer le #700. Le serveur attribue un numro au sein du parc dattente. On peut alors raccrocher, changer de poste, et reprendre lappel en composant le numro annonc par le serveur.
On cre une boite vocale dans le chier /etc/asterisk/voicemail.conf, dans la partie [default] :
100 => 1010,Monsieur Utilisateur 1, utilisateur1@gmailyahoohotmail.com
Le 100 est le numro de tlphone auquel on associe la boite vocale. Le 1010 est le mot de passe de la messagerie. Suivent le nom de lutilisateur, ainsi que son mail. Le mail servira lalerter en cas de rception de message vocal, condition quun MTA soit correctement congur (nous le verrons plus tard). La boite vocale est maintenant dclare, il reste linclure dans extensions.conf pour quelle soit utlise :
exten => 100,1,Dial(SIP/utilisateur1, 10) exten => 100,2,Voicemail(b101) exten => 100,3,Hangup
Nous avions dj vu un exemple de squences, en voici un nouveau. La premire action eectue lorsque lon compose le 101 est lappel de lutilisateur1. Le 10 situ aprs la virgule est le timeout avant de passer la deuxieme squence. Cest pour cela que lon avait mis deux virgules de suite dans la section transfert dappel. Une fois le timeout atteint, on bascule sur la deuxime squence, qui est lappel de la boite vocale avec la fonction Voicemail. Enn, on raccroche avec la fonction Hangup.
Le serveur mail va se relancer, Asterisk est dsormais capable denvoyer des mails dalerte avec le message vocal en pice jointe.
4.1 Prrequis
Dpendances ncessaires : - mysql-client - mysql-server - libmysqlclient-dev
4.3 Compilation
On se dplace dans le rpertoire dtar et on compile :
$ cd asterisk-1.4.29/ $ ./configure $ make menuselect (optionnel) $ make # make install
Il est conseill de vrier avec make menuselect si les modules dpendants de mysql sont bien activs et sil ne manque aucune dpendance.
Les paramtres de connexion dAsterisk MySQL sont dnis dans le chier res_mysql.conf :
# cat /etc/asterisk/res_mysql.conf [general] dbhost = 127.0.0.1 dbname = asterisk dbuser = root dbpass = motdepassemysql dbport = 3306
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) ) TYPE=MyISAM ROW_FORMAT=DYNAMIC;
La requte est intentionellement lourde pour avoir tous les champs disponibles ds le dpart. Cela permet daecter des valeurs par dfaut sur certains champs, et davoir les autres dj prts pour plus tard, au cas o. On va crer un compte avec cette requte :
mysql>insert into sip (name,type,host,username,secret) values (android1,friend,dynamic,AndroidM,secret);
Enn, on va spcier Asterisk daller chercher les paramtres SIP dans MySQL. Il sut dajouter ces 2 lignes la n du chier extcong.conf :
# echo sipusers => mysql,asterisk,sip >> /etc/asterisk/extconfig.conf # echo sippeers => mysql,asterisk,sip >> /etc/asterisk/extconfig.conf
Au prochain redmarrage dAsterisk, il ira chercher les donnes des comptes SIP dans la table sip de MySQL en complment du chier sip.conf.
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;
On renseigne cette table avec un numro de tlphone associ au compte SIP prcdemment cr :
mysql> insert into extensions (context,exten,priority,app,appdata) values (default,18,1,Dial,SIP/android1);
La structure est quasiemment identique au chier extensions.conf. Comme prcdemment, il faut rajouter une ligne extcong.conf pour dire Asterisk daller chercher les extensions dans MySQL :
# echo extensions => mysql,asterisk,extensions >> /etc/asterisk/extconfig.conf
Enn, il faut rajouter la n de extensions.cong une ligne renvoyant vers la base SQL :
# echo switch => Realtime >> /etc/asterisk/extensions.conf
Au prochain redmarrage dAsterisk, les extensions seront charges partir de la table MYSQL asterisk, en complment du chier extensions.conf.