Académique Documents
Professionnel Documents
Culture Documents
Depuis 1999, la tlphonie d'entreprise vit une rvolution numrique, grce notamment au dveloppement d'un fantastique programme, appel 'Asterisk'. Asterisk est un programme qui permet de crer et dployer une plate-forme logicielle de tlphonie sur IP, sur un serveur fonctionnant sous GNU/Linux. Avec Asterisk on peut crer un vritable autocommutateur priv de tlphonie sur IP (PABX IP). Le programme Asterisk existe en version libre et gratuite (Open source), soumis a licence GPL mais galement en version propritaire.
Mais au fait, qu'est ce qu'un PABX ? Un PABX est un commutateur d'appels tlphonique priv, souvent nomm 'auto commutateur' ou 'autocom'.
P.A.B.X. signifie littralement: Private Automatic Branch eXchange. Il sagit dun quipement matriel assurant la fonction de central de tlphonie, dont les rles essentiels sont les suivants :
Distribuer les appels tlphoniques entrants. Transmettre les appels tlphoniques sortants. Grer les terminaux tlphoniques. Fournir les fonctionnalits ou options (mise en garde, attente, transfert, ...).
Asterisk offre toute les fonctionnalits permettant de dployer un PABX IP complet et volutif, sur un PC quip de GNU/Linux.
Prise en main d'Asterisk - v13032 Jean GAUTIER 1
L'histoire d'Asterisk commence en 1999 avec le jeune Amricain 'Mark Spencer', alors tudiant l'universit d'Auburn en Alabama, dveloppa le programme 'Asterisk'. Grce aux diffrents modules et interfaces disponibles, Asterisk permet de s'interfacer et sintgrer dans tout environnement existant. Asterisk prend en charge les principaux Codec et protocoles utiliss en tlphonie, ce qui garanti une parfaite interoprabilit avec d'autre quipements et logiciels.
Le dveloppeur d'Asterisk, Mark Spencer, est galement connu pour tre le crateur du logiciel de messagerie instantane GAIM. Aprs avoir dvelopp le programme Asterisk, Mark Spencer cr la socit 'Digium' qui maintien le code source Asterisk et distribue des quipements et cartes d'interfaces PC pour la tlphonie analogique et numrique.
1. Une version Open Source diffuse en licence GPL. 2. Une version commerciale et propritaire en licence Business Edition / OEM.
Il existe galement un certain nombre dadaptations du serveur Asterisk, plus ou moins russies, qui permettent de configurer cl en main, un IPBX. Je citerai la plus connue: FreePBX (anciennement ' Asterisk@home'), qui intgre une interface graphique de configuration permettant de dployer facilement et rapidement un IPBX cl en mains. En 2010, Digium labore un nouveau programme autour d'Asterisk, afin d'offrir une solution cl en main, facilement installable et configurable, "Switchvox".
Jean GAUTIER
Fonctionnalits
Asterisk permet de constituer des solutions compltes de tlphonie interfaant la tlphonie traditionnelle analogique ou numrique et la tlphonie GSM sur la tlphonie sur IP. L'IPBX peut exploiter aussi bien les protocoles H.320, H.323, MGCP, SIP ainsi qu'un protocole propritaire destin l'interconnexion d'IPBX, Inter Asterisk eXchange ou "IAX". Avec l'utilisation de cartes d'interfaces aux rseaux et quipements de tlphonie traditionnels, (FXO, FXS et RNIS), Asterisk permet de remplacer totalement un PABX propritaire en y ajoutant de riches fonctionnalits de VOIP. Asterisk offre des fonctionnalits de messagerie vocale, confrence, serveurs vocaux, distribution des appels, et en ralit, une 'presque' infinit d'applications possibles.
Asterisk peut tre configur en tant que 'registrar' et passerelle vers d'autres rseaux tlphoniques et permet de faire communiquer des ordinateurs et des tlphones travers Internet ou tout autre rseau IP.
Le serveur Asterisk peut tre quip d'une carte lui permettant d'tre connect aux diffrents rseaux tlphoniques (RTC, RNIS et GSM).
1. Connexion vers un rseau tlphonique analogique : interface FXO 2. Connexion vers des tlphones analogiques : interface FXS 3. Connexion d'quipements numriques : interface BRI 4. Connexions vers des accs primaires : E1, T1,... (PRI)
Jean GAUTIER
Digium, la socit de Mark Spencer, propose diffrentes cartes d'interface, fonction de l'installation mettre en place. Par exemple, la carte 'TDM400P' offrant deux entres lignes standards (FXO), et deux sorties vers des tlphones analogique (FXS).
Les termes FXS et FXO dsignent les ports utiliss pour interfacer les quipements de ToIP aux quipements et lignes analogiques.
FXS signifie 'Foreign eXchange Subscriber' et permet de raccorder un quipement analogique au PABX IP. FXO signifie 'Foreign eXchange Office' et permet de raccorder le PABX IP la ligne analogique de labonn.
Installation d'Asterisk
Idalement, l'installation se fait sur une machine Linux ddie, configure sous GNU Linux Debian, Ubuntu ou Fedora et optimise pour fonctionner en mode serveur.
Pour l'installation, je vous suggre de respecter la procdure dtaille fournie en annexe 4, afin de pouvoir facilement et pleinement exploiter votre serveur IPBX.
Jean GAUTIER
Pour dmarrer manuellement le programme Asterisk, on peut utiliser : /usr/sbin/asterisk ou bien la commande habituelle : /etc/init.d/asterisk start
Ici, on peut voir les ports 4569 et 5060 qui correspondent aux protocoles SIP et IAX.
Jean GAUTIER
Voici quelques commandes essentielles en mode CLI CLI> sip show users CLI> sip show peers pour voir les utilisateurs SIP pour voir les quipements SIP
CLI> sip show channel pour voir les canaux SIP CLI> stop gracefully CLI> reload pour arrter le serveur. pour recharger Asterisk.
Jean GAUTIER
Configuration Asterisk
La configuration Asterisk repose sur plusieurs fichiers de configuration, situs dans le dossier '/etc/asterisk'.
Dans les fichiers de configuration, il est conseill (mais pas toujours obligatoire) d'utiliser des minuscules pour les dclarations, actions et options et des MAJUSCULES pour dfinir et utiliser les variables.
Il n'est pas ncessaire de mettre des espaces dans les dclarations. Attention Commenter vos fichier mais n'utilisez pas le sigle '#' qui serait interprte comme la touche '#' du clavier d'un tlphone ! Toute la configuration d'un PABX s'appuie sur une organisation, appele 'DialPlan'.
Le DialPlan est le plan de numrotation, o toutes les rgles de fonctionnement du PABX sont dfinies.
Le plan de numrotation est organis en contextes de travail. Chaque contexte comprend les commandes ou actions raliser, range dans un ordre chronologique. On appelle ces actions, des ''extensions''.
Jean GAUTIER
Les contextes agissent comme des zones permettant de sparer les sources d'appels, les modes de rponses ou les traitements effectuer. Chaque extension permet de mettre en relation une source (ligne, tlphone IP, softphone, etc) vers une destination, en fonction de conditions et d'options.
Les sources sont dfinies dans diffrents fichiers de configuration selon les protocoles utiliss (mgcp.conf, iax.conf, sip.conf, zapata.conf).
Par exemple, un tlphone utilisant le protocole 'sip' sera dfini dans le fichier 'sip.conf' alors qu'un tlphone utilisant le protocole 'iax' sera dfini dans le fichier 'iax.conf'.
Le fichier 'asterisk.conf'
Ce fichier dfinit les chemins d'accs aux donnes ncessaires Asterisk.
astetcdir => /etc/asterisk astmoddir => /usr/lib/asterisk/modules astvarlibdir => /var/lib/asterisk astagidir => /var/lib/asterisk/agibin astspooldir => /var/spool/asterisk astrundir => /var/run/asterisk astlogdir => /var/log/asterisk Il est rarement ncessaire de le modifier
Jean GAUTIER
Le fichier 'sip.conf'
Le fichier sip.conf permet la dclaration des quipements et sources de connexions, utilisant le protocole SIP. Exemple
[general] port = 5060 context=labo [toto] username=toto type=friend host=dynamic callerid="toto" <201>
La directive 'context = xxxx' permet de dfinir le contexte dans lequel l'quipement est dfinit. Cette notion est trs importante car elle servira retrouver l'quipement depuis le fichier "extensions.conf". Exemple de configuration
Dans cet exemple, les postes tlphoniques utilisent une adresse IP dynamique (obtenue par dhcp). La directive 'callerid' indique le nom de lutilisateur et son extension au format RFC822, permettant d'afficher le nom de l'appelant sur l'cran du poste appel, lors d'un appel.
Le fichier 'sip.conf' dbute toujours par un bloc de dclaration gnrales, appel '[general]'. Le fichier est ensuite dcoup en contextes permettant d'isoler les dclarations des diffrents postes et lignes.
Jean GAUTIER
Exemple
[general] language = fr context=labo [101] username=101 secret = poseidon type=friend host=dynamic callerid="Dupont Patrick" <101> [secretaire] username=secretaire secret = poseidon type=friend host=dynamic callerid="Secretaire" <102> une autre faon de dfinir un poste dclare le contexte utilis par dfaut correspond au nom d'un poste tlphone (ou d'une ligne)
Ici, avec le nom du compte '101', c'est 'Dupont Patrick <101>' qui apparatra sur l'cran du tlphone appel . L'ide est ici d'affecter Patrick Dupont, le numro de poste ''101''. Le [101] n'est pas forcment un numro, on peut parfaitement utiliser un nom, comme c'est le cas avec [secretaire]. La directive 'type' reprsente le mode de fonctionnement du client, peer, user ou friend : peer est un client autoris recevoir des appels user est un client autoris passer des appels friend est la fois 'peer' et 'user'
La directive 'username' est l'identifiant du compte (son 'login' ou 'id'). La directive 'secret' est le mot de passe du compte. La directive 'host' indique la mthode pour trouver le client (IP dynamique, nom d'hte ou IP statique). La directive 'callerid' donne l'identit de l'utilisateur qui s'affichera sur les crans des tlphones appels. La directive 'language' dfinie la langue a exploiter par dfaut quand un fichier son est utilis.
Prise en main d'Asterisk - v13032 Jean GAUTIER 10
Jean GAUTIER
11
Le fichier 'iax.conf'
Le fichier iax.conf concerne les quipements ou sources de connexions qui se connectent en utilisant le protocole IAX. Iax.conf est assez similaire au fichier sip.conf.
Exemple
[general] context=defaut [555] username=555 type=friend host=dynamic callerid="toto" <555>
Dans cet exemple de configuration, les postes doivent utiliser une adresse IP dynamique. (configurs en client dhcp)
La directive 'callerid' indique le nom de lutilisateur et son extension au format RFC822. Le nom ainsi dfinit, s'affichera sur l'cran du poste appel, lors d'un appel.
Jean GAUTIER
12
Comme je vous le disais prcdemment, le fichier 'extension.conf' constitue ce que l'on appelle de DialPlan ou plan de numrotation.
Chaque extension du plan de numrotation va tre interprte et achemine vers les canaux dfinis dans les sections des fichiers sources (sip.conf, iax.conf, ...). Une extensions correspond a une ou plusieurs actions. Les actions sont effectues les unes la suite des autres, par ordre de priorit. Les extensions sont dfinies sous la forme: exten => 101,1,action N1,option exten => 101,2,action N2,option exten => 101,3,action N3,option
Le DialPlan va permettre de dterminer quelle est l'action raliser en fonction de l'extension appele. A chaque appel reu, Asterisk examine quel contexte appartient l'appelant et vrifie sil peut atteindre le destinataire demand. Si c'est le cas, Asterisk excute l'action correspondant la priorit numro 1.
La priorit est le numro situ aprs l'extension. On doit toujours commencer par le numro de priorit '1'.
Par exemple, que va faire 'Asterisk' quand un appel entrant cherche joindre le numro '102' ?
Jean GAUTIER
13
Exemple :
exten => 102,1,Answer exten => 102,2,Dial(SIP/secretaire,15) exten => 102,3,Hangup
Ici, a priorit 1 correspond l'instruction "Answer" qui permet de prendre l'appel en compte et d'ouvrir le canal. Une fois le canal ouvert, Asterisk passera linstruction suivante, 102,2 pour effectuer l'action: Dial(SIP/secretaire,15). Lorsque l'appel sera termin, Asterisk va raccrocher et librer le canal, grce la fonction 'Hangup'.
Dans l'exemple prcdent, quand un appel entrant cherche joindre le poste 102, Asterisk va rechercher dans le fichier sip.conf, le poste nomm [secretaire] pour le faire sonner pendant 15 secondes avant de raccrocher si personne ne prend l'appel.
Jean GAUTIER
14
Les contextes sont souvent utiliss pour crer des menus vocaux qui donnent lappelant le choix parmi une liste dextensions possibles en pressant sur une touche du clavier du tlphone. Cette fonctionnalit est appele rception automatique.
Les contextes sont dfinis par un nom lintrieur de crochets, il s'agit d'un simple label qui permettra d'organiser les instructions et structurer le plan de numrotation.
Par exemple:
[repondeur] ou [appels-internes].
Toutes les instructions places aprs une dfinition de contexte feront partie de ce contexte.
Jean GAUTIER
15
Les extensions
A l'intrieur d'un mme contexte, on peut dfinir une suite d'actions raliser, sous forme d'une squence :
Les actions sont dfinies ligne par ligne, la premire porte le numro '1'. Le numro d'action s'appelle la priorit.
Exemple
exten => 101,1,Answer exten => 101,2,Dial (SIP/101,15) exten => 101,3, Hangup
La commande 'exten =>' indique que la prochaine action est une commande. Ici, '101' est le code de l'extension, les chiffres 1, 2 et 3 reprsentent la priorit d'excution des commandes, c'est dire le numro d'action raliser.
Jean GAUTIER
16
Le poste tlphonique (ou tout autre source) est le client, le serveur "Asterisk" joue le rle de serveur.
Asterisk est ainsi l'coute permanente des clients en scrutant les demandes mises par les postes et/ou les lignes tlphoniques.
Si un client envoie une requte au serveur, ce dernier recherche l'action correspondante et tente de la raliser.
Par exemple, si un utilisateur compose le numro 100 au clavier d'un poste, Asterisk recherchera l'extension qui porte le numro 100 dans le contexte dans lequel se trouve l'appelant.
Si l'extension est trouv, les diffrentes commandes seront droules suivant l' ordre chronologique du numro de priorit, en premier la priorit N1, ensuite la priorit N2 et ainsi de suite. L'information qui suit le code de priorit reprsente l'action effectuer, ou autrement dit, la commande. L'action est parfois suivie d'options dfinies entres parenthses.
Jean GAUTIER
17
Exemple
Dans cet exemple, si un poste compose le N103, Asterisk effectuera la commande 'Dial' afin de faire sonner le poste dclar sous le nom ''[jean]'', dans le fichier ''sip.conf''.
Aprs 20 secondes, si personne n'a rpondu, Asterisk raccrochera la ligne avec la commande 'Hangup'.
Attention Pour simplifier les mises jours du DialPlan, on peut utiliser la lettre 'n', pour 'Next' en lieu et place du numro de priorit. Il faut cependant toujours commencer par dfinir la priorit 1
exten => 103,1,Answer exten => 103,n,Dial (sip/jean,20) exten => 103,n,Voicemail(103@defaut) exten => 103,n,Hangup
Jean GAUTIER
18
Les applications
Les applications effectuent certaines actions sur un canal donn. Les principales applications sont : Answer Playback Hangup Background Goto
L'application 'Answer' Lapplication Answer permet de prendre en compte l'appel entrant. Il s'agit gnralement de l'action initiale.
L'application 'Playback' Lapplication Playback est utilise pour faire entendre un message sonore pr-enregistr l'appelant. Cette application empche l'analyse des actions utilisateurs, c'est dire que rien de ce qui serait tap au clavier par l'appelant ne sera pris en compte durant la dure de lecture du fichier. On utilise 'Playback' pour faire entendre un message d'accueil ou publicitaire lors de la rception d'appels, par exemple.
L'application 'Hangup' Lapplication Hangup permet de raccrocher la ligne. Il s'agit gnralement de l'action terminale de traitement d'appel qui libre le canal.
L'application 'Background' Lapplication Background permet d'introduire l'interactivit. Elle fonctionne comme l'application Playback mais donne la possibilit l'appelant d'appuyer sur une touche du clavier de faon 'sauter' directement vers linstruction correspondant au code mis par la touche presse.
Prise en main d'Asterisk - v13032 Jean GAUTIER 19
L'application 'Goto' Lapplication Goto permet de sortir du traitement en cours pour aller directement vers un point spcifi, soit dans le mme contexte ou soit dans un autre contexte, la manire d'un renvoi vers un sous programme.
Exemple de traitement standard Asterisk Lorsqu'un appel arrive dans ce contexte, il est trait comme ceci : Answer : Prend le contrle de la ligne et dmarre lappel. Playback ou Background : Fait entendre l'appelant un message. Hangup : Raccroche la ligne et libre le canal.
Un fichier son, appel 'accueil', sert de message d'accueil gnral pour tout appel entrant. Ce fichier contient un message qui demande au correspondant de presser la touche '1' pour aller dans le menu N1 ou la touche '2' pour aller dans le menu N2. Les messages sonores des menus 1 et 2 sont respectivement les fichiers 'message1' et 'message2'.
[interne] exten => s, 1,Answer exten => s, 2,Background(accueil) exten => s, 3,Wait(10) exten => s, 4,Goto(interne,s,2) exten => 1, 1,Playback(message1) exten => 1, 2,Hangup exten => 2, 1,Playback(message2) exten => 2, 2,Hangup
Quand lappel est intercept, Asterisk excute linstruction 's' avec la priorit 1.
Jean GAUTIER
20
Notez Bien L'extension 's' est spciale, elle signifie 'start'. Tout appel ne ciblant pas un numro prcis est systmatiquement trait par l'extension 's'. Elle permet de traiter tout ce qui arrive dans un contexte, L'extension 's' est trs utilise pour capturer tout ce qui arrive dans un contexte suite un 'Goto'.
1. Si lutilisateur presse la touche 1 pendant le droulement du message d'accueil, Asterisk cherchera l'extension qui correspond '1' dans le contexte [interne]. L'appelant entendra alors le fichier son 'message1'.
2. Ensuite, l'extension 'exten => 1, 2, Goto (interne,s,1) sera excute, ce qui ramnera au dbut du traitement dans le contexte [interne]. Ici, l'extension 'Goto()' permet denvoyer l'appelant la premire priorit de lextension 's' du contexte 'entrant'.
3. Si lappelant ne presse aucune touche, la troisime priorit sera excute ds que la lecture du message d'accueil sera termine, raccrochant ainsi la ligne grce l'application 'Hangup'.
Jean GAUTIER
21
Dans l'exemple prcdent, je vous explique le fonctionnement d'un 'mini rpondeur vocal interactif'. Ce rpondeur est souvent dsign par l'acronyme 'IVR' pour 'Interactive Voice Response' ou 'serveur vocal interactif'.
Dans mon exemple, on traite l'appui sur la touche 1 et la touche 2, mais, ni les erreurs et ni les oublis ! Pour remdier cela, Asterisk prvoit deux nouvelles extensions.
Asterisk a prvu une extension spciale pour le traitement des entres invalides. Cette extension s'appelle 'i' pour 'invalid'.
Dans l'exemple, si l'appelant se trompe de touche et appuie sur la touche '4', Asterisk serait 'plant, aucune extension '4' ntant dfinie dans le contexte courant. Grce l'extension 'i', Asterisk excutera l'action correspondant 'i', s'il ne trouve pas '4'. De la mme manire, il existe galement une extension spciale prvue pour le traitement de dlai d'entre dpass, nomme 't' pour 'Timeout'. Si l'appelant ne fait aucun choix dans le dlai imparti (10 secondes par dfaut), l'appel est alors redirig vers lextension 't'.
Jean GAUTIER
22
Exemple Dans cette exemple, nous ajoutons le prise en compte des erreurs et oublis.
[interne] exten => s,1,Answer exten => s,2,Background(accueil) exten => s,3,WaitExten(10) exten => 1,1,Playback(message1) exten => 1,2,Goto(interne,s,2) exten => 2,1,Playback(message2) exten => 2,2,Goto(interne,s,2) exten => i,1,Playback(invalide) exten => i,2,Goto(interne,s,2) exten => t,1,Playback(pascompris) exten => t,2,Goto(interne,s,2)
Dans cette exemple, si l'appelant se trompe de numro, il entendra le fichier son 'invalide' et si il oublie de choisir un numro, il entendra le fichier son 'pascompris'.
L'application Dial()
L'application 'Dial' est l'application cl d'Asterisk puisque elle permet d'atteindre un poste en composant son numro.
Dial sert tablir une liaison avec le canal correspondant et peut prendre en compte jusqu 4 arguments.
Pour renvoyer un appel vers un poste tlphonique, il faut associer un numro au poste. Quand quelqu'un composera ce numro, l'appel vers le poste sera dclench par Asterisk.
Jean GAUTIER
23
Exemple 1
exten => 101,1,Dial(SIP/101)
Ici, si quelqu'un compose le numro '101', Asterisk renverra l'appel vers le poste [101] dfini dans le fichier sip.conf.
Exemple 2
exten => 102,1,Dial(SIP/jean)
Ici, si quelqu'un compose le numro '102', Asterisk renverra l'appel vers le poste [jean] dfini dans le fichier sip.conf.
Exemple 3
exten => 123,1,Dial(SIP/101&IAX/102&ZAP/103)
Ici, les postes correspondant aux canaux SIP 101, IAX102 et ZAP 103 sonneront ensemble quand quelqu'un composera le N 123.
Lapplication 'Dial' permet de spcifier un dlai (en secondes). Dial() attendra la fin de ce dlai avant dabandonner et passer la priorit suivante.
Si aucun dlais n'est spcifi, l'application 'Dial' continuera de chercher atteindre le canal jusqu ce quelquun rponde ou bien que lappelant raccroche.
Jean GAUTIER
24
Exemple 4
exten => 101,1,Dial(SIP/101,20) exten => 101,2,Hangup
Ici, si quelqu'un compose le numro '101', Asterisk renverra l'appel vers le poste [101] dfini dans le fichier sip.conf pour le faire sonner pendant 20 secondes. Au bout des 20 secondes, Asterisk raccroche et libre le canal.
Avec Asterisk, il existe une extension particulire qui ragit en cas de ligne occupe. Asterisk analyse les canaux et dtecte si un canal est libre ou occup.
Si un canal de destination est occup, l'application 'Dial' tentera alors d'atteindre la priorit n+101 (o n correspond la priorit de dpart de l'instruction.) Ceci permet de rediriger les appels non rpondu avec un traitement diffrent des appels vers les destinations occupes.
Attention: Pour que cette extension fonctionne, il faut que la directive 'priorityjumping=yes' soit dclare dans la rubrique [general] de extensions.conf.
Jean GAUTIER
25
Exemple
[general] priorityjumping=yes [labo] exten => 100,1,Dial(SIP/jean,10) exten => 100,2,Dial(sip/jean,10) exten => 100,3,Hangup() exten => 100,103,Playback(enligne) exten => 100,104,Hangup()
Si jean est absent, Asterisk raccroche la canal au bout de 10 secondes. Par contre, si jean est dj en ligne, Asterisk jouera le fichier son 'enligne' l'appelant, avant de raccrocher. En effet, 103 = 2+101.
Jean GAUTIER
26
Jean GAUTIER
27
De manire similaire, pour exploiter la Voix sur IP via Internet, on doit souscrire un abonnement auprs d'un fournisseur de service VoIP qui permettra d'acheminer les communications vers les diffrents oprateurs (fixes et mobiles).
Pour atteindre un poste situ sur un autre rseau que celui sur lequel se trouve notre serveur, deux cas de figures:
1. Soit le poste du correspondant est inscrit sur notre serveur, via un accs distant. 2. Soit le poste du correspondant n'est pas connu et donc, non inscrit, sur notre serveur.
Dans le premier cas, rien faire de particulier, si ce n'est rflchir et mettre en place des paramtres de scurisation.
Dans le deuxime cas, notre serveur doit passer par un service oprateur de tlphonie sur IP qui jouera le rle d'intermdiaire entre notre systme et le poste du correspondant.
Notre serveur devient un client de cet oprateur et doit donc s'inscrire comme un poste normal. L'inscription consiste fournir un identifiant de compte SIP associ a un ou plusieurs numros d'appels.
Ainsi, tous les appels correspondant au numro que notre oprateur nous fournit, sont envoys vers notre adresse IP et 'capts' par notre serveur Asterisk.
Jean GAUTIER
28
Les oprateurs de VoIP sont connects sur les diffrents rseaux des oprateurs via des passerelles.
Lorsque nous souscrivons un abonnement auprs d'un oprateur, nous pouvons alors bnficier de son infrastructure et passer des appels vers des postes fixes, mobiles, en France ou ltranger. Cela est similaire la souscription d'un abonnement ADSL.
La plupart des oprateurs de tlphonie sur IP proposent des comptes SIP appels 'trunk SIP'. Il s'agit de comptes accessibles via le rseau Internet.
Un trunk correspond en quelques sortes a une ligne tlphonique qui permet de grouper plusieurs appels sur un mme canal.
Le trunk permet n'importe quel tlphone d'appeler un correspondant extrieur. Les appels de l'extrieur et la redirection vers un service interne (poste, messagerie, attente, etc) sont bien videment, galement possibles.
Jean GAUTIER
29
Exemple
register => 0872123456:poseidon@prestataire.fr /numro
Ici, la fonction "register" permet d'enregistrer le serveur Asterisk chez l'oprateur 'prestataire.fr' avec le login '0872123456' et le mot de passe 'poseidon'.
Jean GAUTIER
30
Variables prdfinis
Dans le but de simplifier la configuration du DialPlan, Asterisk dispose d'un certain nombre de variables. Une variable est toujours exprime en MAJUSCULES. Pour appeler une variable, on utilise la syntaxe suivante: ${NomDeLaVariable} Le nom est en Majuscules
Voici quelques variables intressantes, utilisables dans le plan de numrotation (extensions.conf). Il est galement possible de dfinir ses propres variables:
: Numro de l'appelant : Nom de l'appelant : Nom et numro de l'appelant : Contexte courant lors de l'appel cette variables : Date et heure courants en format AAAAMMJJHHMMSS : Numro de l'extension courante : Numro de l'extension courante avec N caractres en moins
Jean GAUTIER
31
Pour indiquer Asterisk de ne pas tenir compte de ces derniers en tant qu'extension, il faut les prcder d'un underscore (_).
Les motifs : X (en majuscule) reprsente tout chiffre de 0 9 Z (en majuscule) reprsente tout chiffre de 1 9 N (en majuscule) tout chiffre de 2 9 [135] reprsente un chiffre parmi ceux entre crochets [1-4] reprsente un chiffre compris entre 1 et 4 . ''point'' reprsente un ou plusieurs caractres.
On peut reprsenter les appels vers l'tranger par ''_00.'' On peut reprsenter les appels en rgion parisienne par ''_01. '' ou ''_01XXXXXXXX''
Exemple 1
exten => _1XX,1,Answer exten => _1XX,2,Dial(SIP/${EXTEN},15,r) exten => _1XX,3,Hangup
Ici on intercepte tout appel dont le numro est compos de trois chiffres, et dont le premier chiffre est '1'. Avec le motif '1XX' Asterisk traite tout appel vers les numros de 100 199.
Jean GAUTIER
32
Exemple 2
exten => _0XXXXXXXXX,1,Dial(SIP/${EXTEN}@sortant) exten => _0XXXXXXXXX,2,Hangup
Ici tout appel vers un numro de 10 chiffres, commenant par '0' sera compos en utilisant le canal de sortie '[sortant]' dfini dans le fichier 'sip.conf'. Exemple 3
exten => _06XXXXXXXX,1,Dial(SIP/${EXTEN}@operateur) exten => _06XXXXXXXX,2,Hangup
Ici on traite tout appel vers un numro de portable GSM commenant par 06.
Exemple 4 Dans l'exemple suivant, c'est le filtre 'CALLERID(num)' qui est utilis. Le DialPlan renvoie tout appel en provenance du numro 0141261234 vers le fichier son 'nondispo' puis raccroche. Tout autre appel est dirig vers le fichier son 'accueil'.
exten => s,1,GotoIf($[${CALLERID(num)}=0141261234]?20:10) exten => s,10,Backround(accueil) ../.. exten => s,20,Background(nondispo) exten => s,21,Hangup(
Le numro de priorit '20' est utilis quand la condition est vrifie et le numro '10', dans le cas contraire.
Jean GAUTIER
33
Jean GAUTIER
34
Jean GAUTIER
35
Exemple 2 - Deux postes en interne, un trunk oprateur SIP Dans cet exemple, on configure un IPBX Asterisk pour grer deux tlphones.
Les appels sont orients vers un menu invitant appuyer sur 1 pour joindre 'Pierre' et '2' pour joindre 'Marie'. Les appels vers les portables et les numros commenant par '089' ncessitent un mot de passe. Les appels vers les numros spciaux '0836' seront impossibles. Si un poste rpond pas, l'appelant peut laisser un message dans la boite vocale.
Fichier sip.conf
[general] context=labo bindport=5060 language=fr allow=alaw register => jean:poseidon@xyz/0141231234 [operateur] type=peer nat=yes host=xyz username=jean fromuser=jean secret=poseidon fromdomain=xyz [pierre] host=dynamic type=peer username=pierre callerid=pierre <101> mailbox=pierre@labo
Jean GAUTIER
36
Fichier extensions.conf
[general] static=yes [labo] include=interne include=sortant exten => s,1,Answer exten => s,n,Background(accueil) exten => s,n,WaitExten() exten => s,n, Goto(labo,s,2) exten => 1,1,Goto(interne,101,1) exten => 2,1,Goto(interne,102,1) exten => i,1,Playback(numeroIncorrect) exten => i,2,Goto(labo,s,2) exten => t,1, Goto(labo,s,2) permet d'inclure le contexte [interne] permet d'inclure le contexte [sortant] rpond l'appel fait entendre le message d'accueil attend le temps de la temporisation retourne au message d'accueil si appui sur 1, va l'extension 101,1 si appui sur 2, va l'extension 102,1 au cas ou choix autre que 1 ou 2 retourne au message d'accueil retourne au message d'accueil
[interne] exten => 101,1,Dial(sip/pierre,15) exten => 101,2,Voicemain(101@labo) exten => 101,3,Hangup exten => 102,1,Dial(sip/marie,15) exten => 102,2,Voicemain(102@labo) exten => 102,3,Hangup
Jean GAUTIER
37
[sortant] ;Appel vers les poste fixes exten => _0XXXXXXXXX,1,Dial(SIP/${EXTEN}@operateur) exten => _0XXXXXXXXX,n,Hangup ;Appel vers les portables, avec mot de passe '1234' exten => _06XXXXXXXX,1,Authenticate(1234) exten => _06XXXXXXXX,n,Dial(SIP/${EXTEN}@operateur) exten => _06XXXXXXXX,n,Hangup ;Appel vers les numeros spciaux , avec mot de passe '1234' exten => _089.,1,Authenticate(1234) exten => _089.,n,Dial(SIP/${EXTEN}@trunk-xyz) exten => _089.,n,Hangup exten => _0836.,1,Playback(numero-interdit) exten => _0836.,2,Hangup exige le code pin '1234' compose le numro demand au travers du trunk [operateur]
Fichier voicemail.conf
[labo] 101 => 1234 101 => 1234
Jean GAUTIER
38
realtime update - Used to update RealTime variables. restart gracefully - Restart Asterisk gracefully restart now - Restart Asterisk immediately restart when convenient - Restart Asterisk at empty call volume sla show - Show status of Shared Line Appearances soft hangup - Request a hangup on a given channel stop gracefully - Gracefully shut down Asterisk stop now - Shut down Asterisk immediately stop when convenient - Shut down Asterisk at empty call volume stun debug - Enable STUN debugging stun debug off - Disable STUN debugging udptl debug - Enable UDPTL debugging udptl debug ip - Enable UDPTL debugging on IP udptl debug off - Disable UDPTL debugging Exit: Quitte Asterisk. Quit: Quitte Asterisk. Extensions reload: Recharge les extensions. Reload: Recharge la configuration. Help Display: Affiche laide sur Asterisk.
Les commandes AEL ael debug contexts - Enable AEL contexts debug (does nothing) ael debug macros - Enable AEL macros debug (does nothing) ael debug read - Enable AEL read debug (does nothing) ael debug tokens - Enable AEL tokens debug (does nothing) ael nodebug - Disable AEL debug messages ael reload - Reload AEL configuration Agents commands
Jean GAUTIER
40
agent logoff - Sets an agent offline agent show - Show status of agents agent show online - Show all online agents
agi debug - Enable AGI debugging agi debug off - Disable AGI debugging agi dumphtml - Dumps a list of agi commands in html format agi show- List AGI commands or specific help dnsmgr reload - Reloads the DNS manager configuration dnsmgr status - Display the DNS manager status http show status - Display HTTP server status
Les commandes console console active - Sets/displays active console console answer - Answer an incoming console call console autoanswer - Sets/displays autoanswer console boost - Sets/displays mic boost in dB console dial - Dial an extension on the console console flash - Flash a call on the console console hangup - Hangup a call on the console console mute - Disable mic input console send text - Send text to the remote device console transfer - Transfer a call to a different extension console unmute - Enable mic input
Les commandes "core" core clear profile - Clear profiling info core set debug channel - Enable/disable debugging on a channel core set debug - Set level of debug chattiness core set debug off - Turns off debug chattiness
Jean GAUTIER
41
core set global - Set global dialplan variable core set verbose - Set level of verboseness core show applications - Shows registered dialplan applications core show application - Describe a specific dialplan application core show audio codecs - Displays a list of audio codecs core show channels - Display information on channels core show channel - Display information on a specific channel core show channeltypes - List available channel types core show channeltype - Give more details on that channel type core show codecs - Displays a list of codecs core show codec - Shows a specific codec core show config mappings - Display config mappings (file names to config engines) core show file formats - Displays file formats core show file version - List versions of files used to build Asterisk core show functions - Shows registered dialplan functions core show function - Describe a specific dialplan function core show globals - Show global dialplan variables core show hints - Show dialplan hints core show image codecs - Displays a list of image codecs core show image formats - Displays image formats core show license - Show the license(s) for this copy of Asterisk core show profile - Display profiling info core show switches - Show alternative switches core show threads - Show running threads core show translation - Display translation matrix core show uptime - Show uptime information core show version - Display version info core show video codecs - Displays a list of video codecs
Jean GAUTIER
42
core show warranty - Show the warranty (if any) for this copy of Asterisk
Les commandes de base de donne database del - Removes database key/value database deltree - Removes database keytree/values database get - Gets database value database put - Adds/updates database value database show - Shows database contents database showkey - Shows database contents
dundi show precache - Show DUNDi precache dundi show requests - Show DUNDi requests dundi show trans - Show active DUNDi transactions dundi store history - Enable DUNDi historic records
Les commandes "GTalk" & "Jabber" gtalk reload - Enable Jabber debugging gtalk show channels - Show GoogleTalk Channels jabber debug - Enable Jabber debugging jabber debug off - Disable Jabber debug jabber reload - Enable Jabber debugging jabber show connected - Show state of clients and components jabber test - Shows roster, but is generally used for mog's debugging.
Les commandes "IAX2" iax2 provision - Provision an IAX device iax2 prune realtime - Prune a cached realtime lookup iax2 reload - Reload IAX configuration iax2 set debug - Enable IAX debugging iax2 set debug jb - Enable IAX jitterbuffer debugging iax2 set debug jb off - Disable IAX jitterbuffer debugging iax2 set debug off - Disable IAX debugging iax2 set debug trunk - Enable IAX trunk debugging iax2 set debug trunk off - Disable IAX trunk debugging iax2 show cache - Display IAX cached dialplan iax2 show channels - List active IAX channels iax2 show firmware - List available IAX firmwares iax2 show netstats - List active IAX channel netstats iax2 show peers - List defined IAX peers iax2 show peer - Show details on specific IAX peer
Jean GAUTIER
44
iax2 show provisioning - Display iax provisioning iax2 show registry - Display IAX registration status iax2 show stats - Display IAX statistics iax2 show threads - Display IAX helper thread info iax2 show users - List defined IAX users iax2 test losspct - Set IAX2 incoming frame loss percentage
Les commandes "Manager" manager show command - Show a manager interface command manager show commands - List manager interface commands manager show connected - List connected manager interface users manager show eventq - List manager interface queued events manager show users - List configured manager users manager show user - Display information on a specific manager user
Les commandes "MGCP" mgcp audit endpoint - Audit specified MGCP endpoint mgcp reload - Reload MGCP configuration mgcp set debug - Enable MGCP debugging mgcp set debug off - Disable MGCP debugging mgcp show endpoints - List defined MGCP endpoints
La gestion des modules module load - Load a module by name module reload - Reload configuration module show - List modules and info module show like - List modules and info module unload - Unload a module by name
Les commandes PRI (numris) pri debug span - Enables PRI debugging on a span pri intense debug span - Enables REALLY INTENSE PRI debugging
Jean GAUTIER 45
pri no debug span - Disables PRI debugging on a span pri set debug file - Sends PRI debug output to the specified file pri show debug - Displays current PRI debug settings pri show spans - Displays PRI Information pri show span - Displays PRI Information pri unset debug file - Ends PRI debug output to file
Les commandes de files d'attentes queue add member - Add a channel to a specified queue queue remove member - Removes a channel from a specified queue queue show - Show status of a specified queue rtcp debug ip - Enable RTCP debugging on IP rtcp debug - Enable RTCP debugging rtcp debug off - Disable RTCP debugging rtcp stats - Enable RTCP stats rtcp stats off - Disable RTCP stats rtp debug ip - Enable RTP debugging on IP rtp debug - Enable RTP debugging rtp debug off - Disable RTP debugging say load - Set/show the say mode show parkedcalls - Lists parked calls show queue - Show information for target queue show queues - Show the queues
Les commandes "SIP" sip history - Enable SIP history sip history off - Disable SIP history sip notify - Send a notify packet to a SIP peer sip prune realtime - Prune cached Realtime object(s) sip prune realtime peer - Prune cached Realtime peer(s)
Jean GAUTIER
46
sip prune realtime user - Prune cached Realtime user(s) sip reload - Reload SIP configuration sip set debug - Enable SIP debugging sip set debug ip - Enable SIP debugging on IP sip set debug off - Disable SIP debugging sip set debug peer - Enable SIP debugging on Peername sip show channels - List active SIP channels sip show channel - Show detailed SIP channel info sip show domains - List our local SIP domains. sip show history - Show SIP dialog history sip show inuse - List all inuse/limits sip show objects - List all SIP object allocations sip show peers - List defined SIP peers sip show peer - Show details on specific SIP peer sip show registry - List SIP registration status sip show settings - Show SIP global settings sip show subscriptions - List active SIP subscriptions sip show users - List defined SIP users sip show user - Show details on specific SIP user
Les commandes "Skinny" skinny reset - Reset Skinny device(s) skinny set debug - Enable Skinny debugging skinny set debug off - Disable Skinny debugging skinny show devices - List defined Skinny devices skinny show lines - List defined Skinny lines per device
Les commandes des B.V. voicemail show users - List defined voicemail boxes voicemail show users for - List defined voicemail boxes for target context
Jean GAUTIER
47
Les commandes "Zaptel" zap destroy channel - Destroys a channel zap restart - Fully restart zaptel channels zap show cadences - List cadences zap show channels - Show active zapata channels zap show channel - Show information on a channel zap show status - Show all Zaptel cards status
Quelques commandes supplmentaires Include context: Inclut un contexte dans un autre contexte. Init keys: Initialise les cls RSA. Local show channels: Affiche ltat dun canal local. Logger reload: Ouvre les fichiers logs. Meetme: Excute une commande sur une confrence. Pri debug span: Active le dbogage PRI sur un span. Pri intense debug span: Active le dbogage PRI intense sur un span. Pri no debug span: Dsactive le dbogage PRI sur un span. Pri show span: Affiche les Information PRI. Remove extension: Supprime une extension spcifie. Remove indication: Supprime lindication donne du pays. Remove queue member: Supprime un canal dune fille dattente donne. Restart gracefully: Redmarre Asterisk gracieusement. Restart now: Redmarre Asterisk immdiatement. Restart when convenient: Redmarre Asterisk quand le volume devient nul. Show audio codecs: Affiche les codecs audio. Show channels: Affiche les informations dun canal. Show channel: Affiche les informations dun canal spcifique.
Jean GAUTIER
48
Show codecs: Affiche les codecs. Show codec: Affiche un codec spcifique. Show conferences: Afficher ltat dune confrence. Show config handles: Affiche les Config Handles. Show dialplan: Affiche le plan de numrotation. Show file formats: Affiche le format des. Show image codecs: Affiche les codecs image. Show image formats: Affiche les formats dimage. Show indications: Affiche une liste des pays ou des indications. Show keys: Affiche les informations de la cl RSA. Show manager command: Affiche les commande du manager. Show manager commands: Affiche les commandes du manager. Show manager connected: Affiche les utilisateurs du manager connects. Show modules: Liste les modules et les info. Show parkedcalls: Liste les appels parqus. Show queue: Affiche ltat dune file dattente. Show queues: Affiche ltat des files dattente. Show switches: Affiche les switches alternatifs. Show translation: Affiche la matrice de traduction. Show video codecs: Affiche les codecs video. Show voicemail users: Liste les boites vocales dfinies. Show voicemail zones : Liste les formats de messages vocaux. Soft hangup: Demande de raccrocher un canal donn. Stop gracefully: Arrte asterisk gracieusement. Stop now: Arrte Asterisk immdiatement. Stop when convenient: Arrter asterisk quand le volume dappels est nul.
Jean GAUTIER
49
; Active la supervision poste par messages SIP ; Pour que le serveur renvoi les messages 'Invite ' (no si NAT) ; Gre les vnements d'administration (utile pour FOP) ; Pour activer l'historique des canaux SIP ; Pour permettre le renvoi d'appel vers un appel Ext ; Autorise tout appel non identifi
;============================== ;Enregistrements des trunks SIP ;============================== register => login:MotDePasse@operateur-sip/0141261234 ;================================= ; Declarations des faisceaux SIP ;================================= [operateur-sip] host=operateur.local defaultuser=login secret=MotdePasse fromuser=login fromdomain=operateur.local insecure=port,invite type=friend ; Nom du domaine correspondant au trunk ; Nom de l'utilisateur du trunk ; Mot de passe ; Nom du compte du trunk ; Nom du domaine correspondant au trunk
Jean GAUTIER
50
;====================== ;Dclaration des postes ;====================== [postes](!) host=dynamic nat=no call-limit=2 pickupgroup=1 callgroup=1 type=friend [100](postes) callerid=Mobile <100> secret=poseidon defaultuser=Mobile mailbox=100@default [101](postes) callerid=Pierre <101> defaultuser=Pierre mailbox=101@default [102](postes) callerid=Marie <102> defaultuser=Marie mailbox=102@default [103](postes) callerid=Paul <103> defaultuser=Paul mailbox=103@default .... [140](postes) callerid=Jean GAUTIER <140> defaultuser=140 mailbox=140@default secret=poseidon
Fichier 'extensions.conf'
[general] static = yes writeprotect = no autofallthrough = yes clearglobalvars = yes priorityjumping = yes userscontext = default defaultexpirey = 1800 ;Le dialpan n'est pas modifiable par le cli ;Permet de raccrocher automatiquement le canal ;Les variables sont effaces chaque boot
Jean GAUTIER
51
[globals] DYNAMIC_FEATURES => automon ;Permet l'enregistrement des appels [default] include => enregistre include => conferences include => parkedcalls ; Gestion des postes exten => _1XX,1,Answer exten => _1XX,n,Dial(SIP/${EXTEN},15,DtTmw) exten => _1XX,n,Voicemail(${EXTEN}@default) exten => _1XX,n,Hangup ; Appels sortants nationaux exten => _0XXXXXXXXX,1,Set(CALLERID(num)=0141261234) exten => _0XXXXXXXXX,n,Dial(SIP/${EXTEN}@operateur-sip,,TrgDWL(3000000)) exten => _0XXXXXXXXX,n,Congestion exten => _0XXXXXXXXX,n,Hangup ; ; Appels vers les portables, avec une dure limite exten => _06XXXXXXXX,1,Set(CALLERID(num)=0141261234) exten => _06XXXXXXXX,n,Authenticate(5646) exten => _06XXXXXXXX,n,Dial(SIP/${EXTEN}@operateur-sip,,TrgDWL(300000)) exten => _06XXXXXXXX,n,Hangup ; Appels services spciaux exten => _ZXXX,1,Dial(SIP/${EXTEN}@operateur-sip,,tTrgDwW) exten => _ZXXX,n,Congestion exten => _ZXXX,n,Hangup ;Appels vers les services d'urgences exten => _1X,1,Dial(SIP/${EXTEN}@operateur-sip,,tTrR) exten => _1X,n,Hangup ;Rpond l'appel ;Appel l'argument saisi pendant 15 s ;Renvoi l'appelant sur la B.V. de l'appel ;Libre le canal en raccrochant
; Appels des N interdits exten => _089.,1,Authenticate(5646) exten => _089.,n,Dial(SIP/${EXTEN}@operateur-sip,,tTrgD) exten => _089.,n,Hangup exten => _0836.,1,Hangup ; Acces direct messagerie exten => 930,1,Answer() exten => 930,n,VoiceMailMain(${CALLERID(num)}@default) exten => 930,n,Hangup
Jean GAUTIER
52
; Accs global au serveur B.V. exten => 950,1,Answer() exten => 950,n,VoicemailMain exten => 950,n,Hangup
; Horloge parlante exten => 777,n,SayUnixTime(,CET,kM) exten => 777,n,Hangup ; interception d'appel - faire le prfixe 916 puis numro de poste a intercepter exten => 916XXX,1,Pickup(${EXTEN:3}) ; Gestion des appels entrants exten => _0141261234,1,Set(TIMEOUT(digit)=3) exten => _0141261234,n,Set(TIMEOUT(response)=10) exten => _0141261234,n,Voicemail(101@default) exten => _0141261234,n,Hangup [enregistre] exten => 50,1,Answer exten => 50,n,Record(/var/tmp/son-%d:ulaw,3) exten => 50,n,Hangup() [conferences] exten => 901,1,Answer exten => 901,2,Wait(1) exten => 901,3,macro(conference,901,901) [macro-conference] ; ${ARG1} - Numro de la salle de conf ; ${ARG2} - Pin associ exten => s,1,NoOp(${DATETIME}) exten => s,n,Answer exten => s,n,NoOp(entre en conference en salle #${ARG1}) exten => s,n,Playback(conference-call) exten => s,n,SayDigits(${ARG1}) exten => s,n,Authenticate(${ARG2}) exten => s,n,Playback(conf-youareinconfnum) exten => s,n,SayDigits(${ARG1}) exten => s,n,Playback(conf-thereare) exten => s,n,MeetMeCount(${ARG1}) exten => s,n,Playback(conf-peopleinconf) exten => s,n,MeetMe(${ARG1},Mcps) exten => s,n,MeetMe(${ARG1},pvdMa) exten => s,n,Playback(vm-goodbye) exten => s,n,Hangup ;Fixe la dure d'appui sur les touches ;Fixe un dlais d'attente maxi pour l'appui ;Renvoie vers la B.V.
Jean GAUTIER
53
Jean GAUTIER
54
Un rpondeur vocal qui oriente l'appelant en fonction du jour et de l'heure d'appel en alimentant une variable. En fonction de l'heure et du jour, une variable portant le nom 'open' ou 'closed' est cre. Si l'appel arrive du Lundi au Vendredi, de 9H00 18H00, la variable sera 'open'. Si l'appel arrive en dehors de cette plage, la variable sera 'closed'. Ensuite, la variable est lue, si la valeur est 'open', l'appel est dirig vers le poste du standard, sinon, l'appel basculera vers la boite vocale.
[entrant] exten => s,1,Answer exten => s,n,Set(HEURE=${IFTIME(08:59-17:59,mon-fri,*,*?open:closed)}) cr la variable en fonction de la priode exten => s,n,GotoIf($[${HEURE}=open]?10:20) dirige en fonction de la variable exten => 10,1,Goto(standard,100,1) exten => 20,1,Goto(standard,100,2) [standard] exten => 100,1,Dial(SIP/100) exten => 100,2,Voicemail(100@labo) exten => 100,1,Hangup dirige vers le standard (poste SIP/100) dirige vers le rpondeur
3 - Cration d'un test simple de ligne occupe Ici si l'appel est en ligne, l'appelant entendra son message correspondant au mode 'occup, si l'appel est absent, l'appelant ' entendra son message correspondant au mode 'absent'. Il est possible de crer deux messages pour la B.V. : un message 'occup (busy) un message 'indisponible (unavailable) En jouant sur l'instruction 'n+101' et sur les deux types de messages de la boite vocale, on pourra orienter l'appel vers un message 'occup ou indisponible (b101 ou u101).
exten => 101,1,Dial(SIP/101,15) exten => 101,2,Voicemail(u101@labo) on oriente l'appelant vers le message Unavailable exten => 101,102,Voicemail(b101@labo] on oriente l'appelant vers le message Busy
Jean GAUTIER
55
Pr-requis
Cette procdure dcrit les tapes permettant l'installation des applications et pilotes utiliss pour dployer le service Asterisk sur une machine serveur Linux Debian.
Pour cette prsentation, j'utilise une machine virtuelle Linux serveur sur laquelle je suis connect en SSH, afin de pouvoir utiliser le copier/coller facilement. Cette machine est une Debian GNU/Linux 6.0.6 (squeeze) avec noyau Linux debian 2.6.325-amd64. La machine idale devra rsoudre des noms FQDN et disposera d'un pare-feu. Toutes les oprations ncessitent d'tre connect en tant qu'utilisateur 'root'.
Pour tre certain de disposer des dernires versions stables d'Asterisk, il est impratif d'installer partir des sources. Linstallation depuis les fichiers sources permettra en outre la slection des options et modules de configuration que nous souhaitons utiliser.
Prcisions
Asterisk permet de s'interfacer sur les rseaux de tlphonie traditionnels, mais requiert pour cela des pilotes et librairies qui ne sont pas intgrs par dfaut sous Linux. Libpri (Basic Rate Interface) est une librairie permettant la prise en charge de fonctions de signalisation pour les rseaux et postes tlphoniques RNIS (Rseau numrique intgration de services).
Jean GAUTIER
56
Dahdi (Digium/Asterisk Hardware Device Interface) permet la prise en charge de cartes d'interfaces aux rseaux et postes analogiques RTC (rseau tlphonique commut). Mme si on utilise ni les rseaux RTC, RNIS, ni les cartes d'interfaces, ces pilotes sont absolument ncessaires pour profiter de certaines fonctionnalits d'Asterisk, comme la musique d'attente (fonctions moh) ou les confrences.
Prparation du serveur
L'installation ncessite que les sources du noyau GNU Linux ainsi que les outils ncessaires la compilation, soient prsents. Nous allons donc commencer par 'prparer' la machine.
Installer le ''kit de compilation'' Linux Le meta-packet "build-essential" fournit les compilateurs C et C++, les librairies et outils ncessaires au dveloppement.
apt-get install build-essential
Jean GAUTIER
57
Installation des fichiers ncessaires l'installation Toujours en utilisant 'apt-get install', installer les paquets suivants:
apt-get install libncurses5-dev apt-get install libssl-dev apt-get install libnewt-dev apt-get install zlib1g-dev apt-get install procps apt-get install binutils apt-get install libxml2-dev apt-get install libsqlite3-dev
Installation des codecs et utilitaires audio Afin de pouvoir utiliser les musiques d'attente au format Mpeg3 (mp3), il faut installer le programme player mpg123.
apt-get install mpg123
Installer les librairies son et le programme 'sox' Sox est un outil de conversion pour transformer tout type de fichiers son.
apt-get install sox apt-get install libspeex-dev apt-get install libogg-dev apt-get install libvorbis-dev
Jean GAUTIER
58
Jean GAUTIER
59
Je me place directement dans le dossier /usr/src de mon serveur Linux. Avec la commande 'wget', je tlcharge directement les fichiers depuis le serveur Digium. Remplacez 'xx' par le numro correspondant la version installer.
cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-xx-current.tar.gz
Jean GAUTIER
60
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-xx.tar.gz
wget
http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
Jean GAUTIER
61
Exemple
tar zxvf libpri-xx-current.tar.gz tar zxvf dahdi-linux-complete-current.tar.gz tar zxvf asterisk-xx-current.tar.gz
Une fois les archives dcompactes, on trouvera un ensemble de nouveaux dossiers, ressemblant ceci:
Jean GAUTIER
62
J'installe dans l'ordre suivant, c'est trs important: 1. libpri 2. dahdi 3. asterisk
Installation de 'libpri'
(remplacer xx par la version installe) (procde la compilation des modules) (procde l'installation de l'application)
Installation de 'dahdi'
Un certain nombre d'erreurs vont dfiler l'cran, ceci est normal. La dernire action rpondra par 'No hardware found ' puisqu'il n'y a pas de carte d'interface de tlphonie dans notre machine.
Jean GAUTIER
63
Installation d'Asterisk
Pour prparer l'installation du programme Asterisk, un grand nombre d'opration doivent tres verifies, voici comment faire :
cd ../asterisk-x.x-current ./configure
Cette tape est dcisive, si elle s'achve correctement, vous verrez le logo Asterisk en caractre dimprimerie, sinon, il faudra revoir votre procdure et recommencer.
Jean GAUTIER
64
Important Il faut dsormais dfinir en fonction des quipements et liens vers les oprateurs que nous souhaitons utiliser, quels sont les Codecs son dont nous avons besoin, les applications et fonctions que nous souhaitons utiliser, etc ...
J'utilise par exemple les sons en version Franaise, cods avec le Codec 'alaw' (G711a).
Nous allons ici devoir slectionner les fonctions, modules et options que nous souhaitons configurer.
Je choisis d'utiliser les sons en Franais cods avec le Codec 'Alaw' (Core Sound Packages & Extra Sound Packages). (Je dcoche les sons en Anglais).
J'opte pour les musiques au format 'Alaw' galement (Musiques On Hold Files Packages)
Jean GAUTIER
65
A la fin de l'installation, on trouvera l'ensemble des fichiers de configuration, dans le dossier: /etc/asterisk.
Jean GAUTIER
66
Jean GAUTIER
67
Vrification
Avant de configurer notre serveur, nous allons tester son fonctionnement. Il suffit de lancer le service Asterisk:
/etc/init.d/asterisk start
Jean GAUTIER
68