Asterisk est un PBX applicatif open source permettant d'interconnecter en temps réel des réseaux de voix sur IP via

plusieurs protocoles (SIP, H323, ADSI, MGCP) et des réseaux de téléphonies classiques via des cartes d'interface téléphonique et tout ceci à moindre coût. Asterisk offre toutes les fonctions d'un PBX et ses services associés comme de la conférence téléphonique, des répondeurs intéractifs, de la mise en attente d'appels, des mails vocaux, de la musique d'attente, de la génération d'enregistrement d'appels pour l'intégration avec des systèmes de facturation, etc...

Le PBX open source Asterisk a vu le jour quand Mark Spencer, a voulu acquérir un PBX traditionnel pour sa société. Le créateur d'Asterisk, trouvant que le prix d'acquisition d'un PBX traditionnel était démesuré, initia un projet open source. Il a donc commencé à développer Asterisk. Son équipe s'est rapidement rapprochée de celle de Jim Dixon (Zapata Telephony Project), dans le but de construire des cartes d'interface "bon marché" avec le réseau téléphonique classique. Leur but était de construire des cartes compatibles avec des plateformes basées sur Intel et ainsi de permettre à n'importe quel PC, avec le système d'exploitation Linux, une carte d'interface et le logiciel Asterisk d'avoir un PBX entièrement fonctionnel. Pour info, Le nom Asterisk fait référence au symbol "*" qui signifie "wildcard" en ligne de commande Unix et DOS. Ce choix a été fait car Asterisk est conçu dans le but d'offrir une très grande souplesse dans des réseaux 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 réserve d'accord avec la société DIGIUM, Inc. Si vous obtenez Asterisk sous la licence GPL, alors cette licence s'applique à tous les modules utilisés par votre système d'exploitation à l’exception des cas suivants.

