Decouverte Du Serveur Asterisk
-
Upload
therrouin-max -
Category
Documents
-
view
161 -
download
0
Transcript of Decouverte Du Serveur Asterisk
-
Asterisk Dcouverte et prise en mains
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.
Asterisk existe en deux versions :
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".
Prise en main d'Asterisk - v13032 Jean GAUTIER 2
-
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).
Il y a quatre types de connexions possibles :
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)
Prise en main d'Asterisk - v13032 Jean GAUTIER 3
-
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.
Prise en main d'Asterisk - v13032 Jean GAUTIER 4
-
Lancement du programme Asterisk
Pour permettre le lancement automatique d'Asterisk, il faut modifier le fichier /etc/default/asterisk
RUNASTERISK=yes
RUNASTSAFE=no
Pour dmarrer manuellement le programme Asterisk, on peut utiliser :/usr/sbin/asterisk ou bien la commande habituelle :
/etc/init.d/asterisk start
Pour vrifier si le programme est bien lanc :
netstat -anu
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 0.0.0.0:4520 0.0.0.0:* port du protocole MGCP udp 0 0 0.0.0.0:5060 0.0.0.0:* port du protocole SIP udp 0 0 0.0.0.0:4569 0.0.0.0:* port du protocole IAX
Ici, on peut voir les ports 4569 et 5060 qui correspondent aux protocoles SIP et IAX.
Prise en main d'Asterisk - v13032 Jean GAUTIER 5
-
Lancement de la console d'administration
Asterisk dispose d'une interface en ligne de commandes interactif (CLI) qui permet de vrifier et agir sur les configurations et visualiser l'tat de fonctionnement en tant rel :
asterisk -rcvvv pour se connecter la console.
Asterisk -rcvvv o le nombre de 'v' augmente le degr de verbosit sur la console.
Voici quelques commandes essentielles en mode CLI
CLI> sip show users pour voir les utilisateurs SIPCLI> sip show peers pour voir les quipements SIPCLI> sip show channel pour voir les canaux SIP CLI> stop gracefully pour arrter le serveur.CLI> reload pour recharger Asterisk.
Prise en main d'Asterisk - v13032 Jean GAUTIER 6
-
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.
Avec Asterisk, le DialPlan est configurable par le fichier "extensions.conf".
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''.
Prise en main d'Asterisk - v13032 Jean GAUTIER 7
-
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
Prise en main d'Asterisk - v13032 Jean GAUTIER 8
-
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"
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.
Prise en main d'Asterisk - v13032 Jean GAUTIER 9
-
Exemple
[general] language = fr context=labo dclare le contexte utilis par dfaut
[101] correspond au nom d'un poste tlphone (ou d'une ligne)username=101secret = poseidon type=friend host=dynamic callerid="Dupont Patrick"
[secretaire] une autre faon de dfinir un posteusername=secretaire secret = poseidontype=friend host=dynamic callerid="Secretaire"
Ici, avec le nom du compte '101', c'est 'Dupont Patrick ' 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
-
Simplification de dclaration de postes dans le fichier 'sip.conf'.
Dans le but dallger la dclaration de donnes dans le fichier 'sip.conf', il est intressant d'utiliser le concept de 'template' qui sont des modles de dclaration.
Chaque poste sera ensuite associ au modle auquel il correspondDe cette faon, plusieurs modles peuvent tres dclars en fonction par exemple, de la marque ou du modle dfinir.
Le template est dfini comme ce ceci: [modele]!, chaque poste qui pointe vers ce template est dfini comme cela: [poste-1](modele), [poste-2](modele)
Exemple: Voici deux configurations quivalentes
[general]context=labo allow=alaw language=fr
[general]context=labo allow=alaw language=fr
[101] host=dynamic nat=no call-limit=2 pickupgroup=1 callgroup=1 type=friend secret=poseidoncallerid=Pierre
[102] host=dynamic nat=no call-limit=2 pickupgroup=1 callgroup=1 type=friend secret=poseidoncallerid=Marie
[telephones](!) host=dynamic nat=no call-limit=2 pickupgroup=1 callgroup=1 type=friend secret=poseidon
[101](telephones) callerid=Pierre
[102](telephones) callerid=Marie
Prise en main d'Asterisk - v13032 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.
Chaque client sera identifi par un label.
Exemple
[general] context=defaut
[555] username=555 type=friend host=dynamic callerid="toto"
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.
Prise en main d'Asterisk - v13032 Jean GAUTIER 12
-
Le plan de numrotation (dialplan)
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,optionexten => 101,2,action N2,optionexten => 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' ?
Prise en main d'Asterisk - v13032 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.
Prise en main d'Asterisk - v13032 Jean GAUTIER 14
-
La cration du plan de numrotation (Dialplan)
Le fichier ''extensions.conf'' regroupe l'ensemble des rgles de numrotation et de fonctionnement, donc, tout passe par lui.
Ce fichier est compos de quatre parties principale :
1. Les contextes
2. Les extensions
3. Les priorits
4. Les applications.
Les contextes jouent le rle d'organisation du plan de numrotation.
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.
Prise en main d'Asterisk - v13032 Jean GAUTIER 15
-
Les extensions
Une extension permet de dfinir une action raliser.
A l'intrieur d'un mme contexte, on peut dfinir une suite d'actions raliser, sous forme d'une squence :
En premier, l'action N 1, ensuite l'action N 2 et ainsi de suite.
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,Answerexten => 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.
Prise en main d'Asterisk - v13032 Jean GAUTIER 16
-
Modes de fonctionnement Asterisk
Le fonctionnement Asterisk repose sur un modle client/serveur classique.
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.
Prise en main d'Asterisk - v13032 Jean GAUTIER 17
-
Exemple
exten => 103,1,Answerexten => 103,2,Dial(SIP/jean,20)exten => 103,3,Hangup
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 1exten => 103,1,Answerexten => 103,n,Dial (sip/jean,20)exten => 103,n,Voicemail(103@defaut)exten => 103,n,Hangup
Prise en main d'Asterisk - v13032 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,Answerexten => 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.
Prise en main d'Asterisk - v13032 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'.
Prise en main d'Asterisk - v13032 Jean GAUTIER 21
-
Traitement des erreurs et dlais d'attente dpass
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'.
Prise en main d'Asterisk - v13032 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.
Prise en main d'Asterisk - v13032 Jean GAUTIER 23
-
Voici un exemple comment
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.
Prise en main d'Asterisk - v13032 Jean GAUTIER 24
-
E xemple 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.
Traitement des lignes occupes
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.
Prise en main d'Asterisk - v13032 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.
Prise en main d'Asterisk - v13032 Jean GAUTIER 26
-
Les options de l'application Dial()
L'application 'Dial' sert tablir une liaison avec le canal correspondant, elle peut prendre en compte jusqu 4 arguments.Le troisime argument de Dial est une option qui modifie le comportement de lapplication.
Par exemple, la lettre 'r' pour 'Ringing' fait entendre une tonalit l'appel durant le temps o le canal de destination est sollicit.A contrario la lettre 'm' pour 'music' ferait entendre une musique, au lieu de la tonalit habituelle.
Lapplication Dial permet de spcifier un dlai (en secondes), Dial() attendra la fin de ce dlai avant dabandonner et passer la priorit suivante.Dans le cas ou aucun dlais n'est spcifi, 'Dial' continuera tenter de joindre le canal jusqu ce quelquun rponde ou bien que lappelant raccroche.
A(fichier) : fait entendre le fichier nomm 'fichier' lappelant.
C : permet de rinitialiser les donnes CDR (Call Detail Record), utilises pour la journalisation d'appels.
D(code_dtmf) : permet l'envoi de codes DTMF l'appel lorsqu'il acceptera l'appel.
f : force le CallerID tre dfini comme lextension.
g : continuer dans l'excution du contexte lorsque l'appel raccroche.
h : autoriser l'appel raccrocher en pressant la touche '*'.
H : autoriser l'appelant raccrocher en pressant la touche '*' .
L(limite[:alerte][:rptition]) : mettre en place une limite de dure (en ms) pour lappel.
m : jouer la musique dattente la place de la sonnerie standard.
M(macro) : excuter une macro lorsque la connexion stablit.
P() : demander le numro de lappelant si aucun CallerID nest envoy.
r : gnre une tonalit pour l'appelant.
S(timer) : dfinir une dure maximale de communication.
t : autoriser l'appel transfrer l'appel.
T : autoriser lappelant transfrer lappel.
w : autorise lappel dmarrer lenregistrement en pressant '*1'.
W : autorise lappelant dmarrer lenregistrement en pressant '*1'.
Prise en main d'Asterisk - v13032 Jean GAUTIER 27
-
Configuration pour partager un abonnement SIP
Avant d'utiliser Internet, il faut souscrire un abonnement auprs d'un fournisseur d'accs internet (FAI).
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.
Prise en main d'Asterisk - v13032 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 compte SIP ressemble une adresse email:
sip://jean:poseidon@operateur/numro
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.
Prise en main d'Asterisk - v13032 Jean GAUTIER 29
-
Inscription sur un serveur distant
Nous avons vu que pour pouvoir passer des appels vers l'extrieur, par exemple vers des postes fixes ou GSM, il faut possder un compte chez oprateur (gnralement un trunk SIP).
Ce trunk doit tre dclar dans le fichier sip.conf.C'est la fonction 'register' qui permet cette dclaration.
Exemple: e xtrait du fichie r 'sip.conf'
[general] . .. ... register => login:MotDePasse@operateur /numro
Exemple
register => 0872123456:[email protected] /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'.
Prise en main d'Asterisk - v13032 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:
${CALLERID(num)} : Numro de l'appelant
${CALLERID(name)} : Nom de l'appelant
${CALLERID(all)} : Nom et numro de l'appelant
${CONTEXT} : Contexte courant lors de l'appel cette variables
${TIMESTAMP} : Date et heure courants en format AAAAMMJJHHMMSS
${EXTEN} : Numro de l'extension courante
${EXTEN}:N : Numro de l'extension courante avec N caractres en moins
Prise en main d'Asterisk - v13032 Jean GAUTIER 31
-
Rgles de filtrage d'appels
Pour dfinir des rgles de filtrage dappels sans avoir dfinir une rgle par appel, on utilise des mta caractres prdfinis.
Ces mta caractres s'appellent des motifs.
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.
Prise en main d'Asterisk - v13032 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.
Prise en main d'Asterisk - v13032 Jean GAUTIER 33
-
Mise en application simple d'Asterisk
Exemple 1 - Une configuration avec d eux postes en interne
Cette configuration simple permet de dfinir deux postes tlphonique SIP en interne.
Le premier possde le numro d'appel '101' et le deuxime '102'. Le poste 101 est affect l'utilisateur Pierre, le 102 est affect Marie. Le poste appel sonnera pendant 10 secondes avant de basculer l'appelant sur la
boite vocale (rpondeur).
Fichier sip.conf pour dfinir les postes.
[general] port = 5060 indique le numro de port du protocole SIPcontext=labo indique le nom de contexte utilis par dfautlocalnet=10.0.0.0/255.255.255.0 indique le rseau local o opre Asterisk allow=ulaw spcifie le (ou les) Codec utilis
[101] nom d'un compteusername=100 nom de l'utilisateur associ au comptetype=friend mode de fonctionnement host=dynamic indique le mode d'adresse IP utiliscallerid="Pierre" configure l'identifiant du postemailbox=101@labo associe la boite vocale 101 au compte [101]
[marie] nom du compteusername=101 type=friend host=dynamic callerid="Marie" mailbox=102@labo
Prise en main d'Asterisk - v13032 Jean GAUTIER 34
-
Fichier extensions.conf pour dfinir le plan de numrotation.
[general] static=yes le plan de numrotation n'est pas modifiable en CLI
[labo] exten => 101,1,Dial(SIP/101,10) fait sonner le compte SIP '101' pendant 10 secondesexten => 101,2,Voicemail(101) renvoie l'appelant vers la boite vocale 101exten => 101,3,Hangup raccroche et libre le canal
exten => 102,1,Dial(SIP/marie,10) fait sonner le compte SIP 'marie'exten => 102,2,Voicemail(102) exten => 102,3,Hangup
Fichier voicemail.conf pour dfinir les boites vocales des postes.
[general]
[zonemessages]paris = Europe/Paris|'vm-received' Q 'digits/at' R personnalise la gestion des 'locales'
[labo]101 => 1234,Pierre KIROUL,[email protected] associe le code 1234 la B.V. 101 de Pierre102 => 1234,Marie ELEN,[email protected]
Prise en main d'Asterisk - v13032 Jean GAUTIER 35
-
E xemple 2 - Deux postes en interne, un trunk oprateur SIP
Dans cet exemple, on configure un IPBX Asterisk pour grer deux tlphones.
On utilise un trunk sip de l'oprateur 'xyz' (login=jean, mot de passe=poseidon, numro=0141231234).
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=labobindport=5060 language=fr allow=alawregister => jean:poseidon@xyz/0141231234 [operateur] type=peer nat=yeshost=xyz username=jean fromuser=jean secret=poseidon fromdomain=xyz
[pierre]host=dynamictype=peerusername=pierrecallerid=pierre mailbox=pierre@labo
Prise en main d'Asterisk - v13032 Jean GAUTIER 36
-
[marie]host=dynamictype=peernat=nousername=mariecallerid=marie mailbox=marie@labo
Fichier extensions.conf
[general] static=yes
[labo] include=interne permet d'inclure le contexte [interne]include=sortant permet d'inclure le contexte [sortant] exten => s,1,Answer rpond l'appelexten => s,n,Background(accueil) fait entendre le message d'accueilexten => s,n,Set(TIMEOUT(response)=15) fixe une temporisation d'attente (15 secondes)exten => s,n,WaitExten() attend le temps de la temporisationexten => s,n, Goto(labo,s,2) retourne au message d'accueil
exten => 1,1,Goto(interne,101,1) si appui sur 1, va l'extension 101,1exten => 2,1,Goto(interne,102,1) si appui sur 2, va l'extension 102,1
exten => i,1,Playback(numeroIncorrect) au cas ou choix autre que 1 ou 2exten => i,2,Goto(labo,s,2) retourne au message d'accueil
exten => t,1, Goto(labo,s,2) 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
Prise en main d'Asterisk - v13032 Jean GAUTIER 37
-
[sortant] ;Appel vers les poste fixesexten => _0XXXXXXXXX,1,Dial(SIP/${EXTEN}@operateur) compose le numro demand au exten => _0XXXXXXXXX,n,Hangup travers du trunk [operateur]
;Appel vers les portables, avec mot de passe '1234'exten => _06XXXXXXXX,1,Authenticate(1234) exige le code pin '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
Fichier voicemail.conf
[labo] 101 => 1234101 => 1234
Prise en main d'Asterisk - v13032 Jean GAUTIER 38
-
Annexe 1 - Les commandes CLI ! - Execute a shell command
abort halt - Cancel a running halt
cdr status - Display the CDR status
feature show - Lists configured features
feature show channels - List status of feature channels
file convert - Convert audio file
group show channels - Display active channels with group(s)
help - Display help list, or specific help on a command
indication add - Add the given indication to the country
indication remove - Remove the given indication from the country
indication show - Display a list of all countries/indications
keys init - Initialize RSA key passcodes
keys show - Displays RSA key information
local show channels - List status of local channels
logger mute - Toggle logging output to a console
logger reload - Reopens the log files
logger rotate - Rotates and reopens the log files
logger show channels - List configured log channels
meetme - Execute a command on a conference or conferee
mixmonitor - Execute a MixMonitor command.
moh reload - Music On Hold
moh show classes - List MOH classes
moh show files - List MOH file-based classes
no debug channel: Dsactive le dbogage sur un canal.
originate - Originate a call
realtime load - Used to print out RealTime variables.
Prise en main d'Asterisk - v13032 Jean GAUTIER 39
-
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
Prise en main d'Asterisk - v13032 Jean GAUTIER 40
-
agent logoff - Sets an agent offline
agent show - Show status of agents
agent show online - Show all online agents
Les commandes AGI
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
Prise en main d'Asterisk - v13032 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
Prise en main d'Asterisk - v13032 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
Les commandes "Dialplan"
dialplan add extension - Add new extension into context
dialplan add ignorepat - Add new ignore pattern
dialplan add include - Include context in other context
dialplan reload - Reload extensions and *only* extensions
dialplan remove extension - Remove a specified extension
dialplan remove ignorepat - Remove ignore pattern from context
dialplan remove include - Remove a specified include from context
dialplan save - Save dialplan
dialplan show - Show dialplan
Les commandes "DUNDI"
dundi debug - Enable DUNDi debugging
dundi flush - Flush DUNDi cache
dundi lookup - Lookup a number in DUNDi
dundi no debug - Disable DUNDi debugging
dundi no store history - Disable DUNDi historic records
dundi precache - Precache a number in DUNDi
dundi query - Query a DUNDi EID
dundi show entityid - Display Global Entity ID
dundi show mappings - Show DUNDi mappings
dundi show peers - Show defined DUNDi peers
dundi show peer - Show info on a specific DUNDi peer
Prise en main d'Asterisk - v13032 Jean GAUTIER 43
-
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
Prise en main d'Asterisk - v13032 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
Prise en main d'Asterisk - v13032 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)
Prise en main d'Asterisk - v13032 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
Prise en main d'Asterisk - v13032 Jean GAUTIER 47
-
voicemail show zones - List zone message formats
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.
Prise en main d'Asterisk - v13032 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.
Prise en main d'Asterisk - v13032 Jean GAUTIER 49
-
Annexe 2 Configuration d'exemple
Fichier 'sip.conf'[general] context=default srvlookup=yes defaultexpirey=1800 bindport=5060 ; Port UDP par dfaut du protocole SIP bindaddr=0.0.0.0 ; Adresse IP utilises exterhost=mondomaine.local ; Nom DNS utilisable l'extrieur localnet=192.168.1.0/24 ; Adresse des rseaux correspondant aux postes disallow=all ; Dsactive tous les codecs ;allow=g729 ; Active le codec G729 allow=alaw ; Active le codec G711 alaw allow=ulaw ; Active le codec G711 ulaw language=fr ; Langage utilis par dfaut (par les applications) dtmfmode=rfc2833 ; Mode dtmf rfc2833compensate=yes ; Amliore la gestion DTMF useragent=PABX Asterisk ; Chane d'identification du serveur realm=2ip.local ; Chane d'identification du domaine videosupport=no ; Supporte la transmission de vidos t38pt_udptl=no ; Supporte la transmission et rception de fax progressinband=no ; Indique l'tat du canal en mode 'inband' notifyringing=yes ; Ncessaire pour la supervision BLF notifyhold=no ; " " " " " subscribecontext=blf ; " " " " " qualify=yes ; Active la supervision poste par messages SIP careinvite=no ; Pour que le serveur renvoi les messages 'Invite ' (no si NAT) callevents=yes ; Gre les vnements d'administration (utile pour FOP) recordhistory=yes ; Pour activer l'historique des canaux SIP progressinband=yes ; Pour permettre le renvoi d'appel vers un appel Ext allowguest=no ; Autorise tout appel non identifi
;============================== ;Enregistrements des trunks SIP ;============================== register => login:MotDePasse@operateur-sip/0141261234
;================================= ; Declarations des faisceaux SIP ;================================= [operateur-sip] host=operateur.local ; Nom du domaine correspondant au trunk defaultuser=login ; Nom de l'utilisateur du trunk secret=MotdePasse ; Mot de passe fromuser=login ; Nom du compte du trunk fromdomain=operateur.local ; Nom du domaine correspondant au trunk insecure=port,invite type=friend
Prise en main d'Asterisk - v13032 Jean GAUTIER 50
-
;====================== ;Dclaration des postes ;====================== [postes](!) host=dynamic nat=no call-limit=2 pickupgroup=1 callgroup=1 type=friend
[100](postes) callerid=Mobile secret=poseidon defaultuser=Mobile mailbox=100@default
[101](postes) callerid=Pierre defaultuser=Pierre mailbox=101@default
[102](postes) callerid=Marie defaultuser=Marie mailbox=102@default
[103](postes) callerid=Paul defaultuser=Paul mailbox=103@default .... [140](postes) callerid=Jean GAUTIER defaultuser=140 mailbox=140@default secret=poseidon
Fichier 'extensions.conf'[general] static = yes writeprotect = no ;Le dialpan n'est pas modifiable par le cli autofallthrough = yes ;Permet de raccrocher automatiquement le canal clearglobalvars = yes ;Les variables sont effaces chaque boot priorityjumping = yes userscontext = default defaultexpirey = 1800
Prise en main d'Asterisk - v13032 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 ;Rpond l'appel exten => _1XX,n,Dial(SIP/${EXTEN},15,DtTmw) ;Appel l'argument saisi pendant 15 s exten => _1XX,n,Voicemail(${EXTEN}@default) ;Renvoi l'appelant sur la B.V. de l'appel exten => _1XX,n,Hangup ;Libre le canal en raccrochant
; 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 limiteexten => _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
; 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
Prise en main d'Asterisk - v13032 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) ;Fixe la dure d'appui sur les touches exten => _0141261234,n,Set(TIMEOUT(response)=10) ;Fixe un dlais d'attente maxi pour l'appui exten => _0141261234,n,Dial(SIP/101&SIP/102,20,dwtm) ;Fait sonner deux postes exten => _0141261234,n,Voicemail(101@default) ;Renvoie vers la B.V. 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
Prise en main d'Asterisk - v13032 Jean GAUTIER 53
-
Prise en main d'Asterisk - v13032 Jean GAUTIER 54
-
Annexe 3 Configuration diverses
1 - Cration d'un filtre d'appel en fonction de l'heure et du jour.
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,Answerexten => s,n,Set(HEURE=${IFTIME(08:59-17:59,mon-fri,*,*?open:closed)}) cr la variable en fonction de la priodeexten => s,n,GotoIf($[${HEURE}=open]?10:20) dirige en fonction de la variable
exten => 10,1,Goto(standard,100,1) dirige vers le standard (poste SIP/100)exten => 20,1,Goto(standard,100,2) dirige vers le rpondeur [standard]exten => 100,1,Dial(SIP/100)exten => 100,2,Voicemail(100@labo)exten => 100,1,Hangup
2 - Cration d'un filtre d'appel en fonction du numro de l'appelant
Ici on filtre simplement un numro connu l'avance
exten => 101/0142182633,1,Congestion si l'appelant est 0112182633, il entendra la tonalit 'occup'exten => 101,1,Dial(SIP/101,15) tout autre appelant fera sonner le poste 101exten => 101,2,Hangup
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 Unavailableexten => 101,102,Voicemail(b101@labo] on oriente l'appelant vers le message Busy
Prise en main d'Asterisk - v13032 Jean GAUTIER 55
-
Annexe 4 - Installation Asterisk sous Debian
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.32-5-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).
Prise en main d'Asterisk - v13032 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.
Mise a jour de l'indexation des paquets a partir des sites sources
apt-get update
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
Installation des en-ttes du noyau
apt-get install linux-headers-`uname -r`
uname -r permet de connatre la version de noyau utilis .Attention: le sigle ` est l'anti-cte.
Prise en main d'Asterisk - v13032 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
Prise en main d'Asterisk - v13032 Jean GAUTIER 58
-
Tlchargement des paquets Asterisk, Dahdi et des librairies
Vous trouverez lensemble des paquets le site de tlchargement de DIGIUM :
http://downloads.asterisk.org/pub/telephony/
Nous avons besoin de ''dahdi'', ''Asterisk'' et ''libpri''
Prise en main d'Asterisk - v13032 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
Commenons par le programme Asterisk.
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-xx-current.tar.gz
Prise en main d'Asterisk - v13032 Jean GAUTIER 60
-
Poursuivons avec 'libpri'
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-xx.tar.gz
Et terminons avec 'Dahdi'
wget
http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
Prise en main d'Asterisk - v13032 Jean GAUTIER 61
-
Dsarchivage des fichiers archives
Listez les noms de fichiers obtenus de faon a bien reprer leurs noms.
Dsarchivez les fichiers obtenus avec la commande 'tar zxvf nom_du_fichier.tar.gz'
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:
Prise en main d'Asterisk - v13032 Jean GAUTIER 62
-
Installation des applications
Toujours en prenant garde lister les noms de dossiers obtenus, se placer tour tour dans chaque dossier pour procder aux installations.
J'installe dans l'ordre suivant, c'est trs important:
1. libpri
2. dahdi
3. asterisk
Installation de 'libpri'
cd libpri-xx-current (remplacer xx par la version installe)
make (procde la compilation des modules)
make install (procde l'installation de l'application)
Installation de 'dahdi'
cd ../dahdi-linux ... (adapter en fonction de la version installe)
make all
make install
make config
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.
Prise en main d'Asterisk - v13032 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 (A adapter en fonction de la version installe)
./configure (Vrifie les prs-requis et prpare le terrain)
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.
Prise en main d'Asterisk - v13032 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).
C'est lopration 'menuselect'
make menuselect (pour slectionner les modules installer)
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)
Prise en main d'Asterisk - v13032 Jean GAUTIER 65
-
Une fois la slection faite, je valide.
Poursuivons avec la compilation:
make (Va prparer les lments installer)
make install (Compile et installe les lments)
make samples (copie des fichiers exemple de configuration dans le dossier /etc/asterisk)
make config (Installe les scripts de dmarrage)
Si tout se passe bien, votre procdure d'installation est maintenant termine.
A la fin de l'installation, on trouvera l'ensemble des fichiers de configuration, dans le dossier: /etc/asterisk.
Prise en main d'Asterisk - v13032 Jean GAUTIER 66
-
Prise en main d'Asterisk - v13032 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
On observe ensuite les processus et ports rseaux activs.
neststat -antup | grep asterisk
On voit que plusieurs ports sont ouverts.
A ce stade, se serveur Asterisk est prt tre configur.
Prise en main d'Asterisk - v13032 Jean GAUTIER 68
FonctionnalitsInstallation d'AsteriskLancement du programme AsteriskLancement de la console d'administrationConfiguration AsteriskLe fichier 'asterisk.conf'Le fichier 'sip.conf'Simplification de dclaration de postes dans le fichier 'sip.conf'.Le fichier 'iax.conf'Le plan de numrotation (dialplan)La cration du plan de numrotation (Dialplan)Les extensionsModes de fonctionnement AsteriskLes applicationsTraitement des erreurs et dlais d'attente dpassL'application Dial()Traitement des lignes occupesLes options de l'application Dial()Configuration pour partager un abonnement SIPInscription sur un serveur distantVariables prdfinisRgles de filtrage d'appelsMise en application simple d'AsteriskAnnexe 2 Configuration d'exempleAnnexe 3 Configuration diversesPr-requisPrcisions