Vous êtes sur la page 1sur 68

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

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

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

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 udp udp udp 0 0 0 0 0.0.0.0:4520 0 0.0.0.0:5060 0 0.0.0.0:4569 Foreign Address State 0.0.0.0:* port du protocole MGCP 0.0.0.0:* port du protocole SIP 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

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 Asterisk -rcvvv pour se connecter la console. o le nombre de 'v' augmente le degr de verbosit sur la console.

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.

Prise en main d'Asterisk - v13032

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.

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

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

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.

Prise en main d'Asterisk - v13032

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

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 correspond De 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 [101] host=dynamic nat=no call-limit=2 pickupgroup=1 callgroup=1 type=friend secret=poseidon callerid=Pierre <101> [102] host=dynamic nat=no call-limit=2 pickupgroup=1 callgroup=1 type=friend secret=poseidon callerid=Marie <102> [102](telephones) callerid=Marie <102> [telephones](!) host=dynamic nat=no call-limit=2 pickupgroup=1 callgroup=1 type=friend secret=poseidon [101](telephones) callerid=Pierre <101> [general] context=labo allow=alaw language=fr

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" <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.

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,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' ?

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,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.

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,Answer exten => 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 1
exten => 103,1,Answer exten => 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,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.

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

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.

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: extrait du fichier 'sip.conf'


[general] . .. ... register => login:MotDePasse@operateur /numro

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'.

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)} ${CALLERID(name)} ${CALLERID(all)} ${CONTEXT} ${TIMESTAMP} ${EXTEN} ${EXTEN}:N

: 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

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 deux 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 context=labo localnet=10.0.0.0/255.255.255.0 allow=ulaw [101] username=100 type=friend host=dynamic callerid="Pierre" <101> mailbox=101@labo [marie] username=101 type=friend host=dynamic callerid="Marie" <102> mailbox=102@labo indique le numro de port du protocole SIP indique le nom de contexte utilis par dfaut indique le rseau local o opre Asterisk spcifie le (ou les) Codec utilis nom d'un compte nom de l'utilisateur associ au compte mode de fonctionnement indique le mode d'adresse IP utilis configure l'identifiant du poste associe la boite vocale 101 au compte [101] nom du compte

Prise en main d'Asterisk - v13032

Jean GAUTIER

34

Fichier extensions.conf pour dfinir le plan de numrotation.


[general] static=yes [labo] exten => 101,1,Dial(SIP/101,10) exten => 101,2,Voicemail(101) exten => 101,3,Hangup exten => 102,1,Dial(SIP/marie,10) exten => 102,2,Voicemail(102) exten => 102,3,Hangup fait sonner le compte SIP '101' pendant 10 secondes renvoie l'appelant vers la boite vocale 101 raccroche et libre le canal fait sonner le compte SIP 'marie' le plan de numrotation n'est pas modifiable en CLI

Fichier voicemail.conf pour dfinir les boites vocales des postes.


[general] [zonemessages] paris = Europe/Paris|'vm-received' Q 'digits/at' R [labo] 101 => 1234,Pierre KIROUL,pkiroul@labo.local 102 => 1234,Marie ELEN,melen@labo.local associe le code 1234 la B.V. 101 de Pierre personnalise la gestion des 'locales'

Prise en main d'Asterisk - v13032

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.

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=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

Prise en main d'Asterisk - v13032

Jean GAUTIER

36

[marie] host=dynamic type=peer nat=no username=marie callerid=marie <102> mailbox=marie@labo

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

exten => s,n,Set(TIMEOUT(response)=15) fixe une temporisation d'attente (15 secondes)

[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 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

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.
Jean GAUTIER 39

Prise en main d'Asterisk - v13032

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 Jean GAUTIER 43

Prise en main d'Asterisk - v13032

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
Jean GAUTIER 45

Prise en main d'Asterisk - v13032

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 bindaddr=0.0.0.0 localnet=192.168.1.0/24 disallow=all ;allow=g729 allow=alaw allow=ulaw language=fr dtmfmode=rfc2833 rfc2833compensate=yes useragent=PABX Asterisk realm=2ip.local videosupport=no t38pt_udptl=no progressinband=no notifyringing=yes notifyhold=no subscribecontext=blf qualify=yes careinvite=no callevents=yes recordhistory=yes progressinband=yes allowguest=no ; Port UDP par dfaut du protocole SIP ; Adresse IP utilises ; Adresse des rseaux correspondant aux postes ; Dsactive tous les codecs ; Active le codec G729 ; Active le codec G711 alaw ; Active le codec G711 ulaw ; Langage utilis par dfaut (par les applications) ; Mode dtmf ; Amliore la gestion DTMF ; Chane d'identification du serveur ; Chane d'identification du domaine ; Supporte la transmission de vidos ; Supporte la transmission et rception de fax ; Indique l'tat du canal en mode 'inband' ; Ncessaire pour la supervision BLF ;" ;" " " " " " " " "

exterhost=mondomaine.local ; Nom DNS utilisable l'extrieur

; 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

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 <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

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 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

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) 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.

exten => _0141261234,n,Dial(SIP/101&SIP/102,20,dwtm) ;Fait sonner deux postes

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,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

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 exten => 101,1,Dial(SIP/101,15) exten => 101,2,Hangup si l'appelant est 0112182633, il entendra la tonalit 'occup' tout autre appelant fera sonner le poste 101

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

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.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).

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 make make install

(remplacer xx par la version installe) (procde la compilation des modules) (procde l'installation de l'application)

Installation de 'dahdi'

cd ../dahdi-linux ... make all make install make config

(adapter en fonction de la version installe)

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 ./configure

(A adapter en fonction de la version installe) (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 make install make samples make config (Va prparer les lments installer) (Compile et installe les lments) (copie des fichiers exemple de configuration dans le dossier /etc/asterisk) (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

Vous aimerez peut-être aussi