0-beta1.4 kernel sources or kernel 2.0-beta1.make install Installation d'Asterisk: .2.0-beta1. de créer des modules propriétaires ou open source (non soumis à la licence GPL) qui peuvent être dynamiquement utilisés par Asterisk lors de son exécution.Linux 2.0-beta1.0-beta1 make clean.Digium.com/pub/zaptel/zaptel-1.gz Installation de libpri: tar -xzvf libpri-1. Des permissions spécifiques ont aussi été données pour utiliser OpenSLL et OpenH323 avec Asterisk.0-beta1.gnu. Pré requis: Les packages suivants doivent être installés sur votre système avant de procéder à l'installation d'Asterisk .gz) Télécharger les sources sur le site FTP de digium: wget http://ftp.digium. Inc.2.2.make.com/pub/libpri/libpri-1.bz2) .gz) .tar.kernel.tar.org/pub/gnu/bison/bison-2. n'hésitez pas à contacter la société digium.ncurses et ncurses-devel (http://freshmeat.2.tar. et peut donc accorder.0.digium.9.net/redir/openssl/7464/url_tgz/openssl0.tar.tar.make.zlib et zlib-devel (http://freshmeat.net/redir/zlib/12352/url_bz2/zlib-1.digium. Il n'y pas de restriction pour utiliser le code source d'Asterisk dans un autre programme soumis à la licence GPL.org/pub/) . de son propre chef.8.2. Les modules qui sont soumis à la licence GPL et qui ne sont pas disponibles sous la licence dispensée par Digium sont disponibles sur serveur CVS Si vous avez des questions sur les termes de cette licence.tar.gz) . merci de vous diriger vers la société Digium.gz /usr/local/src/asterisk cd /usr/local/src/asterisk/zaptel-1.tar.0-beta1 make clean.make install Installation de zaptel: tar -xzvf zaptel-1.com/pub/asterisk/asterisk-1.gz ywget http://ftp.2.bison et bison-devel (http://ftp.6 header files (http://www.tar.openssl et openssl-devel (http://freshmeat.4.tar. Pour plus de détails concernant ce point.gz wget http://ftp.gz /usr/local/src/asterisk cd /usr/local/src/asterisk/libpri-1. maintient un copyright et/ou une licence sur tous les composants de base du système Asterisk.2.2. le droit à des sociétés ou individus.2.net/redir/ncurses/6995/url_tgz/ncurses-5.

Configuration d'Asterisk: Editer le fichier sip.make install.0-beta1. [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.2.make sample Pré requis: Le package suivant doit être installé sur votre système Windows : . appuyer sur Enter et suivre les instructions (langue Anglaise) .fr/X-lite-installation-20050920-fr. composer le numéro 1000.gz /usr/local/src/asterisk cd /usr/local/src/asterisk/asterisk-1. un client logiciel VoIP (http://builds.make.tar -xzvf asterisk-1.xten.0-beta1 make clean.2.net/download-public.tar.X-ten.conf: Rajouter les lignes suivantes à la fin du fichier.php?download=1135).open-source.pdf Une fois le client X-lite installé et configuré.

3 Compilation 4.1 sip. Tutoriel Sommaire 1 .1 Transfert d’appel 3.3 Compilation 2 .Asterisk en temps réel avec MySQL 4.1 Prérequis 4.Installation d’Asterisk 1. Système.conf 2.1 Prérequis 1.Ajout de fonctions 3.3 Messagerie vocale 3.4 Configuration du MTA pour la messagerie vocale 4 .conf 2.conf 1 .2 extensions.Configuration d’Asterisk 2.Installation et configuration d'un serveur IPBX Asterisk Par Jeyg – 27 juillet 2010Posté dans : Réseau.conf 4.5 Migration du fichier sip.4 Configuration initiale 4.2 Récupération des sources 1.3 Prise en compte des configurations 3 .2 Récupération des sources Asterisk Add-Ons 4.6 Migration du fichier extension.2 Mise en attente 3.Installation d'Asterisk .

d/asterisk Attention : Ce script semble problématique sur Debian 5.1 Prérequis Liste des dépendances nécessaires à l’installation : .4. ici Debian.asterisk /etc/init. Un moyen de contourner ce problème peut être de passer par inittab.2 Récupération des sources Direction www.1.4. si Asterisk est lancé par ce biais.asterisk.org pour récupérer les sources. en ajoutant dans celui-ci : .4. puis on détare : $ cd /usr/src $ tar -xvf asterisk-1. On télécharge l’archive dans le répertoire /usr/src/.glibc-source .debian.ncurses-dev ./configure $ make menuselect (optionnel) $ make # make install On crée des fichiers de configuration d’exemple.3 Compilation On se déplace dans le répertoire détaré et on compile: $ cd asterisk-1.zlib1g-dev 1. # cp /usr/src/astrisk/contrib/init. Il est conseillé de choisir la version LTS (Long Time Support). En effet.d/rc. ici la version 1.29 1.29/ $ . la consommation du CPU monte à 99% en permanance. # make samples On copie le bon script init pour le lancement automatique au démarrage suivant sa distribution.

donc de cette manière asterisk se lance au démarrage et se relance grâce au respawn si le processus meurt pour n’importe quelle raison.org/wiki/view/Asterisk+config+sip. un compte a besoin d’au minimum 6 lignes : # cat sip. Pour être fonctionnel. Si son IP était fixe on l’aurait précisé ici. type=friend permet d’appeler et d’être appelé.conf. Les informations présentes après cette ligne concerneront le compte [utilisateur1]. host=dynamic l’adresse ip du client est définie par DHCP. Ces fichiers de configurations se trouvent dans /etc/asterisk.conf [utilisateur1] type=friend host=dynamic user=utilisateur1 secret=mysecret context=default Voyons en détail chaque ligne : [utilisateur1] est le début du bloc SIP. # cd /etc/asterisk/ 2.voipinfo.conf et extensions.conf\#SIPconfigurationspeersandclients . il est nécessaire de modifier seulement deux fichiers de configuration : sip.as:2:respawn:/usr/sbin/asterisk -f Le 2 correspond au runlevel.Configuration d’Asterisk Pour qu’Asterisk fonctionne de manière basique.conf C’est dans ce fichier que l’on définit les comptes sip des utilisateurs. On n’oublie pas de désactiver le script init au démarrage : # update-rc -f asterisk remove 2 . 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 fichier extensions.1 sip.conf) Une liste des options possibles : http://www.

qui déclenche l’appel.Dial.Dial. c’est ce que l’on composera sur le téléphone.conf [default] exten => 100. La ligne suivante nous montre comment enregistrer une extension. au dela du simple appel. On appelle ici la fonction Dial().wait(5) exten => 100. Ici donc.2 extensions. De nombreuses actions sont possibles. j’attends 5 secondes avant de sonner. qui. utilisera un hash md5. Le 100 est le numéro que l’on souhaite associer.Dial(SIP/utilisateur1) Le [default] est ce qu’on appelle un contexte. on fait donc : $ echo -n "toto:asterisk:tutu" | md5sum 5aebc5cf46e9e2dd011c16489eb83a18 2. composer le 100 appelera l’utilisateur1 Un petit exemple pour assimiler la notion de séquence : # cat extensions. Il est préférable d’utiliser ’md5secret’. l’un ou l’autre sera contacté suivant le contexte définit dans le compte SIP de l’utilisateur cherchant à les joindre. Cela permet par exemple d’attribuer deux numéros identiques à des utilisateurs différents. On peut en effet ordonner plusieurs actions pour une même extension. Dial(SIP/utilisateur1) est l’action à effectuer.1.2. puis j’appelle l’utilisateur1. pour tous les utilisateurs du contexte default. c’est à dire le plan de la numérotation. le mot de passe est stocké en clair. Voici ce que pourrait contenir ce fichier : # cat extensions.conf [default] exten => 100. On explicite l’action qui se déroulera si l’on compose un numéro.A noter qu’en utilisant ’secret’. comme son nom l’indique.conf C’est dans ce fichier que l’on définit le dialplan. avec pour argument SIP/utilisateur1 pour appeler le compte SIP utilisateur1. On commence par le mot clé exten suivi d’une flèche =>. Le 1 est le numéro de séquence. En voici une liste : .SIP/utilisateur1 Ici. Voici la structure nécessaire pour la génération du hash : <user>:<realm>:<secret> Par défaut le realm est ’asterisk’.1. Le contexte est une zone où la portée des actions est limitée. Pour générer le hash de l’utilisateur toto qui a pour mot de passe ’tutu’ avec bash.

3 Prise en compte des configurations Pour toute modification du sip.Ajout de fonctions Il faut noter que le transfert d’appel et la mise en attente sont souvent directement implémentés dans les softphone et les terminaux SIP.voip-info. . le serveur est opérationnel. il est nécessaire qu’Asterisk recharge ces fichiers. Pour cela. les d pour debug) Puis on recharge Asterisk : reload La commande suivante permet de recharger uniquement le dialplan (extensions.conf. dans le contexte [général] ou pour chaque utilisateur : dtmfmode = rfc2833 La démarche à suivre côté client dépend du client.conf. L’utilisateur1 possède un compte SIP et un numéro lui est associé. Il ne reste plus qu’à ajouter d’autres utilisateurs et mettre à jour le dialplan.php?page=Asterisk++documentation+of+application+commands 2. 3. il faut regarder du coté des paramètres SIP. ce qui permet de s’affranchir d’un logiciel ou matériel particulier. 3 .conf et du extensions. Pour Asterisk.http://www. on se logue sur la console d’Asterisk : # asterisk -rvvvvdddd (les v pour verbose.org/tiki-index. Les manipulations suivantes permettent de les activer directement dans Asterisk.1 Transfert d’appel Il est nécessaire avant tout d’activer les tonalités DTMF à la fois côté client et serveur. il suffit d’ajouter la ligne suivante dans sip.conf) : dialplan reload A ce moment la.

car du coup la ligne est libérée.Monsieur Utilisateur 1.conf : include=>parkedcalls Pour mettre son interlocuteur en attente lors d’un appel.Dial(SIP/utilisateur1.2. il suffit d’ajouter la ligne suivante dans le contexte default du fichier extensions.conf la ligne suivante : language=fr On crée une boite vocale dans le fichier /etc/asterisk/voicemail. Il est la aussi nécessaire d’activer les tonalités DTMF (cf section précédente).tT) Après SIP/utilisateur1. Le serveur attribue un numéro au sein du parc d’attente. ou récupérer l’appel sur un autre poste. dans la partie [default] : 100 => 1010.com . On peut alors raccrocher. il faut appuyer durant une communication sur le # (on entend à ce moment la ”transfer”) suivi du numéro sur lequel on souhaite transférer l’appel. Pour activer la mise en attente. il faut composer le #700.3 Messagerie vocale Si on veut que la voix de la messagerie soit en français. nous avon ajouté les options t et T qui autorisent l’appelé et l’appelant à transférer l’appel (nous reviendrons sur les deux virgules précédentes dans une prochaine section). Cela est très utile.conf. On peut alors composer un autre numéro.. changer de poste. il faut le spécifier lors de la compilation d’Asterisk à l’aide de la commande : $ make menuselect Il faut ensuite ajouter dans le contexte [general] de sip.conf : exten => 100. il suffit simplement de modifier les paramètres de la fonction Dial dans extensions. utilisateur1@gmailyahoohotmail. et reprendre l’appel en composant le numéro annoncé par le serveur. 3. Pour effectuer le transfert. 3.Pour activer le transfert d’appel.2 Mise en attente La mise en attente permet de mettre une communication en pause.

4 Configuration du MTA pour la messagerie vocale Il est en effet très intéressant de passer par une alerte mail lors de la réception d’un message : l’utilisateur est alors au courant qu’il a un message. en voici un nouveau.1. il reste à l’inclure dans extensions. on raccroche avec la fonction Hangup. et peut l’écouter directement en pièce jointe.0. Le 10 situé après la virgule est le timeout avant de passer à la deuxièeme séquence. Une fois le timeout atteint.Dial(SIP/utilisateur1.2.Voicemail(b101) exten => 100. Puisque exim4 est déjà installé. Asterisk est désormais capable d’envoyer des mails d’alerte avec le message vocal en picèe jointe.0. La boite vocale est maintenant déclarée. car c’est le MTA par défaut de Debian. 3. il ne reste plus qu’à configurer un MTA.Hangup Nous avions déjà vu un exemple de séquences. qui est l’appel de la boite vocale avec la fonction Voicemail. C’est pour cela que l’on avait mis deux virgules de suite dans la section transfert d’appel. J’ai ici arbitrairement choisi exim4. La première action effectuée lorsque l’on compose le 101 est l’appel de l’utilisateur1. on va simplement le reconfigurer : dpkg-reconfigure exim4-config Type de configuration : Distribution directe par SMTP (site Internet) Nom de courriel du système :le FQDN Liste d’adresses IP où Exim sera en attente de connexions SMTP entrantes : 127. On a déjà renseigné l’adresse mail de l’utilisateur dans voicemail.conf. Enfin.Le 100 est le numéro de téléphone auquel on associe la boite vocale.conf pour qu’elle soit utlisée : exten => 100. . Le mail servira à l’alerter en cas de réception de message vocal.1 Autres destinations dont le courriel doit être accepté : vide Domaines à relayer : vide Machines à relayer : vide Faut-il minimiser les requêtes DNS (connexions à la demande) ? Non Méthode de distribution du courrier local : Format "mbox" dans /var/mail Faut-il séparer la configuration dans plusieurs fichiers ? Non Le serveur mail va se relancer. Le 1010 est le mot de passe de la messagerie. on bascule sur la deuxième séquence. ainsi que son mail. Suivent le nom de l’utilisateur. à condition qu’un MTA soit correctement configuré (nous le verrons plus tard).3. 10) exten => 100.

mysql-client . il est nécessaire de recharger le serveur Asterisk./configure $ make menuselect (optionnel) $ make # make install Il est conseillé de vérifier avec make menuselect si les modules dépendants de mysql sont bien activés et s’il ne manque aucune dépendance.gz 4. on télécharge les sources dans /usr/src puis on détarre : $ cd /usr/src $ tar -xvf asterisk-addons-1. est considérée comme experimentale.mysql-server .libmysqlclient-dev 4. sans avoir besoin de recharger le serveur. la migrer vers MySQL peut être extremement intéressant. On peut en fait se servir de tables au lieu de fichiers de configuration. 4. celles-ci seront prises en compte instantanément. Il est nécessaire de télécharger et installer les Add-Ons d’Asterisk. Si on a un vrai besoin d’une prise en compte en temps réel et d’une plus grande souplesse dans la configuration.2 Récupération des sources Asterisk Add-Ons Toujours sur www.tar. pour que toute modification de sip.4 .asterisk.Asterisk en temps réel avec MySQL Comme nous venons de le voir.conf ou extensions. .4.conf soit prise en compte.3 Compilation On se déplace dans le répertoire détaré et on compile : $ cd asterisk-1.4.1 Prérequis Dépendances nécessaires : . C’est pour cette raison qu’elle n’est pas présente directement dans les sources. Cette fonctionnalité. Lorsque l’on modifiera ces tables. bien que puissante.10.org.29/ $ .

‘canreinvite‘ char(3) default ’yes’.0.‘rtpholdtimeout‘ char(3) default NULL. ‘permit‘ varchar(95) default NULL.‘callerid‘ varchar(80) default NULL. il on copie ces 2 fichiers : # cp res_config_mysql. .‘port‘ varchar(5) NOT NULL default ’’.‘language‘ char(2) default NULL. ‘qualify‘ char(3) default NULL. ‘accountcode‘ varchar(20) default NULL. ‘fullcontact‘ varchar(80) default NULL.conf : # cat /etc/asterisk/res_mysql. ‘defaultip‘ varchar(15) default NULL.‘context‘ varchar(80) default NULL.‘name‘ varchar(80) NOT NULL default ’’.conf. ‘pickupgroup‘ varchar(10) default NULL.‘md5secret‘ varchar(80) default NULL. ‘fromuser‘ varchar(80) default NULL. ‘callgroup‘ varchar(10) default NULL.5 Migration du fichier sip. On entre la requete SQL suivante à l’aide du client mysql en ligne de commande ou au travers d’une interface web de type phpmyadmin : CREATE DATABASE ‘asterisk‘ .conf En premier lieu il est nécessaire de créer la base ’asterisk’ dans MySQL.‘mask‘ varchar(95) default NULL.‘restrictcid‘ char(1) default NULL.conf Les paramètres de connexion d’Asterisk à MySQL sont définis dans le fichier res_mysql.4 Configuration initiale Une fois la compilation effectuée.1 dbname = asterisk dbuser = root dbpass = motdepassemysql dbport = 3306 4. Puis on crée la table ’sip’ : mysql>CREATE TABLE ‘sip‘ ( ‘id‘ int(11) NOT NULL auto_increment.conf [general] dbhost = 127.‘fromdomain‘ varchar(80) default NULL.4.‘dtmfmode‘ varchar(7) default NULL.‘deny‘ varchar(95) default NULL. ‘mailbox‘ varchar(50) default NULL. ‘nat‘ varchar(5) NOT NULL default ’no’. ‘insecure‘ varchar(4) default NULL.so /usr/lib/asterisk/modules/ # cp configs/res_mysql.0. ‘rtptimeout‘ char(3) default NULL.sample /etc/asterisk/res_mysql.‘amaflags‘ varchar(13) default NULL.‘host‘ varchar(31) NOT NULL default ’’.

secret from sip.sip’ >> /etc/asterisk/extconfig.host.’secret’).‘secret‘ varchar(80) default NULL. 4. Cela permet d’affecter des valeurs par défaut sur certains champs.type. ‘allow‘ varchar(100) default ’g729.conf On crée la table SQL ’extensions’ : .asterisk. il ira chercher les données des comptes SIP dans la table sip de MySQL en complément du fichier sip.‘regseconds‘ int(11) NOT NULL default ’0’.alaw’. UNIQUE KEY ‘name‘ (‘name‘). Pour vérifier.username.username. ‘username‘ varchar(80) NOT NULL default ’’.‘regexten‘ varchar(80) NOT NULL default ’’.conf : # echo ’sipusers => mysql. ‘cancallforward‘ char(3) default ’yes’. La requête est intentionellement lourde pour avoir tous les champs disponibles dès le départ. On se connecte sur la base asterisk : $ mysql asterisk -u root -p On regarde les champs précédemments remplis : mysql>select name. On va créer un compte avec cette requête : mysql>insert into sip (name. ‘ipaddr‘ varchar(15) NOT NULL default ’’.secret) values (’android1’.conf. et d’avoir les autres déjà prêts pour plus tard. Il suffit d’ajouter ces 2 lignes à la fin du fichier extconfig.‘setvar‘ varchar(100) NOT NULL default ’’.’dynamic’.type. au cas où.’friend’.‘disallow‘ varchar(100) default ’all’. on va spécifier à Asterisk d’aller chercher les paramètres SIP dans MySQL.conf # echo ’sippeers => mysql. +----------+--------+---------+----------+--------+ | name | type | host | username | secret | +----------+--------+---------+----------+--------+ | android1 | friend | dynamic | AndroidM | secret | +----------+--------+---------+----------+--------+ Enfin. KEY ‘name_2‘ (‘name‘) ) TYPE=MyISAM ROW_FORMAT=DYNAMIC.6 Migration du fichier extension.conf Au prochain redémarrage d’Asterisk. on va utiliser le CLI de MySQL.host. ‘musiconhold‘ varchar(100) default NULL.ulaw.gsm.’AndroidM’.sip’ >> /etc/asterisk/extconfig.‘type‘ varchar(6) NOT NULL default ’friend’. PRIMARY KEY (‘id‘).asterisk.ilbc.

les extensions seront chargées à partir de la table MYSQL ’asterisk’.priority. il faut rajouter une ligne à extconfig. ‘app‘ varchar(20) NOT NULL default ’’.exten.‘exten‘. ‘context‘ varchar(20) NOT NULL default ’’.’SIP/android1’).mysql>CREATE TABLE ‘extensions‘ ( ‘id‘ int(11) NOT NULL auto_increment. +---------+-------+----------+------+--------------+ | context | exten | priority | app | appdata | +---------+-------+----------+------+--------------+ | default | 18 | 1 | Dial | SIP/android1 | +---------+-------+----------+------+--------------+ La structure est quasiemment identique au fichier extensions. ‘appdata‘ varchar(128) NOT NULL default ’’.conf.config une ligne renvoyant vers la base SQL : # echo ’switch => Realtime’ >> /etc/asterisk/extensions.’18’.’Dial’.conf Enfin.conf. On renseigne cette table avec un numéro de téléphone associé au compte SIP précédemment créé : mysql> insert into extensions (context.asterisk.priority.exten. Comme précédemment. KEY ‘id‘ (‘id‘) ) TYPE=MyISAM.extensions’ >> /etc/asterisk/extconfig. en complément du fichier extensions. On vérifie à l’aide de la requête suivante : mysql> select context.appdata) values (‘default’.app.conf Au prochain redémarrage d’Asterisk.‘priority‘).’1’. il faut rajouter à la fin de extensions. ‘exten‘ varchar(20) NOT NULL default ’’.appdata from extensions. . ‘priority‘ tinyint(4) NOT NULL default ’0’. PRIMARY KEY (‘context‘.conf pour dire à Asterisk d’aller chercher les extensions dans MySQL : # echo ’extensions => mysql.app.

Sign up to vote on this title
UsefulNot useful