You are on page 1of 302

VoIPetToIPAsterisk

La tlphonie IP d'entreprise [2ime dition]

SbastienDON

Rsum
Cette nouvelle dition du livre VoIP-ToIP Asterisk, traite de lcosystme de la VoIP-ToIP en se basant sur Asterisk en version 1.6. Il est
principalement destin aux acteurs du domaine des systmes, rseaux et tlcoms dentreprises : consultants, intgrateurs, techniciens,
formateurs. Il constitue galement un point de dpart pour toute personne souhaitant dcouvrir et comprendre ce domaine de la Voix sur IP avec
Asterisk. De part son approche conseils et retours dexpriences, il sadresse galement aux dcideurs informatiques qui doivent faire voluer
leur architecture de tlphonie.
Il permet de dtailler toutes les tapes de la mise en place de lautocom Open Source Asterisk, de la conception-architecture la mise en
production. La dmarche progressive et pdagogique des diffrents chapitres permet daborder toutes les tapes indispensables pour mettre en
production une T-VoIP autour dAsterisk : du choix de larchitecture cible en intgrant le concept de VoIP mobile (smartphones) la mise en
oeuvre dun call center, en passant par linstallation du serveur, le choix des passerelles oprateurs, la ncessaire prparation du rseau, la
mise en place dun plan de numrotation prouv, linterconnexion de sites distants et lutilisation potentielle doutils supplmentaires
permettant de grer les faxs, les appels GSM, ... pour enrichir les fonctionnalits du PBX et apporter une vritable valeur ajoute lentreprise.
Chaque chapitre est pens pour permettre une implmentation rapide des concepts : de la thorie la pratique !
Tous les sujets sont prsents avec de nombreux exemples pratiques, tous tests en environnement de production. Des connaissances sur
ladministration dun systme Linux et de routeurs Cisco sont souhaitables pour tirer le meilleur profit de cet ouvrage.
[les chapitres du livre]
Avant-propos Lcosystme de la VoIP Stratgie darchitectures VoIP Installation dun serveur Asterisk Les passerelles oprateurs
Prparation du rseau Conception du plan de numrotation Amlioration du plan de numrotation Entreprise multisites Les outils
complmentaires Applications connexes Implmentation dun centre dappels Applications priphriques tiers Annexe A : Plan de
numrotation comment Annexe B : Liste des applications Asterisk Annexe C : Principaux fichiers de configuration Annexe D : Bibliographie

L'auteur
Sbastien DEON est Directeur Technique Adjoint au service Recherche et Dveloppement de la SSII Pharmagest Inter@active. Expert dans
les domaines de l'architecture d'infrastructure systme, rseaux et tlcom depuis plus de 15 ans, il travaille rgulirement sur des projets de
conception et d'intgration d'architecture Open Source (tlphonie Asterisk, messagerie Zimbra, ged Alfresco, portail Liferay, web-confrences
Dimdim, bpm...) destination de plusieurs milliers de postes et d'accs clients en France et en Europe. Consultant et crateur de ZedL, site
de publication d'ebooks spcialiss (ebooks.zedl.fr), il est galement l'auteur de Zimbra, Messagerie collaborative d'entreprise Open Source
aux Editions ENI.

Ce livre numrique a t conu et est diffus dans le respect des droits dauteur. Toutes les marques cites ont t dposes par leur diteur respectif. La loi du 11 Mars
1957 nautorisant aux termes des alinas 2 et 3 de larticle 41, dune part, que les copies ou reproductions strictement rserves lusage priv du copiste et non destines
une utilisation collective, et, dautre part, que les analyses et les courtes citations dans un but dexemple et dillustration, toute reprsentation ou reproduction intgrale,
ou partielle, faite sans le consentement de lauteur ou de ses ayants droit ou ayant cause, est illicite (alina 1er de larticle 40). Cette reprsentation ou reproduction, par
quelque procd que ce soit, constituerait donc une contrefaon sanctionne par les articles 425 et suivants du Code Pnal. Copyright Editions ENI
Ce livre numrique intgre plusieurs mesures de protection dont un marquage li votre identifiant visible sur les principales images.

ENI Editions - All rigths reserved - educ hafa

- 1-

Avantpropos
Ce livre est destin aux acteurs du domaine des systmes, rseaux et tlcoms dentreprises, ainsi qu toute
personnesouhaitantdcouvriretcomprendreledomainedelaVoixsurIP.Ilpermetdaborderlamiseen uvreet
linstallationdelautocomOpenSourceAsterisk.Ilsadressegalementauxdcideursinformatiquesquidoiventfaire
voluerleurarchitecturedetlphonie.Ladmarcheprogressivedesdiffrentschapitrespermetdidentifiertousles
pointstraiteravantunemiseenproductiondunsystme.

LeschapitressuivantsncessitentdescomptencesLinux:

InstallationdunserveurAsterisk

Conceptionduplandenumrotation

Amliorationduplandenumrotation

Entreprisemultisites

Lesoutilscomplmentaires

Applicationsconnexes

Implmentationduncentredappels

Outilspriphriquestiers

LechapitrePrparationdurseauncessitedescomptencesCisco.

LcosystmedelaVoIP
Lobjectifdecechapitreestdevousaider:

connatrelestermeslesplusutilissdelaVoIP

comprendreleconceptdeTVoIP

connatrelescomposantsmatrielsetlogiciels,notammentlescartesDigium

comprendrelefonctionnementdesprotocolesVoIP,notammentleprotocoleSIP

connatrelerledescodecsetfairelebonchoix

comprendrelesenjeuxdelaqualitdeservice.

StratgiedarchitecturesVoIP
Lobjectifdecechapitreestdevousaider:

fairelebonchoixdarchitecture,entenantcomptedelexistant

connatrelesdiffrentestapesdunprojetVoIP

expliquerlescomposantsduretoursurinvestissements.

InstallationdunserveurAsterisk

ENI Editions - All rigths reserved - educ hafa

- 1-

Lobjectifdecechapitreestdevousaider:

installerunserveurAsterisk

installerdestlphonesSIPetdessoftphones

mettreenrelationdespostesSIPeninterneetaveclemondeextrieur.

Lespasserellesoprateurs
Lobjectifdecechapitreestdevousaider:

comprendrelestechnologiestraditionnellesetfutures

connatrelesmcanismesdetrunkingSIP

avoirunpanoramadesoffresdumarch

connatrelescartesdecommunicationDigium

connatreunrouteurVoIPCisco.

Prparationdurseau
Lobjectifdecechapitreestdevousaider:

segmenterunLAN

mettreen uvrelesVLANssurdesswitchsetrouteursCisco

choisirunestratgiepourlamiseenplacedelaQoS.

Conceptionduplandenumrotation
Lobjectifdecechapitreestdevousaider:

comprendrelefonctionnementdunplandenumrotation

mettreenplaceunplandenumrotationaveclesfichierssip.confetextensions.conf

mettreenplaceunsystmedemessagerieunifieavecvoicemail.conf.

Amliorationduplandenumrotation
Lobjectifdecechapitreestdevousaider:

- 2-

amliorerlcritureduplandenumrotationavecdesmacros

dcouvriretutiliserdesfonctionsavances

mettreenplaceunsystmedeconfrenceavecMeetMe

utiliserdelavidoavecXLite

utiliserlabasededonnesAstDBetRealtime/MySQL.

ENI Editions - All rigths reserved - educ hafa

Entreprisemultisites
Lobjectifdecechapitreestdevousaider:

raliseruneinterconnexionentredeuxserveursAsterisk

comprendrelefonctionnementduprotocoleIAX

interconnecterdeuxPBXhtronges:AsteriketCiscoCallManager.

Lesoutilscomplmentaires
Lobjectifdecechapitreestdevousaider:

mettreenplaceunoutildestatistiquesetdesuividesappels

utiliserdesgraphiquesdemanagement

intgrerlagestiondefax

utiliserlAGI(requisGatewayInterface).

Applicationsconnexes
Lobjectifdechapitreestdevousaider:

comprendrelefonctionnementdelAsteriskManager

installerlesynthtiseurvocalFestival

mettreenplaceunIVR

dployerunefonctiondeclicktodial.

Implmentationduncentredappels
Lobjectifdecechapitreestdevousaider:

comprendrelesbesoinsfonctionnelsduncentredappel

mettreen uvreunegestiondefilesdattente

monitorerlecentredappels.

Outilspriphriquestiers
Lobjectifdecechapitreestdevousaider

dcouvrirlapasserelleGSMQuescom

comprendrelutilisationdunoutildecrationgraphiquededialplan:VisualDialplan

mettreenplaceunserveurdefaxavecHylafax

analyserlesliensavecZimbra,SugarCRM.

AnnexeA:Plandenumrotationcomment
ENI Editions - All rigths reserved - educ hafa

- 3-

AnnexeB:ListedesapplicationsAsterisk
AnnexeC:Principauxfichiersdeconfiguration
AnnexeD:Bibliographie

- 4-

ENI Editions - All rigths reserved - educ hafa

Introduction
Auparavant, la fonction informatique et la fonction tlphonie taient bien spares et il y avait bien deux types
dacteurs : les informaticiens et les tlphonistes. Les rseaux informatiques et les rseaux tlphoniques taient
dailleursdistincts.
La fusion des deux mondes, qui sest opre depuis environ 5 ans et qui va se poursuivre, a considrablement
bouleverslepaysagedelatlphoniedentrepriseetduparticulier.
Le mtier de tlphoniste a disparu (quelle entreprise dispose aujourdhui de postes ddis ce mtier ?) au profit
dunecomposanteTlphoniesurIPquincessite,avanttout,defortescomptencesensystmes,rseauxIPet
tlcoms.
Celadit,lavoixsurIPestundomainecomplexecomprenantbeaucoupdeconceptsindispensablesconnatre,avant
devouloirinstallersonpropresystmedetlphoniebassurAsterisk.
Delaveudesesconcepteurs,Asterisknestpasunsystmesimpleconfigurer.

ENI Editions - All rigths reserved - educ hafa

- 1-

Terminologiegnrale:leconceptdeTVoIP
LaTVoIP(TlphonieetVoixsurIP)estcomposdelaVoIPetdelaToIP.
* La VoIP (Voice over IP) concerne le c ur du systme de tlphonie, qui comprend tous les lments assurant le
transport de la voix : autocoms IP, passerelles de communication, rseaux oprateurs, communication intersites,
protocoledecommunication.LaVoIPrpondainsilaquestionde"quesepassetilaprsavoircomposunnumro
detlphone?".
Il est galement important dy associer la partie Gateway ou Passerelle qui permet deffectuer lvasion des flux
tlphoniquesverslerseaupublic(appelsverslesnumrosfixesetappelsverslesnumrosmobiles).Nousverrons
plusloindanscelivreletraitementspcialdesappelsverslesmobilesviaunepasserellespcifique.
* La ToIP (Telephony over IP) concerne uniquement la partie correspondante aux tlphones IP. Les softphones ou
logiciels tlphoniques, qui sinstallent sur un PC et qui "mulent" un tlphone IP, rentrent tout fait dans cette
catgorie. Depuis lavnement de liPhone et autres smartphones, il faut tenir compte galement de la possibilit
dutiliserdessoftphonesdepuiscetypedquipement.
Pourtrecomplet,ilconvientderajouterledomainedelaFoIP(FaxoverIP)quiconcernelapossibilitdenvoyeretde
recevoirdesfaxvialesrseauxdedonnesIP,encomparaisonauxsystmesanalogiquestraditionnels.Peucommun
ilyaencoredeuxoutroisansetbasalorssurdeslogicielspropritairesetdescartesmodemsphysiques,lefaxsur
IPestencoursdebanalisationaujourdhui.
noterquecesdeuxconceptssontindissociablespuisquilparatdifficiledefairedelaToIPsansVoIP(untlphoneIP
va toujours sauthentifier sur un autocom), et vice versa, un c ur de rseau en VoIP est inutilisable sans combins
tlphoniques. De mme, il est difficilement concevable denvisager un systme de FoIP sans avoir mis en place de
mcanismesderoutageetdepasserellesVoIP.
Desclients(tlphonesIP,softphones)sontrattachsunserveur(Asterisk)quileurattribuedesnumrosinternes
ouexternes(SDApourSlectionDirectelArrive).Ceserveurestconnectunepasserelle,viaunecartespcifique,
pourlacommunicationentranteetsortanteaveclemondeextrieur(appellerseaucommut).
Lesfaxentrantssontgrsparunrouteurquiaiguillelesfaxversunserveurdefaxalorsquelesfaxsortantssont
misdepuislamessagerie.
Lesappelsverslesmobilessontroutsversunepasserelleddie.

Tous les autres lments entrent dans le cadre de la tlphonie traditionnelle (postes analogiques, postes
numriques, autocoms non IP, lignes RTC, lignes T0/T2). Les technologies T0/T2 sont abordes au chapitre Les
passerellesoprateurs.
Il est bien videmment possible de conserver des terminaux analogiques (tlphones et fax) et de les coupler au
rseauIPviadesbotiersdeconversionappelsadaptateursATAquisont,engnral,peucoteux.

ENI Editions - All rigths reserved - educ hafa

- 1-

Lescomposantsmatrielsetlogiciels
1.Matriels
Pour raliser une infrastructure de tlphonie, il faut avoir recours de nombreux lments matriels, parfois
incompatiblesensembles.Laprudencesimposedoncavantdeffectuerlesinvestissementsncessaires.

a.Autocom
Ilsagitenfaitdunordinateurouplusexactementdunserveur(Dell,HP,IBM,Supermicro)quivahbergerlogiciel
(Asteriskouautre)etmatriel(systmedexploitation,mmoire,cartedecommunicationVoIP,carterseau,disque
dur, processeur...). Asterisk fonctionne sur la plupart des versions de Linux (Redhat, Centos, Mandriva, Debian...)
mais galement sur Windows (voir http://www.asteriskwin32.com ou http://www.willvoice.net ) mais il faut
reconnatrequelelogiciel,danscecas,voluemoinsvitequesurlesversionsLinux.
Danslecadredepetitestructure(moinsde5postes),pourdesraisonsdecots,ilestpossibledinstallerAsterisk
surunPCmmesicelaestdconseill(manquederedondance).Uneagencede15postes,parexemple,exigera
unserveuravec1Godemmoire.
Attention,
certains
matriels
ne
info.org/wiki/view/Asterisk+hardware).

sont

pas

compatibles

Asterisk

(voir

http://www.voip

b.TerminauxIP
IlsagiticidetlphonesIP(Aastra,Polycom,Thomson,Cisco,Snom,Swissvoice,Gandstream,Linkys,Siemens...)
ou softphones (ZoiperIdefisk, XLite, Brio, Skype, Ekiga...). La plupart des terminaux IP du march, utilisant le
protocoledecommunicationSIP,sontcompatiblesAsterisk.
LeprixduntlphoneIPvarieentre50et500euroslestlphonesdebonrapportqualitprixdetypeThomson
SpeedTouchST2030ouAastra55icotentenvironunecentainedeuros.

c.Routeursetswitchs
Les routeurs sont des quipements (Cisco, 3com...) permettant de faire communiquer des rseaux diffrents. Par
exemple, pour quun rseau adress en 192.168.1.0/24 puisse communiquer avec un rseau adress en
10.10.0.0/16,ilfautunquipementderoutageayantuneinterfacesurchaquerseau.
Lesrouteurssontindispensablespouracheminerlavoixsurlesrseauxetpeuventtrecombinsavecdesswitchs
poursegmenterleLANenplusieursLANsvirtuels,lesVLANs(VirtualLANs),afindesparerlespaquetsdedonnes
despaquetsvoix.Unrouteuragitauniveau3(routage)alorsquunswitchagitauniveau2(VLAN).

ais.

Certains modles dquipement sont routeurs et switchs la fois (CISCO 3560, 3750, 3COM 4500) ils
sontsouventplusonreuxlachatquelesdeuxsparmentmaispermettentuneanalysedurseauplus

Danscertainespetitesstructures,ilserapossibledesepasserdemcanismesdeVLANspourdesraisonsdecots
(conomiedetempsdeparamtrage,conomiesurlachatdeswitchsspcifiques),bienquecelasoitfortement
dconseill.
LemcanismedeVLANestdcritauchapitrePrparationdurseau.

d.Cartesdecommunication
LescartesdecommunicationpermettentdepasserdumondeIPaumondeRTC(RseauTlphoniqueCommut).
Certaines socits spcialises (Digium, Junghams, Sangoma, Atcom, beroNet, Dialogic, Eicon, open Vox)
fabriquentcetypedecartes.Cescartessontdirectementintgresdansleserveurautocom.
ExempledecartescommercialisesparlasocitDigium
Typedecarte

Utilisation

Schma

ENI Editions - All rigths reserved - educ hafa

- 1-

TDM400P

Carteanalogique
4interfacesmodulairesauxchoixpourdes
tlphonesanalogiques(FXS)oudeslignes
tlphoniques(FXO)

B410P

Cartenumrique4portsT0(jusqu8canaux
ensimultan)
InterfacesBRI

TE120P

cartenumrique1portT2(jusqu30canaux
ensimultan)

TE207P

cartenumrique2portsT2(jusqu60
canauxensimultan)

multioprateurs
antichohardware(moduleOctasis)
ChezCisco,lescartesT0et/ouT2peuventdirectementtreinstallesdanslesrouteursVoIPadquates.
Silacarteestinstalledansunrouteur(etnondansunserveurAsterisk),ellepermetdelibrerleserveur
des tches de gestion de la conversion IP/rseau commut. Ce dernier tant alors plus disponible pour
traiterleroutagedesappels.LechoixstratgiquedutiliserunrouteurVoIPpermetdelepositionnernimporteo
danslerseauetainsideledissocierdelautocom.

e.Botiersexternes
Dans certains cas de figures, notamment pour les petites structures o la notion financire est un lment
dterminant,ilpeuttreopportundenepasintgrerdecarteDigiumdansleserveurIPBX.Parexemple,unecarte
B410P cote environ 500 euros pour 4 ports T0. Or, si le besoin nest de disposer que dune interface T0, il est
judicieuxdeplacerunbotierexternalisdeconversionIP/T0detypePattonSmartNode4554(www.patton.com),
Mediatrix(www.media5corp.com)ouautresAudiocodes(www.audiocodes.com).
LesbotiersPattonsontdclinsparexempleselonplusieursformats:

Passerelle1T0:environ250euros

Passerelle2T0:environ400euros

Passerelle1T2:environ2000euros

PasserellePatton2T2:environ3000euros

Nousobservonsdoncque,selonlecasdefigure,ilfautadapterlesachats:
Besoin

- 2-

Matriel

Prix

1T0

Patton1T0

250euros

2T0

Patton2T0

400euros

4T0

DigiumB410P

500euros

ENI Editions - All rigths reserved - educ hafa

1T2

DigiumTE120P

500euros

2T2

DigiumTE207P

1000euros

Nous avons galement un autre raisonnement possible qui ne tient pas compte uniquement du prix faciale du
matrieldecommunicationmaisplusdunchoixdarchitecture:silechoixestdenepasmettredecartelintrieur
des serveurs, ce qui simplifie linstallation et la maintenance (rien de plus dsagrable que de devoir arrter un
serveurenproductionpourchangerunecarte!),alorsilfautprivilgierlessolutionsdetypesbotiersourouteurs
CiscoolinterconnexionaveclautocomsefaitenIP.
Exempledeschmaaveccarteintgreauserveur:

Exempledeschmaavecbotierexternalis:

f.Box"maison"
Il est possible de construire sa propre box en approvisionnant un quipement adquat de type miniPC chez
Lexcomparexemple(www.lex.com.tw)commelatwisteronousintgreronsunecarteDigium,undisquedur,une
compactFlash,unOSLinux,Asterisk.Latwisterprsentelavantagedtresolideetrobuste.
Ilestpossibledecouplercetteboxavecdautresfonctionnalitscommeunservicedemails,unservicedefax,un
servicedantivirus,unservicedestockagededocuments,unservicedevidosurveillanceAttentiontoutefoisne
pastropconcentrerdeservicessurunseulquipementoualorsprvoirunsystmedesecours.
Exemple:TwisterSCV763A4R10C(environ500euros),horscarteDigium

ENI Editions - All rigths reserved - educ hafa

- 3-

2.Logiciels
Cesontlesproduitsquistockentlaconfigurationdesutilisateurs,leplandenumrotation(lalogiquederoutagedes
appels),lesmessageriesvocales...etquiralisentleroutagedesappels.
Parmicettecatgorie,noustrouvonsdenombreuxproduitsparmilesquels(listebienentendunonexhaustive):
Autocomspropritaires

OmniPCX(AlcatelLucent).

NexSpan(AastraMatra,exEADStlcoms).

CallManager(Cisco).

MediaGateway(Avaya).

Autresconstructeurs:Ericsson,Mitel,3Com,Nortel.

AutocomsOpenSource

Asterisk.
SipX (www.sipfoundry.org) : beaucoup de fonctionnalits autour des communications unifies (confrences,
trunksip,IVR,gestiondeprsence,vido).
Elastix(www.elastix.org):appliancereadytouse.
My SIPSwitch (www.mysipswitch.com) et son successeur Sipsorcery (sipsorcery.codeplex.com) en version
bta(fvrier2010).

Oprateurstlcoms

Orange.

SFR(ex9Telecom/Cegetel).

Autresoprateurs:Bouygues,Free,Completel,AltitudeTelecom,FuturTelecom...

- 4-

Autres oprateurs alternatifs : toute entreprise peut monter un business doprateur tlcom et de
passerelles voix, en partant doffres des grands oprateurs en marque blanche ou en construisant ses
propresbriques.LademandedustatutdoprateurestsoumettrelARCEP(AutoritdeRgulationdes
Tlcoms). Le statut nest pas compliqu obtenir mais il faut savoir que cela ncessite une tche
administrative budgeter ainsi quune taxe qui est fonction du chiffre daffaires. Voir les modalits sur
http://www.arcep.fr.

ENI Editions - All rigths reserved - educ hafa

a.AlcatelLucent
Leconstructeurdtient50%departdemarchenFrance.Sagammedautocomentrepriseestdclineendeux
modles:

OmniPCXEnterprise(OXE)estunesolutionpourmoyennesentreprisesetgrandscomptespermettant,en
plusdesfonctionsclassiquesdetraitementdesappels,desfonctionsdemessagerie,dannuaireetdeCTI.
Les tlphones sont propritaires (ils ne fonctionnent quavec la gamme AlcatelLucent). Le nombre
dutilisateurspeutvoluerjusqu50000utilisateursenconfigurationrseau.
OmniPCX Office (OXO) est un serveur prconfigur pour petites et moyennes entreprises il peut
interconnecterenviron200utilisateurs.

Source:http://www.alcatellucent.com/wps/portal

b.AastraMatra(EADSTelecom)
Leconstructeurdtient30%dumarchfranais.SagammedentrepriseNeXspanestdclineentroismodlesC,
SetL.SeulslesderniersmodlessontcompatiblesavecleprotocoledecommunicationSIP.
LeNeXspanC(nonSIP)permetdegrerlatlphoniejusqu8utilisateurset60botesvocales.Ildisposedun
serveurvocalinteractifetpermetdinterconnecterdesterminauxnumriques,analogiques,DECT,faxetnumris.
Le NeXspan S permet de grer jusqu 112 utilisateurs TDM (Time Division Multiplexing est une technique de
multiplexagequipermetdefusionnerdescanauxfaibledbitenunseulhautdbit.Cetermeestutilispour
fairerfrencelatlphonietraditionnelleparrapportlaToIP)et250utilisateursIP.Iltientunechargede2000
appels/heurepour240botesvocalesenoutre,ilestgalementcompatibleSIPetWIFI.
Le NeXspan L permet de grer jusqu 640 utilisateurs TDM et 500 utilisateurs IP. Il tient une charge de 4500
appels/heurepour6000botesvocalespossibles.
Dautresmodlessontencorepluspuissants(NeXspanD,NeXspan500).
Source:http://www.aastra.fr/cps/rde/xchg/07/

c.Cisco
LeCiscoCallManager(CCM)estlautocomIP/SIPdeCisco.LaversionsinstallesurunserveurWindowsetpermet
dinterconnecterjusqu 30 000 utilisateurs IP. Une puissante interface graphique permet de manager lensemble
dusystme.LestlphonesSIPcompatiblessontnombreuxparmilesmodlesCisco:7905G,7912G,7940Gpar
exemple.
Unmcanismedecontrledadmissiondesappels(CAC)permetlemaintiendelaQoS(QualityOfServices)surles
liens WAN (Wan Area Network). Les appels sont transmis directement sur le rseau RTC en cas de panne du lien
WAN.LeCCMestgnralementcouplavecdesrouteursCiscoVoIPdisposantdecartedecommunication.
Source:http://www.cisco.com/web/FR/products/ip_tel/ip_tel_home.html

d.Avaya
AvayaestprsentsurlemarchfranaisavecsesMediaServerS8300,S8400,S8500,S8700(gestiondesappels
entrepostesIP)etsesMediaGatewayG250,G350,G430,G450,G650,IG550.
Source:http://www.avaya.fr

e.Asterisk
Principal logiciel autocom Open Source, Asterisk a t dvelopp en langage C sous Linux par Marc Spencer,
fondateurdelasocitDigium.
La version actuelle (septembre 2010) est la V1.6.2.13. La version 1.8.X est annonce en release pour la fin de
lanne2010.LaversionAsterisk1.8.0beta5estdisponiblesurlesitewww.asterisk.org.
Sources:voirAnnexeBibliographie
Plusieurs entreprises ont effectu des dveloppements autour du produit dorigineetainsipackagdevritables
produitscommerciaux.

ENI Editions - All rigths reserved - educ hafa

- 5-

DigiumavecsonABE(AsteriskBusinessEdition)
LABE (environ 1000 euros en une seule fois + maintenance annuelle) est une distribution supporte par
Digium donc elle permet dobtenir des garanties en terme de support, de fiabilit. Linstallation est
contraignantecarilfautsuivrelesprrequisentermededistributionLinux.
Source:http://www.digium.com

ProformatiqueavecsonapplianceXivo
Xivo(anagrammedeVoix)concerneplusieursappliancespackagesparProformatique:XivoOfficepour25
utilisateurs,XivoBusinesspour250utilisateursetplusetXivoCorporatepour1000utilisateursetplus.
Aprslinstallation,lideestdadministrerAsteriskviauneinterfacegraphique.
Source:http://www.xivo.fr

IPexTelecompourlessolutionsCentrex,businesstrunkingetfullservice(portabilit,08AB,)
IPexfournitdessolutionsdetlphonie,dedata,desurfinternetetdeconvergence.
Source:http://www.ipex.fr

WispepoursasolutionFonisk
WispeestunintgrateurlyonnaisetditeurdelasolutionFonisk,appliancedisposantduneGUI.Fonisk
estmultioprateuretmultiquipements.Elleestdclineenplusieursversions:

Fonisk50pour20communicationssimultanes.

Fonisk100pour50communicationssimultanes.

Fonisk100convientunesocitcomprenantde1001000postes.Leserveur(DellR4101u)est
redond (alimentation, disques). Le systme tourne sous Fedora Core 11 avec un Asterisk 1.6
(dernireversioncejour).

Fonisk100AApour200communicationssimultanes.

Fonisk100ACSpour1000communicationssimultanesetplus.

Wispe est galement reconnu pour sa comptence en matire de formation au dCAP (Digium Certified
Asterisk Professional), la certification Asterisk reconnue dans le monde de lentreprise. Le passage de
lexamencoteenviron200.
Source:http://www.wispe.com

EyePeapoursapolyvalencedanslemondedelaVoIP
EyePeaestunintgrateurbelgequiapouroriginalitdavoirdesprocessdeproduction,solides,venantdu
monde de lindustrie. Elle dveloppe son expertise autour de nombreux produits : Asterisk bien sr, mais
aussi la GUI Scopserv (www.scopserv.com), la solution canadienne de call center Aheeva CCS
(www.aheeva.com), la solution denregistrement de VoIP Orecx (www.orecx.com), la solution espagnole
i6Net dIVR (Interactive Video Response) , dIVVR (Interactive Voice and Video Response) et de convergence
tlphonie/vido/3G (www.i6net.com) et la solution de Flashtosip Intellivic permettant la convergence
SIP/Web(www.intellivic.com).
Source:http://www.eyepea.eu

f.SipX
SipX, uniquement disponible sous Linux, est une alternative libre Asterisk qui permet de disposer dun serveur

- 6-

ENI Editions - All rigths reserved - educ hafa

iPBX, dun serveur de messagerie vocale, dun outil dadministration en mode web, de softphones IP. La socit
Pingetestleprincipalsponsordeceprojet.
Sources:http://www.sipfoundry.org/sipXpbx/,http://www.pingtel.com/

g.Orange
Loprateurestprsentgrceladistributiondediffrentsmodles:

GammeDiatonissrie2A,ediatonisS,M,L,SX/XSDECT,Easy(Alcatel)

CiscoCallManager(Cisco)

NeXspan(AastraMatra)

Source:http://www.orange.fr
Orangecommercialisegalementdeuxsolutions:

BIC(BusinessInternetCentrex)
IlsagitdunesolutiondetypeCentrexquipermetdefournirdelinternetetdelaVoIPenmodeexternalis.
Lestlphonessontlous.

BIV(BusinessInternetVoix)
Il sagit dune solution alternative BIC pour les entreprises disposant dj dun autocom et de
tlphones:fournituredunfluxinternetetdunfluxentrant/sortantdetlphonie(communicationillimite
avec les fixes France) avec tarifs avantageux vers les mobiles et international. BIV est bti autour dune
Businesslivebox,installeenlocaletmanageparOrange.

ExempledetypesdeBIV(prixnoncontractuels,sourceorange.fr):
BIV400/ADSL

BusinessInternetVoixetInternet
pour2T0(4Canauxvoix)+ADSL
8Mmax

Abonnement:186ht/moisFrais
dAccsauService:250ht

BIV2000/SDSL2Mb/s

BusinessInternetVoixetInternet
BIV2000pour20canauxvoixsur
lienSDSL2MB

Abonnement:916ht/moisFrais
dAccsauService:750ht

LoffretenduedeBIVprsentelavantagedepouvoirrpondrepresquenimportequeltypedestructure.Notons
toutefois la comparaison avec le prix dun ADSL seul livebox (environ 30 euros/mois) et dun abonnement 2T0
(environ30euros/mois)auquelilfautrajouterlecotdescommunications.
BIVest"brid"entermesdecanauxdecommunicationetnesaitmonterjusqu30canauxcommeuneT2
classique.

h.9Telecom
Les solutions sont exclusivement IP et concernent les petites structures. Voir le chapitre Les passerelles
oprateurs.

ENI Editions - All rigths reserved - educ hafa

- 7-

LesprotocolesdelaVoIP
Au sens dfinition, un protocole est une formalisation standardise permettant la communication entre plusieurs
processusautrementdit,cestunensembledeprocduresetderglesquiserventlmissionetlarceptiondes
donnessurunrseau.
Dans le milieu des tlcoms et rseaux, chaque applicatif a son protocole. Le plus clbre et le plus utilis est le
protocoleTCP/IP(TransmissionControlProtocol/InternetProtocol).
Toute la difficult de la VoIP est de transformer un flux voix de type audio en numrique (dcoupage en paquets de
linformation)afindelefairetransitersurlesrseauxIPetdeffectuerloprationinversedanslebonordreafinquele
correspondantcomprenneparfaitementlefluxvoixaudio,etcecientempsrel(moinsde300ms).
La notion de temps rel est une contrainte que le transport des flux de donnes classiques (protocoles SMTP, FTP,
HTTP...)napasgrer.

1.SIP
LeprotocoleSIP(SessionInitiationProtocol)estunprotocoledetransportquidatede1996,tabliparlIETF(Internet
EngineeringTaskForce).IlestdcritdansleRFC3261(RequestForComments).
Il fonctionne en mode client/serveur : le tlphone (client) envoie des requtes au serveur SIP (autocom) ou vers
dautresclientsSIP.Cesrequtessontenfaitdespaquetsdedonnesquicontiennentdesinformationsdestination
duserveurSIP.
Depuis 2004, SIP sest impos comme le protocole de choix en matire de VoIP en raison de sa simplicit et de sa
disponibilitgratuiteilestdailleursimplmentdanslamajoritdesmatrielsetlogicielsfourniscejourparles
constructeursetditeurs.
LestroiscomposantsdeSIP
SIPestbassurunUserAgent(UA),unregistraretunproxy.

Le User Agent est le client tels que les tlphones SIP, les softphones, les passerelles SIP. Les UAs
senregistrentauprsdunregistrarmaisilestpossiblequedeuxUAstablissentunesessionensemble.
Le Registrar reprsente le serveur SIP, responsable de la mise en relation des sessions SIP partir des
requtes mises par les UAs pour dterminer leur emplacement. Une requte (REGISTER) contient donc
ladresseIPdelUAetuneURI(UniformResourceIdentifier)detypetest@mydomain.fr.
Le Proxy reprsente galement un serveur SIP mais il va servir dintermdiaire entre deux UAs qui ne
connaissent pas leur adresse IP. Le Proxy est capable de demander au Registrar de lui fournir les couples
(adresseIP/URI).

SIPestissudumondedelInternet,contrairementdautresprotocolesissusdumondetraditionneldelatlphonie,
cequienfaitungagedemeilleureintgrationaveclemondeITactuel(web2.0,mobile,messagerieinstantane).

a.LefonctionnementdeSIP
tantdonnqueleportstandarddeSIPestUDP5060,ilestpossiblededterminerleschangesentreunclientet
unserveurlaidedunetraceEtherealoutcpdump(logicielsdecapturedetrames).
Danslexemplesuivant,unclientSIPdontladresseIPest192.168.1.12tentededialogueravecleserveurSIPdont
ladresseIPest192.168.1.50:
N Source
Destination
1
192.168.1.12 192.168.1.50
sip:192.168.1.50
2
192.168.1.50 192.168.1.12
3
192.168.1.50 192.168.1.12
4
192.168.1.50 192.168.1.12
sip:7114@192.168.1.12:5060
5
192.168.1.12 192.168.1.50

Protocole
SIP

Dsignation
Request:REGISTER

SIP
SIP
SIP

Status : 100 Trying


Status : 200 Ok
Request:NOTIFY

SIP

Status : 200 Ok

1:leclienttentedesenregistrerauprsduserveurilluienvoieunerequte(REGISTER).

ENI Editions - All rigths reserved - educ hafa

- 1-

2:leserveurrpond100Trying(larequteabientreuetestencoursdetraitement).
3:leserveurrpond200Ok.Lenregistrementduclientauserveursestcorrectementralis.
4:leserveurdemande(NOTIFY)alorsauclientlenomdelutilisateur7114.
5:leclientrpond200Ok,silestconfigurentantquutilisateur7114.

b.LescodesretourdeSIP
Ilexistesixtypesderponsesauxrequtesenvoyes:

1xx=Informationrequtereueparledestinataireettraitementencours(180=entraindesonner,100
=trying).

2xx=Succs(200=OK,202=accepte).

3xx=RedirectionAttenteduneautreactionavantlavalidationdelarequte.

4xx=Erreurclientrequtecontenantunesyntaxeerroneounepouvantpastretraiteparleserveur
(404 = Not found = non trouv, 401 = Unauthorized, 407 = Proxy Authentification Required, 408 =
RegistrationerrorRequestTimeout).

5xx=Erreurserveurrequtecorrectemaisproblmedetraitementdelapartduserveur.

6xx=Echecgnralrequtenepouvanttretraiteparaucunserveur.

c.LadressagedeSIP
SIPutiliselesURL(UniformRessourceLocators)dontleformatestlesuivant:
Sip :u@h
avec u=nom dutilisateur et h=nom dhte (domaine ou adresse IP)
ExempledadresseSIP

sip:7114@192.168.1.12

sip:lou@sipserveur.societe.com

sip:7114@sipserveur.societe.com

Exempledemiseenrelationde2terminauxSIP
NoussupposonsquelesutilisateursEricetSylviesontdjcorrectementenregistrssurleserveur.

- 2-

ENI Editions - All rigths reserved - educ hafa

d.LesrequtesSIP
Ilexisteplusieurstypesderequtesentreunclientetunserveurouentredeuxclients:

REGISTER:leclienttentedesenregistrerauprsduserveurSIP.

INVITE:leclientdemandeltablissementdunesessionversunautreclient.

REINVITE:ledestinatairesouhaiteunerengociationdesparamtres(codecs...).

ACK:requtedeconfirmationdelapartdelmetteurversledestinatairepourluidirequilabienreula
requtedesuccs200OKsademandedINVITE.

BYE:encasdeterminaisondesession.

CANCEL:encasdannulationdunerequte.

e.LasignalisationSDP
LeprotocoleSDP(SessionDescriptionProtocol)estunformatdedescriptionetdinitialisationdesparamtresdune
session multimdia (IETF RFC 2327 Avril 1998) et concerne la signalisation de SIP. Des informations SDP sont
injectes dans chaque paquet SIP (afin de prciser les caractristiques des terminaux, autrement dit les codecs
supports).

f.LeproblmedunattageavecSIP
LeprotocoleSIPconnatdesdifficultstraverserlesquipementsquipsdemcanismedeNAT(NetworkAdresse
Translation)commelesfirewallsetlesrouteurs.Eneffet,SIPencapsuletouteslesdonnescomprenantlesadresses
IP, alors que le NAT a besoin de ces informations afin de faire passer les paquets. Les communications sont alors
bloquesparlefirewall.
MaisAsteriskdisposeduncontournementavecleparamtrenat=yes(danslefichier/etc/asterisk/sip.conf)
indiquer pour un client SIP devant fonctionner derrire du NAT. Cela permet Asterisk dignorer les
informationscontenuesdanslesenttesSIPetSDP.

ENI Editions - All rigths reserved - educ hafa

- 3-

SileprojetOpenSourcedemessagerieinstantaneJabber(www.jabber.org)avaitretenuSIPcommeprotocolede
VoIP, il est fort probable que, dans un souci de meilleure gestion du NAT, beaucoup de softphones auraient t
remplacspardesclientsJabber.MaisJabberaretenuJinglecommeprotocoledecommunication.

2.IAX
Le protocole InterAsterisk eXchange (prononc "X") a t mis au point par la socit Digium uniquement pour
permettreplusieursserveursAsteriskdecommuniquerentreeux.IAXestunprotocolepeertopeerdesignalisation
etdetransportdelavoix.
IAX2utiliseunportUDPunique(port4569)pourlasignalisation(fluxdecontrle)etlesdonnes(fluxRTP)(alorsque
IAX1utilisaitleport5036).
IAX est apparu aprs SIP et est en train de devenir une vritable alternative, au point que bon nombre de
constructeursetoprateurslontimplmentdansleursquipements.Ilpermetdconomiserdelabandepassante
enagrgeantplusieurssessionsdansunseulfluxdedonnes.
Enfin,ilpermetdefonctionnerparfaitementderrireduNAT.
ExempledtablissementdunecommunicationIAXentredeuxclients
Client IAX
Clients IAX
==>
message NEW
==>
<==
message ACCEPT
<==
==>
message ACK
==>
<==
message RINGING <==
==>
message ACK
==>
<==
message ANSWER
<==
==>
message ACK
==>
<====== Communication full-duplex =====>
LechapitreEntreprisemultisitesprsenteendtaillesfichiersdeconfigurationdutrunkingIAX.

3.RTP/RTCP
LeprotocoleRTP(RealTimeProtocol),misaupointparlIETFen1996(RFC1890),permetdetransmettretouttypede
donnessoumisesauxcontraintesdetempsrel(audioetvidoenparticulier)delafaonsuivante:

identificationducontenudelinformation(audio,vido)
ajoutdeflagstemporels(timestamp)etdenumrossquentielsauxpaquetscesinformationsvontservir
lareconstitutiondespaquetslarriveetnotammentdtectersidespaquetssesontperdus
contrleducontenularrive.

RTPfonctionnesurUDP,enunicast(pointpoint)ouenmulticast(multipoint).Ilnutilisepasdeportstatiquemaisle
port pair duncoupledeportslautreportimpair,immdiatementsuprieur,estutilisparleprotocoleRTCP(Real
TimeTransferControlProtocol)quiestunprotocoledecontrledesfluxRTP.
ChaqueapplicatifmdiaesttransportdansunesessionRTPdistincte.
SIP/SDPsoccupedelasignalisationetdelamiseenrelationdedeuxterminauxSIP,alorsquecestRTPqui
transportelavoix.

4.MGCP
LeprotocoleMGCP(MediaGatewayControlProtocol)estdfinidanslaRFC3435.
Lintelligence,contrairementSIP,nestpasdansleclientdetlphoniemaisdanslec urdurseau.Lestlphones
MGCPnepeuventpassappelerentreeuxmaisdoiventpasserobligatoirementparuncontrleurcentral:lagateway.
BienquAsterisksupporteMGCP(mgcp.confetchan_mgcp.so),ilestpeuttreprfrabledavoirunparchomogneet
doncdemigrerlestlphonesIPMGCPenSIP.

- 4-

ENI Editions - All rigths reserved - educ hafa

IlestnoterqueMGCPestenpertedevitessefaceSIPetIAX.

5.H.323
LeprotocoleH.323atdveloppparlUIT(UnionInternationaldesTlcommunication)en1996,afindefournirun
mcanismedetransportIPpourlavisioconfrence.
Aujourdhui, il est plus utilis chez les oprateurs quenentreprise.LeclientH.323leplusconnuestNetMeetingde
Microsoft.
H.323 est un protocole complexe qui utilise RTP/RTCP pour transporter la voix, ainsi que des codecs audio (G711,
G723.1,G728)etdescodecsvido(H.261etH.263).
IlestnoterquAsterisksupporteH.323(modulechan_h323.so).

6.SCCP
LeprotocoleSCCP(SkinnyClientControlProtocol)estleprotocolepropritairedeCisco.
CestleprotocoleutilisdanstouslestlphonesIPCiscoetdanslautocomCiscoCallManager.
BienquAsterisksupporteSkinny,ilestprfrabledemigrerlestlphonesCiscoenSIP.
La mise en uvre de TVoIP, avec un autocom derrire un firewall dans une DMZ, ncessite dautoriserles
portsdesprotocolesutiliss.

ExemplederglesdeTVoIPavecfirewall/NAT

ENI Editions - All rigths reserved - educ hafa

- 5-

Lescodecs
Un codec est un algorithme qui permet de COmpresser/DECompresser les flux numriques en flux analogiques et
inversement.
Ilpeutseprsentersouslaformelogicielle(programmeinstallersurAsteriskoudjprsent)oumatrielle(carte
spcifiqueinstallerdansleserveur).

1.G.711
DansAsterisk,cecodecprendlenomdeulaw(law)pourlAmriqueduNordetalawpourlerestedumondele
codec G.711 alaw est donc employ en France. G711 utilise une bande passante leve 64kp/s (il faut rajouter
loverhead,liauxfluxRTP),maisconsommepeudeCPUsurleserveurpuisquilnestpratiquementpascompress.
LaqualitdeG.711estexcellenteetgalecelleduRTCclassique.
CecodecestutiliserdeprfrencedansunLAN(LocalAreaNetwork)olaressourceenbandepassantenepose
pasdeproblmeparticulier.
Autrespointsimportantsnepasngliger,G711estgratuitetestimplmentdanslamajoritdesquipementsde
TVoIP.

2.G.723.1
Cecodecpayantestutilisuniquementencasdetranscodage,G.723.1fonctionne5,3Kb/sou6,3Kb/sdoncest
trsintressantdanslecasdefaiblesbandespassantes.

3.G.726
Ilsagit duncodecgratuitquiutilisediffrentsdbits:16,24ou32Kb/s.IlestsupportparAsteriskuniquement
danssaversion32bits.
Cestuntrsbonrapportqualitsonore/utilisationCPU.

4.G.729
Cecodecrduit8Kb/slaconsommationdunappel,auquelilfautajouterloverheadIP,celafaitundbitrelde40
Kb/senviron.
Lintrt principal de G729, utilis avec Asterisk, est de rduire la bande passante ncessaire donc est source de
gain.AsterisksupporteseulementleG.729AnnexeA(G.729a).
Loverhead IP dpend de la configuration matrielle du serveur. Par exemple, un Xeon 1.8 GHz permet environ 60
appelssimultansenG729alorsquunXeon2.8Ghzenpermet80.
La licence est payante et sinstalle sur le serveur Asterisk. Il faut une licence par communication qui utilise le
transcodage.
Sileserveurnefaitpasdetranscodage,ilnyapasbesoindelicences.
Parcontre,sileserveurfaitducodage/dcodage(clientenG711a,AsteriskenG711a/G729,oprateurenG729),il
fautautantdelicencequelonsouhaiteavoirdecommunicationssimultanes.
Lesperformancesdececodecsontimpressionnantesmaiscelancessitebeaucoupderessourceprocesseursurle
serveur.
Pouravoir30communicationssimultanessurAsteriskenG729,ilfautacheterunpoolde30licences,soitenviron
300$US.ChaquepoolestddiunserveurAsterisk.

5.GSM
GSMestlecodecdAsterisketnerequiertpasdelicences.
Il utilise une bande passante intressante de 13 Kbps, consomme beaucoup moins de ressource processeur que

ENI Editions - All rigths reserved - educ hafa

- 1-

G.729a,toutentanttrsperformant.Seulinconvnient,lesonpeutsavrerdemoinsbonnequalitqueceluiavec
G.729a.

6.ILBC(InternetLowBitrateCodec)
Cecodec,supportparAsterisk,estlibrededroits.Ilfonctionne13,3Kb/sou15,2Kb/smaisnesestpasencore
imposcommeunstandard.CertainstlphonesIPnelimplmententdoncpasencore.
IlestconsommateurdeCPUAsteriskmaisrendunebonnequalit.

7.MesuresaveclindicateurMOS
LindicateurMOS(MeanOpinionScore)permetdemesurerlaqualitdelavoix:
5:Excellent4:Bon3:AssezBon2:Pauvre1:Mauvais
Codec

Dbits(Kb/s)

MOS

G.711

64

4,1

G.723.1

6,4

3,9

G.726

32

3,85

G.729

3,92

GSM

13

3,5

UncodecdonnantunevaleurMOSinfrieure3,9entraneuninconfortchezlesutilisateurs.
retenir : une communication ToIP de bout en bout, dans 100% des cas, est impossible en raison des diffrents
transcodagesralissdanslesrseauxdetransportdelavoix.Celaengendredoncinvitablementunedgradation
dusignaldoncunebaisseenqualitsonore.
Danslamesuredupossible,ilfaudrachoisirderesterenmodenoncompressouenmodecompressdebouten
bout.

- 2-

ENI Editions - All rigths reserved - educ hafa

Laqualitdeservice(QoS)
1.Gnralits
Le signal de la voix humaine est analogique pour quil soit transport de lmetteur vers le destinataire sur un
rseau IP, il va subir toute une srie de cheminement : passage dans de nombreux quipements htrognes,
numrisation, compression, dcompression, utilisation de lignes ADSL... Et cestprcismentcecheminementquiva
treloriginedesadprciation.
Unensembledemcanismeestalorsncessairepourviteraumaximumcettedprciation:laQoS.
Sansmcanismeprcisdeprioritisation,touslesfluxsontaummeniveausurunebandepassantedonne.
ExempledungrosenvoidefichiersFTP
HTTP
SMTP
FTP
LienADSLavecunebandepassantede1Mb/s FTP
endownload256Kb/senupload

VOIP
SIP/RTP
Autres flux

Ici, cest le sens montant qui nous intresse. supposer que nous dcidions denvoyer un fichier important qui
monopolisetoutelabandepassante,soituntauxdetransfertde32Ko/ssiunecommunicationVoIPestencours,il
ny aura donc plus de bande passante disponible et les paquets VoIP seront achemins en temps diffrs cela
provoqueradoncunecommunicationdemauvaisequalitvoireinaudible,toutletempsdutransfertdefichier.
Laqualitdcoutedpenddudlaidetransmissiondelavoix:
Dlaidetransmissiondelavoix

Qualitdcoute

<300ms

Excellente

Entre300et500ms

Moyenne

Entre500ms1s

Faible

>1s

Impossible

2.QoSoucanauxdeliaisonddis
Danslamajoritdesentreprises,lesliensintersitessontgrsparunoprateurquiamisenplaceunrseaupriv
avec des quipements permettant dobtenir de la QoS ATM (Asynchronous Transfert Mode) et/ou IP. Ces rseaux
utilisent souvent le MPLS (MultiProtocol Label Switching) qui fonctionne par marquage de paquets et assignation de
priorit.Ensuite,cesontlesrouteursquisontchargsdaiguillercorrectementlespaquets.
La mthode DiffServ (Differentied Service) permet galement le marquage et la prioritisation des paquets mais ne
garantitenrienlacheminementcorrectdespaquetsvoix.
Sur un rseau qui nimplmente pas de mcanisme de QoS, Internet par exemple, rien ne garantit donc la qualit
dcoute.
DanslecasdunFAI(FournisseurdAccsInternet)proposantuneoffredetypeADSL(AsymetricDigitalSubscriberLine),
deuxstratgiessontalorspossibles:

ConstruirelesfeuillesADSLdesesclientssurdumonoVCetapporterdelaQoSIP:

ENI Editions - All rigths reserved - educ hafa

- 1-

pardfaut,uneligneADSLestmonoVC:uncanaluniquedetransmissiondesdonnesetdelavoix.

utilisationdemodemrouteursupportantlaQoS.

miseen uvredquipementssupportantlaQoSenc urderseau.

ConstruirelesfeuillesADSLdesesclientssurdesliensdetypebiVC:

UnlienbiVCdisposeduncanalpremiumpourtransporterlesfluxsensibles(lavoix)etuncanalBest
effort(pourtoutleresteetnotammentlesurf).

Unc urderseaucapabledeterminerdestunnelsBesteffortetdestunnelsPremium.

LaQoSnestdoncplusncessairemaiscelasupposedesrouteursmultiVC.

DanslecasduneoffredetypeSDSL,lemcanismedeQoSdoittreconsidrdiffremment:enc urderseauet
surlesrouteursdextrmit.
Orange Business Services (OBS) ne propose pas de la QoS sur tous ses liens SDSL (les faibles dbits sont
carts).Demme,lorsquelleestprsente,laQoSsappliqueuniquementsurledbitgaranti.
Sur un rseau de collecte ADSL, il est possible de crer des VPNs pour un ensemble de clients via un paramtrage
adquatsurlesrouteurscentrauxdeterminaisondetunnelsetainsidyinjecterdesmcanismesdeQoS.
ExempledemiseenplaceduneQoSsurunrseauMPLSentredeuxsites.
Supposonslesdeuxsitessuivants:NantesetStrasbourg,relisentreeuxviaunVPNoprateurbassurdesliens
SDSL. Les deux sites ont besoin de faire passer des flux de VoIP, surf internet, messagerie, visioconfrence,
applicatifsmtiers:

Serveurmtier:192.168.40.100,fluxdetypeSQL*Net:port1521,fluxcitrix,fluxTSE.

ServeurVoIPsurNantes:192.168.35.10avecdespostestlphoniquesdanslesubnet192.168.35.0/24.

ServeurVoIPsurStrasbourg:192.168.90.10avecdespostestlphoniquesdanslesubnet192.168.90.0/24.

IlfaudraalorsraliserlaQoSsuivantesurlesrouteursdechaquesiteetdanslec urdurseauMPLS:

Classepremium(classeprioritaire)
ServiceVoIP:udp/tcp4569(iax),udp/tcp5060(sip)sinouslaissonsenltat,lesfluxdevoixneserontpas
priorisspuisquilspassentenRTP/RTCP.Lesportsdecesdernierschangeantconstamment,ilestcourantde
rajouter les subnets concerns par la VoIP dans cette classe premium, soit 192.168.35.0/24 et
192.168.90.0/24.
Il convient galement de rajouter galement les flux de visioconfrence, de prfrence une adresse IP de
serveur(sileserveurestexternalis,ilfautrajoutersonIPpublique).

Classesecondaire(fluxmtiersparexemple)
Servicemtier:serveur192.168.40.100etportudp/tcp1521,portCitrix1494,portTSE3389

Classedfautoubesteffort
Celaconcernelereste(surf,messagerie)

Bienvidemment,surchacundesliens,ilfaudradfinirlepourcentagerservchaqueclasseentenantcomptede
labandepassante,parexemple:
40%pourlaVoIP,40%pourlesapplicatifsmtierset20%pourlebesteffort.
Attention,laQosnesappliquequesilelienestsatur.
- 2-

ENI Editions - All rigths reserved - educ hafa

Aufildutemps,nousvoyonsquelesprixdesliensSDSLsontenbaisse.Celaimpliquequelastratgieactuellede
gestiondelaQoSnestpaslammequilyacinqans.Parfois,ilfautsavoirinvestiretprendreunlienSDSL4Mb/s
pluttquedeprendreunlien1Mb/setpasserbeaucoupdetempstunerlaQoS.
Les prix SDSL de loffre DSL Entreprises dOrange permettant une collecte SDSL ont subi une baisse
significativedeprixau1erjuillet2010.

ENI Editions - All rigths reserved - educ hafa

- 3-

Introduction
LobjectifdecechapitreestdeprsenterlesdiffrentesarchitecturesdeTVoIP(TelephonyandVoiceOverIP)quisont
ralisablescejour,comptetenudesmoyenstechnologiquesetdesoffresdesoprateurstlcomdumarch.
Avant tout, la premire question se poser est "Pourquoi migrer vers de la voix sur IP ?". En effet, pourquoi les
entreprises sontelles condamnes faire voluer leur architecture de tlphonie et pourquoi surtout prendre des
risquesenchangeantunsystmedetlphonietraditionnellequiafaitsespreuvesdansletempsetoilyatoujours
unetonalitlorsquelondcrochelecombin?
Larponseestdanslaquestion:lensembledestechnologiesdessystmesdinformationdaujourdhuireposesurle
protocoleIPetlavoix,aummetitrequuneapplicationdetype"donnes"(siteweb,logicielmtier,messagerie,base
de donnes...) ne peut chapper ce razdemare, au risque dtre compltement cloisonne, marginalise et, au
final,abandonne.
Quipeutimagineruneseulesecondequelesystmedecommunicationtlphoniquenepuissepascommuniqueravec
un"agent"matriel,logicielouhumaindelentreprise?Autrementdit,dansunmondetechnologiqueotoutestinter
communicant, quel serait la place dun systme qui ne pourrait pas entrer en communication avec un serveur, une
applicationdegestionderelationclientouencoreunemessagerielectronique?
Cest en banalisant la voix sur IP en tant quapplication, futelle dune extrme criticit, que cette migration sera
pleinementrussie.
Depuis quelques mois maintenant, le nouveau phnomne "iPhone" est en passe de se banaliser au sein des
entreprises.Eneffet,liPhonearelguenquelquesmoistouslessmartphonesdumarchloinderrireetlemodle
commercial applicatif avec lAppstore prfigure la nouvelle faon de vendre des logiciels. Ce succs ne nous tonne
gure tant ce type doutils manquait cruellement en entreprise : un seul outil qui tient dans la main avec toutes les
fonctionnalitsdontleprofessionnelouleparticulierabesoin.
LamobilitestdoncunnouvellmentprendreencomptedansleprojetdemigrationlaVoIP:ilfaudradsormais
yassocierla"VoIPmobile".
DciderdimplmenterdelaVoIPauseinduneentreprisencessitedeposerlesbonnesquestions:

Quelleestlarchitecturetlcom,systmeetrseauexistante?

Quelssontlesservicesquiserontdisponiblespourlesutilisateursfinaux?

Quelestleplandedploiementmettreen uvre?

Quelestleprimtrebudgtaire?

Quel est le retour sur investissement (ROI pour Return On Investment) escompt ? Estil qualifiable et
quantifiable?

Enfonctiondesrponsescesquestions,nousallonstenterdebtirlarchitectureidale.

ENI Editions - All rigths reserved - educ hafa

- 1-

Comprhensiondelarchitectureexistante?
Il faut bien constater que la priode actuelle est propice la migration vers la ToIP puisque les autocoms (PABX)
dentreprisesarriventenfindecyclebiensouvent,ilsonttachetslafindesannes1990,bonsnombresdeDSI
souhaitant dployer une tlphonie permettant dviter le fameux bug de lan 2000 (bug qui na finalement pas
vraimenteulieu).Lamortissement matriel a eu lieu (en moyenne 6 ans) et le mainteneur (bien souvent celui qui a
venduetinstalllautocom)proposesoitunrenouvellementsurlammetechnologie,soitunetransitionendouceur
verslemondeIP,soitunemigrationtotaleenIP.
Lanalyse de larchitecture existante est importante car de nombreux paramtres doivent tre pris en compte et un
oubliinitialpeutavoirdesconsquencesinattenduesetngativesentermefinancierparexemple,installerdelaT
VoIP sur un systme de cblage ancien (catgorie 3), ne pas tenir compte dun renouvellement indispensable des
switchs(cepointestprsentauchapitrePrparationdurseau)ouencorenepastenircomptedesagencesdune
entreprise.
Defaongnrale,troisscnariospermettentdorienteretdarrterlastratgiedemigration.

1.Scnario1:renouvellementsurlammetechnologienumrique
LentreprisenestpasprtepasserlaVoIPcarellenevoitnilesenjeux,nilesavantagesetnedisposepasde
connaissancesurlatechnologie.40%desentreprisesfranaisessontdanscecas.Leseulchoixpossible,alors,est
derenouvelerlautocomprimtreidentique.
Avantages:

Changementdesmatrielsanalogiqueset/ounumriques:centraltlphonique,tlphones.

Nouvellefonctionnalitlogicielle:administrationweb(utilepourladministrateur).

Pasdinvestissemententermedecblageetdlmentsactifs.

Peudeformationdesutilisateurs.

Inconvnients:

Dpendancedunprestataire(contratdemaintenanceobligatoire,modificationpayante...).

AucunepossibilitdeCTI(CouplageTlphonieInformatique).

Investissementdansunetechnologievieillissante.

2.Scnario2:transitionverslemondeIP
Lentreprise souhaite conserver ses acquis tout en souhaitant tablir un "pont" vers le monde IP. Ce choix est
souventdictparlavolontdemettreenplaceuneapplicationdeCTI.
Lautocom est chang ou conserv, une carte IP est installe dans lautocom qui est renouvel ou bien souvent
conserv.Cestunesolutiontransitoirepourtoutentreprisequimigrerainluctablementrapidementverslescnario
3.
Avantages:

Coupagedetroismondes:numrique,analogiqueetIP.

CTIpossible.

Inconvnients:

Dpendancedunprestataire.

ENI Editions - All rigths reserved - educ hafa

- 1-

DveloppementsdesapplicatifsCTI:longs,propritaires,coteux.

3.Scnario3:migrationfullIP
Lautocomestdfinitivementremplacauprofitdunautocom(souventunchssismatrielaveclesmmeslments
quunserveur,etunsystmedexploitationbassurLinux).
La transition est radicale : il faut disposer du nombre ncessaire de prises rseau, du cblage ncessaire et aux
normes, de baies de brassage rseau et non plus tlcom, de nouveaux lments actifs (routeurs et switchs
manageables).Ilfautbiensrinvestirdansdenouveauxtlphones.
Danscecas,leCTIestgalementpossible.LavoixdevientalorsvoixsurIPetsecomportecommeuneapplication
quidialogueentreunclient(letlphone)etleserveur(lautocomestalorsdevenuuniPBX).Leretourenarrireest
inenvisageable.
Le choix de lautocom IP est primordial et il faut sefforcer de mettre en place une technologie ouverte qui va
permettredesdveloppementsultrieursaiss.

Afin dviter de doubler les prises rseau dans un bureau, il est possible dutiliser un tlphone qui
propose la fonctionnalit de miniswitch, de le raccorder au LAN de lentreprise et de brancher un PC
dessus.Linconvnientestquesiletlphonetombeenpanne,lePCnaplusdeconnectivitrseau.

- 2-

ENI Editions - All rigths reserved - educ hafa

Quelleoffrepourquelutilisateur?

Estcequelanouvellearchitecturesadressedesutilisateursinternesouseulementunepartie(unservice
helpdesk,unehotline,uneagence,unefiliale,desutilisateursnomades...)?
Estcequilsagitduneoffredestinationdeclientsinterneset/ouexternes?Dequellestailles:TPEouPME?
Estce que les utilisateurs sont technophiles ? Doiventils disposer dlments technologiques volus
(messagerieunifie,supervisiondepostes,callcenter...)?

Lesarchitecturesprsentesciaprsonttoutesttestesenentrepriseetvontservirdebasepourlaconstruction
dautresapproches.

1.Architecturen1:VoIP/ToIPpourunePMEmonosite
a.Stratgielocale
Lautocom IP est install dans le LAN sur le site de lentreprise, il est quip dune carte de communication "T2"
permettant linterconnexion entre le monde IP et le monde TDM (tlphonie). Le logiciel utilis est Asterisk, il est
totalementouvertetdisponibledanslacommunautOpenSource.
LentreprisedisposedunabonnementdetypeT2avecunoprateuretpeutdoncsupporter30appelssimultans.
LestlphonessonttousIP(avecadressesIPfixesoudynamiques)etsontbranchssurleLAN.

Avantages:

CettearchitectureestpeucoteuseetpermetrapidementdedployerdelaTVoIP.

LeserveursousLinuxdevradisposerauminimumde2Godemmoire,serabiprocesseurs.

La carte T2 (Digium, Junghams...) sinstalle rapidement. Les tlphones IP sont configurables soit
directementsurlinterfacelocaleouvialeweb.LechapitreLespasserellesoprateursdtaillelesdiffrents
typesdecartesT0etT2.

Inconvnients:

Cette architecture nest pas redonde. Si le serveur asterisk et/ou la carte T2 crashent, lentreprise ne

ENI Editions - All rigths reserved - educ hafa

- 1-

dispose plus de tlphonie. On privilgiera cette approche si lactivit tlphonique nest pas critique. Il
faudra tre prudent en conservant quelques lignes analogiques pour la gestion des fax et des numros
durgenceetpourmainteniruneactivittlphoniqueminimale.

Attention : il est parfois ncessaire de fabriquer un cble de connectique T2 entre la carte T2 et le botier
darrivedeloprateur.Lespinsducblecrossoversont:14,25,41et52.
Cetypedecblenestcependantpaslargleceladpendenfaitdelaconnectiquedeloprateur.Laseulebonne
mthodeestdoncdetester(crossoverT2,crossoverclassique,cbledroit)jusqucequelaleddelacarteT2soit
correctementallume.

b.Stratgiecentrex

LautocomIPestexternalis(ilsappelleuncentrex).

Lapasserelle(gateway)estgalementexternalise.

Aucunestratgiedescurisationdescommunicationsnestmiseen uvre.

Avantages:

La tlphonie est dlgue un prestataire dont cest le mtier. Les liens vers le rseau commut sont
centraliss.Lentreprisepeutdoncsecentrersursonc urdemtier.
Lagestiontechnique,administrativeetfinancireestfacilite.

Inconvnients:

- 2-

Lentrepriseestdpendantedunoprateur.Mieuxvautbienlechoisir(tauxdedisponibilit,fiabilit,cots,
efficacitdelahotline,interfacedemanagementdelasolution).
Cettearchitectureesttributairedelaqualitdeslienstlcommisenplace.
LelienviaInternetestralisable,peucher,maisnegarantitenrienlaqualitdeservicepuisqueletemps
detransitnestpasgaranti.
Le lien VPN priv est prconis et permet dapporter de la QoS et de la GTR (Garantie de Temps de
Rtablissement).Cesservicesontvidemmentuncot.

ENI Editions - All rigths reserved - educ hafa

2.Architecturen2:VoIP/ToIPpourunePMEmultisites
Lapproche locale ou centrex peut tre adopte les deux pouvant tre utilises mais pour des raisons de lisibilit
darchitecturetechniques(etdefacturationparlasuite),ilestsouhaitabledefaireunchoixclair.

a.Trunkintersites

Lentreprise et ses agences sont interconnectes entre elles par le biais dun VPN soustrait auprs dun
oprateurceVPNdoitimplmenterdelaqualitdeservice,mcanismeindispensableafindegarantirlafluiditdes
paquets VoIP en effet, sans cette QoS, un gros flux de type FTP, un envoi de mails massifs... pourraient
monopolisertoutelabandepassanteetainsifortementdgraderlmissionetlarceptiondelavoix.noterquela
QoSdoittreprsentedeboutenbout(routeursdextrmit,quipementrseauoprateur).
Avantages:

Chaque site dispose de son propre autocom IP et donc est autonome. En outre, une sortie locale vers le
rseaucommutestrassurantecarellenestpastributairedunlienrseaudedonnes.LaqualitdunT2
deloprateurhistoriquentantplusdmontrer.
IlestparexemplepossiblederouterlesappelssortantsdelagencedeNiceparlesigeParis,pourleprix
dunecommunicationlocale.LaspecttarificationestvuauchapitreLespasserellesoprateurs.

Inconvnients:

Ilfautbienvidemmentmettreen uvreunplandenumrotationparautocometdoncunparsite.Ensuite,
ilfautraliserlestrunks(liaisonintersites)etcelancessitedesmanipulationssurchaqueautocom.

Scurisation des liens SDSL. noter que dans cette architecture, les trunks passent par la ligne SDSL qui
nest pas secourue auprs dun second oprateur. Si cette ligne venait tomber (GTR de 4 heures), la
communicationintersitesnepourraitsefairequeparlesliensT2.Silavolumtriedescommunicationsintersites
estimportante,celapeutavoiruneffetnonneutreentermefinancier.

b.Multisitesaveccentrexetsecourslocaux

ENI Editions - All rigths reserved - educ hafa

- 3-


Cette architecture est similaire la prcdente en terme de VPN mais les "petites agences" de moins de 20
personnesnedisposentnidautocomenlocal,nidesortielocaleverslerseaucommut.
Ilestnoterquedunpointdevuescuritaire,ilestindispensabledeconserverquelqueslignesanalogiquesqui
servirontaufax,auxnumrosdurgence,unsecoursADSL.
Les "grosses agences", partir de 20 personnes, devront disposer dun autocom en local avec une sortie locale,
considrantqueleblocagedecetypedagencepeutnuirelaproductivitdelentreprise.
Avantages:

Certainesagencesdisposentdunsecoursenlocal.
Si le serveur du sige est injoignable (ligne SDSL horsservice ou dfaillance du serveur), cest le serveur
localquiserautilis.

Inconvnients:

Ilfautmaintenirleserveurlocal(intgritphysique,logicielleetfonctionnelle):chaqueajoutdetlphone
feralobjetdunemodificationdelaconfigurationcentraleetlocale.
Pourlespetitesagences,silelientlcomestenpanne,ilnyaplusdetlphonie.

Sur les agences importantes, il faudra configurer le tlphone SIP en spcifiant que le serveur SIP
registrarprimaireestlautocomdusigeetleSIPregistrarsecondaireceluidelagence.

3.Architecturen3:VOIP/TOIPpouruneTPE
Aujourdhui, une TPE (pharmacies, notaires, cabinet de mdecins...) dispose dun petit autocom local (Diatonis de
France Telecom par exemple) avec un ou deux abonnements T0 (2 ou 4 lignes simultanes), dun fax sur ligne
analogiquespareetdunaccsADSL.
LapprochecentrexdetypeFAIestdeloinlaplusabordablefinancirementpourcetypedecible.
AttentiontoutefoisnepasngligerlaspectscurisationdeslienstlcomcaruneTPEdisposeplussouventdune
seuleligneADSL(grandpublic)sansnotiondegarantiedetempsdertablissement,comptetenuduprixbonmarch
dunaccsADSLenFranceetsurtoutsansnotiondequalitdeservice.

- 4-

ENI Editions - All rigths reserved - educ hafa

Dansunmodedetypecentrex,ouASP(ApplicationServiceProvider),ilfaudrasecourirlelienADSLexistantlaidedun
lien SDSL (symtrie des flux) qui permet de disposer de GTR de 4 heures et de QoS au travers de loffreoprateur
souscrite(VPN).

LaTPEsoustraitelafournitureduneoffre"dualplay"donnesetvoix.
Lasolutiondonnes/voixestcentraliseetscurisechezloprateurparlintermdiairedeserveursapplicatifs(Web,
smtp,pop,ftp...),deserveursclusteriss(autocom,firewall),ainsiquedeliensInternetredonds.
LenombredetlphonesSIPestlimitcarleurutilisationestfonctiondelabandepassantedelaligneADSL.Pourun
lien1Mbs/256Kbs,ilfautraisonnablementselimiter2tlphones:

tlphone1:bandepassanterservede64Kbs.

tlphone2:bandepassanterservede64Kbs.

Donnes:bandepassanterservede128Kbs.

UnecommunicationVoIPoccupe64KbssilecodecestG.711(noncompress)et8KbssilecodecestG.729
(compress).Moinsilyadecompression,pluslaqualitestmeilleure.
IlesttoutfaitpossibledefairedelaVoIPsurunrseaudecollecteADSL,dontlesfeuillesADSLnedisposentpas,a
priori,demcanismedeQoS,etceladansdebonnesconditionspourlutilisateur,conditionderespecterquelques
recommandations:

ChoisirdesrouteursmodemsdextrmitimplmentantdelaQoS(Cisco877,bewanibox).
Choisir de ninstaller quun seul compte SIP dans la TPE cela a pour effet de limiter le nombre dappels
simultanssurunmmelienADSL.
Effectuerdestestsdechargeentlphonantetenenvoyantunegrossepicejointeenmailoueneffectuant
ungrostlchargementparFTP.
tredunnatureloptimiste.

4.Architecturen4:environnementcritiquencessitantdelahautedisponibilit

ENI Editions - All rigths reserved - educ hafa

- 5-

Certainssecteurs(hotline,servicedeprisesdecommandespartlphoneparexemple)ncessitentunedisponibilit
etunequalitdeservicedetlphonietoutepreuve.

a.Loadbalancer
Ladisponibilitestassureeninstallantdeuxserveursdaccueilenmodehautedisponibilit(onparledeHApour
Hight Availability), sur deux sites gographiques diffrents. Ces deux serveurs sont "clusteriss", disposent donc
duneadressevirtuelle(uneVIPpourVirtualIP)etvontdispatcherlesfluxdetlphonie(lasignalisationetlavoix)
surunegrappedeserveursasterisk.
HeartbeatvapermettredattribueruneVIPaun udetdassurerlasurveillance.
LVS(LinuxVirtualServer)vapermettrederpartirlesfluxverslesdiffrentsserveursasterisk.

b.Rlesdesserveursasterisk
LesserveursAsteriskserontdpourvusaumaximumdedonnes.Seulelintelligencederoutagedesappels(leplan
denumrotation)estprsentesurchaquemachine.

c.Rlesdesserveursdebasesdedonnes
DeuxserveurshbergeantchacununebaseidentiquedetypeMySQL,enmodeHA(Heartbeat)vontpermettrede
stockerlesinformationssuivantes:

Lenvironnementdesnumrosdetlphones(SIP).

Lesbotesvocales(voicemail).

Lestrunks(IAX).

Toutesautresinformations(numrosinternes/SDA,statistiquesdappels,enregistrementdappels...).

- 6-

ENI Editions - All rigths reserved - educ hafa

d.LestlcomsenTPEentre2011et2015
Aujourdhui,larchitecturetechniqueestsouventcomposedeslmentssuivants:

UnautocomlocalavecdespostesanalogiquesounumriquesetdesDECT.

UnabonnementgrandpublicInternet,detypefreebox,livexox,neufbox.

UnemontiquenonIPcomposedunterminalbancairedepaiementconnectuneligneanalogique.Les
transactionsbancairespassentdoncparlappelunnumrotlphoniquesurtaxquifaitlesbeauxjours
desoprateurs.
Un systme dinformation (logiciel commercial, bureautique, sauvegarde) encore stock en local dans la
TPE.
Unsystmedevidosurveillancelocaletavecdesfonctionsbasiques.

Dans les 5 ans venir, la convergence IP en mode externalis sera le schma gnral qui sera adopt dans les
petitesstructures,disonsentre2et20personnes.Pourquoi?simplementpourdeuxraisons:

Unseulinterlocuteurmultiservicedeproximitquiconnatbienlesbesoinsdespetitesstructures.

Desconomiesimportantesparlebiaisdoffre"bundle".

e.QuelcloudpourlaVoIP?
Lecloudounuageestuntermelamode.Ilfaitsimplementrfrencedesconceptsvieuxde15ansaveclASP
(ApplicationServiceProvider)ouplusrcemmentavecleSaaS(SoftwareAsAService).Mais,danstouslescas,nous
parlonsiciduneexternalisationdelatlphoniedansuncloudquilrestechoisir.
Imaginons un cloud de VoIP pour une multinationale rpartie dans plusieurs pays. premire vue, le schma est
simple:

ENI Editions - All rigths reserved - educ hafa

- 7-


Maistechniquement,ilsagitdunetoutautrehistoire:ilfauteneffetrsoudreunequationcomplexeS=T+C+P
o:
SreprsentelaSolution,Tlatechnique,ClecotetPlaprennit.
Dansnotrecas,supposonsquenotrecloudVoIPpuisseinterconnecterlesentitssuivantes:

sigeParis

filialeBruxellesetCharleroi

agencedelafilialedeBruxelles,baseauLuxembourg

agencesenFranceNice,Pau,Marseille,Lille,Rennes

nomadesisolsbassHongKongetNewYork

nomadesisolsbassenFrance

filialeoffshoreenPologne,Varsovie

Danscecontexte,afindersoudreS,nousconseillonslecloudVoIPsuivant:

- 8-

ConstruireunrseauVPNMPLSoprateurenFranceviadesliensSDSL1Mb/sou2Mb/s,pourlesagences,
et un lien fibre optique 10 Mbs. Attention dans certains cas, la fibre optique locale est plus intressante,
mme avec un gros dbit Internet, quun lien SDSL oprateur il faudra alors utiliser une technologie de
tunnelpourrelierlesigeviaInternet.
ConstruireunrseauVPNMPLSoprateurenBelgique(lienSDSLpourlesagences)+liencentralsuprieur
verslesigeparisien.
ENI Editions - All rigths reserved - educ hafa

AuLuxembourg,unlienVPNoprateurquecesoitavecunoprateurfranaisoubelgeestcoteuxalorsque
cepaysestfrontalier!IlfautdoncprivilgierunlienInternetdequalit(environ700euros/mois)pourun
Internet2Mb/ssurEthernetLaPoste.EtbiensrutiliserunbotierVPNpourrelierLeLuxembourgParis.
Les nomades isols ltranger doivent se connecter en VPN sur un accs Internet local et disposer dun
clientSIPsurleurPCportable.CemcanismepermettrauneconnexionaveclecloudVoIP.Attentionbien
effectuer les tests adquats et fournir une procdure dutilisation sinon les utilisateurs auront vite fait
dutiliseruneapplicationVoIPnonofficialisedanslentreprise(skypeparexemple).Celanestvalableque
pourlescommunicationsdanslecloud.Lesappelslocauxdoiventtrepasssenlocal(cotmoindre).
Les nomades isols en France ont plusieurs choix : en situation de mobilit, ils utiliseront le mme
mcanismequepourlesnomadestrangers.Ensituationdetltravail(ilssontdomicile),ilspourrontsoit
utiliser leur lien ADSL et leur tlphone local (forfait local/national illimit, compris dans leur abonnement),
soit disposer dun lien ADSL ddi et scuris, fourni par lentreprise cela permettra de connecter un
tlphoneSIP.
La filiale polonaise devra avoir un lien internet dbit symtrique pour des raisons de cot et de qualit
(autresbesoinsquelaseulevoix)ettrequipedunbotierVPNtoujoursconnectafindavoiruntunnel
permanent.LeLanpolonaisseraalorsdansleplandadressagedugroupeetpermettralinterconnexionde
plusieurstlphonesSIP.

Le cas de la flotte mobile est plus dlicat piloter car lquation S est pratiquement insoluble, tant les prix des
mobileslinternational(leroaming)estprohibitif.Unesolutioncejourestdeprendredesflottesmobileslocales
donc des forfaits locaux et dutiliser un accs VPN pour tlphoner au sein du groupe la sortie locale depuis les
mobilespouvantseffectuervialesitecentrallaconditionqueloprateurretenu(oumieuxlesoprateursretenus)
dispose dune grille attractive linternational. Un systme de PBX comme Asterisk permet de choisir le meilleur
cheminfinancierdesortieparrapportauxpasserellesoprateurs.

Cloudnesignifiepasconomiedargent!

ENI Editions - All rigths reserved - educ hafa

- 9-

CalendriertypedunprojetVoIP
Prenons lexemple dun cas rel dun projet VoIP, pour une centaine dutilisateurs, qui consiste migrer lexistant
(analogiqueet/ounumrique)avecunnouvelautocomIPdetypeAsterisk.Nousdevonsgalementtenircomptedela
miseenplaceduntrunk(lien)versunsitedistantluimmecomposde100personnes.
Ceprojetseradcoupensixphaseschronologiques.

1.Phase1:tudepralable
laborationducahierdeschargesfonctionnelles.
laborationducahierdeschargestechniquesavecschmadelarchitecture.
Choixdelarchitecturetechnique.
Estimationdubudgetprvisionnel.

2.Phase2:validationdelaDirectiongnrale
PrsentationduprojetenCODIR.
Correctiondelaplateformetechnique.
Validationdubudgetdfinitif.

3.Phase3:phaseprparatoire
Achatdesmatrielsetlogiciels.
Segmentationdurseauenvlans.
InstallationduserveurLinux,delaplateformeAsterisk,paramtrage.
Droulementdesscnariosdetests.
Formationdesquipesdadministration.
Installationdeslignesanalogiques,supportdesfaxetmodems(horsautocomIP).
DveloppementdelinterfacedeCTIetcouplageaveclinformatiqueapplicativeexistante.
Ralisationdune"sucette",connectiquecapabledesinterfacerentrelarriveexistante(vieilletechnologieT2)etla
connectiqueRJ45.
Miseen uvredestrunkings(liensintersite).

4.Phase4:dploiementdusitepilote
Concerneunequinzainedutilisateursreprsentatifs.
Ces utilisateurs disposeront de 2 tlphones (existant numriques et IP) le tlphone IP ne pourra pas appeler
verslextrieursilentreprisenedisposequeduneseulepasserelle.

5.Phase5:retourdexprienceetcorrection
Bilandusitepilote.
Correctionsventuelles.
Rdactionnoticeutilisateur.

ENI Editions - All rigths reserved - educ hafa

- 1-

6.Phase6:dploiementgnralis
InstallationetparamtragedestlphonesIP.
BasculedelapasserelleentrelePABXetliPBX.
Gestiondesaspectsrelationnelsetsuiviutilisateurs(nepasngliger).
ArrtdfinitifduPABX,desamaintenance.
Reventedesanciensmatriels(autocomettlphones)chezunbroker.

- 2-

ENI Editions - All rigths reserved - educ hafa

RetoursurInvestissementdelaVoIP
LeROIpeuttredfinisimplementparlamesuredelargentgagnouperduparrapportuninvestissement.
AudbutduprojetdemigrationdeVoIP,lesdeuxvraiesquestionsquechaqueDSIdoitseposersont:

"Estcequejevaisconomiserdelargent?"

"Estcequejevaisapporterdenouveauxservices?"

Etlafinduprojet,ildoittrecapablederpondreaffirmativementcesdeuxquestions,sinonilnaurapastenuses
objectifsinitiaux.
Certainsrsultatssontcependantdifficilementquantifiablesmmesilssimposentdeuxmmes:

Dire que lquipe rseau passe moins de temps avec la hotline dun prestataire expliquer plusieurs fois
souventlemmeproblmemaisdesinterlocuteursdiffrents.
Direquelentrepriseareprislecontrledesatlphonieinterneetparlammeoccasiondunepartiedeson
systmedinformation(cetaspectfondamentalnapasdeprix!).
Donnerdenouvellescomptencesauxquipestechniquesetdoncapporteruneplusgrandemotivation,une
plusgrandecohsiondquipe.

SelonunetudedelAFUTT(AssociationFranaisedesUtilisateursdesTlcoms)du23/03/2007,"laprincipalemotivation
delamigrationportesurlarductionducotdescommunications".
DansunprojetdemigrationTVoIPbassurAsterisk,plusieursfacteurssontdoncprendreencompte:

Rductiondescotsdinvestissement

Installation du systme dexploitation Centos, une version gratuite de Linux proche de Redhat
Enterpris.

InstallationdAsterisk,desesnombreuxaddons.

AchatderouteursVoIPoudecartesT2.

Achatdeserveursredondshabilementngocis.

LocationdelienT2surSDSLauprsdoprateurstelecom,rengociationdesabonnementsetducot
laminuteverslefixelocal/nationaletverslefixeversmobile.

Suppressiondescontratsdemaintenanceapplicative.

AchatdetlphonesSIPbonmarchetutilisationdesoftphonespourlescallcenters.

Rductiondescotsdefonctionnement

Suppressiondeladpendanceauprsdunprestatairelogiciel.

Formationdelquipeinformatiquepourassurerlestchesdadministrationetdegestionquotidienne.

Apportdenouveauxservices

Messagerieunifie.
PossibilitdaffecterunelignedefaxdirectesaSDAdetlphoneetderecevoirautomatiquementun
faxenformatPDFdanssaboteemail.
ENI Editions - All rigths reserved - educ hafa

- 1-

AccsauxservicesdeconferencingMeetMe.

InterfaageavecdesoutilsdeCTIpardesdveloppementsspcifiques"maison".

Serveurvocalinteractif:crituredescriptsspcifiquesdansleplandenumrotation.

ApportdecontenuinteractifrichedirectementsurlestlphonesSIPparprogrammation(messagede
laDirection,publicit,information...).

Callcenteretgestiondefilesdattente.

AnnuaireOpenLDAP(http://www.openldap.org)avecmiseen uvredefonctionnalitdeclicktodial.

1.ArchitecturesXphones
ParletermeXphones,nousenglobonstouslespriphriquesmobilesintelligentscapablesdecommuniqueren
VoIP,etce,quelquesoitlemdiadeconnexionauserveurPBX:wifi,3G,filairelan,wan
Lobjectifannoncestdemettreenplaceuneinfrastructurepermettantdefaireconvergerlescommunications:un
numrodetlphone,unseulmail,nimporteo,nimportequandavecunseulpriphriquedanslamain.

2.LesapplicationsiPhones
LiPhoneestunoutilremarquabletroispointsdevuenotresens:

Simplicitdutilisation/ergonomietactile

RichessedesapplicationsdelAppstore

Capacit tre utilis par toute la population : des professionnels, des tudiants, des mnagres, des
enfants

3.LesapplicationsdeVoIPpropritaires
CesapplicationssontenfaitdesclientsSIPmaisquincessitentlutilisationduncentrexpayant,cequirevienten
faitutiliseruntrunkSIPversunoprateurintermdiairePourquoiintermdiaire?Toutsimplementparcequeles
grosoprateurscommeOrangeouSFRnontgureintrtperdrelejuteuxtraficdeminutespartirdesforfaits
mobiles.
Celadit,lutilisationdesclientsSIPsurmobiles,mmesiellenestpasbloquejusquuncertainstade,estinterdite
par les oprateurs. Ces derniers peuvent interdire ou restreindre lutilisation de la VoIP sur leurs rseaux 3G.
Certainsfacturentlutilisationabusive.
Media5foneVoIPSIPPhone
La socit Media5 Corporation (www.media5corp.com) a publi deux trs bonnes applications de client SIP, une
versionpayante5,99eurosnonbrideentempsdecommunicationetuneversiongratuitebride(version2.4.1.19
endatedefinjuillet2010).
Media5nestpasunfournisseurdeservicesdetlphoniesurIP,cestunconstructeurdepasserellesdetlphonie
(mediatrix).
UnefoislapplicationtlchargesurliPhone,ilfautparamtrerlaccsauserveurSIPAsteriskvialesRglages.Le
compteSIPncessiteobligatoirementunmotdepasse.

- 2-

ENI Editions - All rigths reserved - educ hafa

AccsauparamtrageduncompteSIP

ENI Editions - All rigths reserved - educ hafa

- 3-

ConfigurationduncompteSIP

DfinitionmanuelledunouveaucompteSIP

- 4-

ENI Editions - All rigths reserved - educ hafa

RenseignementdesinformationssurlecompteSIP

ENI Editions - All rigths reserved - educ hafa

- 5-

DfinitiondesparamtresduserveurSIP

DverrouillagedelaversionMedia5foneFree

- 6-

ENI Editions - All rigths reserved - educ hafa

ClavierdeMedia5

noterquelapplicationMedia5foneestgalementdisponiblesurplateformeNokiaSymbianS60.

Asteriskc2d/Asteriskc2dPro
Cette application est un dialer SIP compatible avec de nombreux serveurs Pbx comme Asterisk, Trixbox, Vonage,
Broadsoft Elle existe en version limite la configuration de deux serveurs Pbx pour 6,99 euros et en version
payante(11,99euros)illimiteentermesdenombredeconfigurationsdeserveursPbx.Ladernireversion(v3.7)
datedefinaot2010.
Pour fonctionner avec Asterisk, il est ncessaire dinstaller des scripts sur le serveur (voir
http://www.rho.cc/index.php/linux2/45asteriskc2d/53settinguptheserverside), ce qui peut alourdir la
configurationduserveur.

ENI Editions - All rigths reserved - educ hafa

- 7-

- 8-

ENI Editions - All rigths reserved - educ hafa


Source:http://www.rho.cc
AsteriskVM
Ilsagiticiduneapplication(v1.4)publieenavril20102,99eurosquipermetdaccderauxmessagesvocaux(les
voicesmails)dasterisk,demaniresimple,sansavoirbesoindeseconnecterauserveuretdecomposerlenumro
desabotevocaleainsiquesonmotdepasse.IlsuffitjustedeparamtrerunefoisleserveurSIPetlecompteSIP.
AstCallBackLite
Cette application gratuite (v 1.2 davril 2010) permet lutilisation de la fonction CallBack dAsterisk. Lutilisateur
compose un numro de tlphone de destinataire, le serveur intercepte lappelpuisrappellelmetteur et enfin le
destinataire.Cetteapplicationpeutsavrerlourdeutiliserdanslavierelle.
Fring,"yourfriendsmobile"
En plus de permettre de passer des appels, cette application permet de nombreuses autres fonctionnalits de
communications "sociales" comme skype, MSN Messenger, Google Talk, Twitter, Yahoo, SIP (Sipnet, VoipBuster,
AutresfournisseursSIP)Cestunrceptacleapplicatifquiestplusdestinunusagepersonnelqueprofessionnel.
Lapplicationestgratuiteetladernireversion(v3.3.1.2)atpublieenaot2010.
Source:http://www.fring.com/default.php
Acrobitssoftphone
Laversionv4.2atpublieenaot2010(cotde5,49euros),ilsagitdunricheclientSIP(ausensfonctionnelet
visuel)quisinterconnecteavecplusieursfournisseursSIP(Gizmo,Vonage,freephonie)
Source:http://www.acrobits.cz/tutorials
IlexistebiendautresclientsSIPsuriphone,parmiceuxci,nousretrouvons:
iSip,iSipSimple,sipvox,Ficall,Weephonesipwithpush,Ofone,Witel...
De nombreuses applications prsentent des failles de fonctionnement (absence dappels vers linternational,
fonctionnementuniquementauxUSA,manquededocumentationpourlaconfigurationetlutilisation).

cejour,aucuneapplicationnesestencoreimposerellementdefaonuniverselle.

ENI Editions - All rigths reserved - educ hafa

- 9-

4.LesapplicationsgooglephonessousAndrod
Le systme Androd tant plus rcent que le systme iPhone, il est tout fait normal que les applications SIP
disponiblessurlAndrodMarketsoientmoinsnombreuses.Nouspouvonsnanmoinsciterdeuxapplications:

SipDroid, qui permet une connexion SIP avec Free ou avec un autre oprateur SIP. Cette application est
configurepardfautavecloprateurPbxes(www.pbxes.com).
Fring(voircidessus).

Endcembre2009,lARCEP(Autoritdergulationdestlcoms)aautorisFreeMobileexploiterlerseau
3G. ce jour (mi septembre 2010) le Conseil dEtat na pas encore valid la 4 e licence mobile de Free en
raisondesplaintesdela"bandedes3"(Orange,SFRetBouyguesTelecom).SiFreeMobileobtientdfinitivement
lalicenceetpermetsestlphonesdeffectuerdesappelsSIPen3Gentoutelgalit,celarisqueraitderemettre
encausetouteslesoffresmobilesenFrance.Eneffet,lesconcurrentsseraientprobablementobligsdefairela
mmechosepournepasperdrelemarchdelatlphoniemobile.

noterquelespremiresoffresdeFreeMobile3Garriverontsurlemarchvers2012.

- 10 -

ENI Editions - All rigths reserved - educ hafa

Introduction
Dans ce chapitre, nous allons voir toutes les tapes permettant daboutir une mise en production dun serveur
Asterisk.LaplateformelogicielleestconstituedunserveurLinuxsousDebian5(http://www.debian.org).
PouruneinstallationsimpledAsterisk(unserveurdeVoIPuniquementsansinterconnexionaveclemondeextrieur),
seulleprogrammeAsteriskestncessairemaispartirdumomentounecartedecommunicationestprsentedans
leserveur,ilfautrajouterlesmodulesDAHDI(exZaptel)etLibpri(leurutilitestdfinieplusloindanscechapitre).
Nousavonschoisidapprofondirlesujeteninstallantdautrespackagesquipermettrontdefairefonctionnertoutesles
fonctionnalitscouvertesdanscelivre:

Servicesdesynchronisationdutemps:NTP(NetTimeProtocol).

Servicesdemessagerie:Postfix.

ServicesWeb:ApacheetPHP.

ServicesdeBasededonnes:MySQL.

ModulesPERL.

ENI Editions - All rigths reserved - educ hafa

- 1-

InstallationdusystmeDebianLenny5
1.tapesdelinstallation
Lestapesimportantesdelinstallationsontlessuivantes:
Partionnement
Ilfautchoisirunpartitionnementmanueldudisquequipermetdedonnerunegrandelatitudedanslorganisationdu
disqueetnotammentlechoixdelatailledespartitions/boot,/swapet/.
Network
IlfautchoisiruneadresseIPfixepourleserveuretfixerlesparamtresdemasque,lapasserelleetlesserveursde
rsolutiondenomsDNS.
Dansnotreexemple,lesparamtressontlessuivants:

AdresseIPduserveur:192.168.1.100

Masquedesousrseau:255.255.255.0

Passerelle:192.168.1.1

DNS:192.168.1.9et192.168.1.10

Motdepasseroot
Ilfautspcifierunmotdepassepourlecompteroot.
Packages
Ilfautchoisirloptionminimale.Eneffet,ilnest,parexemple,pasutilededisposerduneinterfacegraphique.

2.Premierdmarrage
Il faut modifier le mot de passe root et vrifier que la configuration du rseau est correcte en effectuant les
commandessuivantes:
# ifconfig
eth0
Link encap:Ethernet HWaddr 00:50:56:97:14:71
inet adr:192.168.1.100 Bcast:192.168.1.255
Masque:255.255.255.0
adr inet6: fe80::250:56ff:fe97:1471/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:16649767 errors:0 dropped:0 overruns:0 frame:0
TX packets:5535 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:2189605966 (2.0 GiB) TX bytes:405071 (395.5 KiB)
lo

Link encap:Boucle locale


inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hte
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

# route
Table de routage IP du noyau
Destination
Passerelle
Use Iface
localnet
*

Genmask
255.255.255.0

Indic Metric Ref


U

ENI Editions - All rigths reserved - educ hafa

- 1-

0 eth0
default
0 eth0

192.168.1.1

0.0.0.0

UG

# ping www.google.fr
PING www.l.google.com (209.85.229.147) 56(84) bytes of data.
64 bytes from ww-in-f147.1e100.net (209.85.229.147): icmp_seq=1
ttl=53 time=18.5 ms

3.Contrledelaconfigurationdelutilitaireaptget
LutilitaireaptgetdeDebianpermetdetlchargerlespackagesDebiandepuisundptcentralissurInternet.
# vi /etc/apt/sources.list
deb http://ftp.fr.debian.org/debian/ lenny main
deb-src http://ftp.fr.debian.org/debian/ lenny main
deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main
deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main
# apt-get update

4.Installationdeslibrairiesdukernel
Pourcela,onutiliselutilitaireaptget :
# apt-get install ssh
# apt-get install build-essential
# apt-get install linux-headers-$(uname -r)
# apt-get install bison libssl-dev libeditline0 libeditline-dev
libedit-dev libnewt-dev

- 2-

ENI Editions - All rigths reserved - educ hafa

Installationdesservicescomplmentairesdebase
1.ServiceNTP
Les services NTP (Network Time Protocol) permettent de maintenir le serveur toujours lheure ce dernier se
synchronisesurdesserveursdetempsaccessiblessurInternet.
Installationduserviceviaaptget :
# apt-get install ntp
lissuedelinstallation,ilfautmodifierlefichier/etc/ntp.confetrenseignerlesnomsdesserveursdetempsfranais.
server 0.fr.pool.ntp.org
server 1.fr.pool.ntp.org
server 2.fr.pool.ntp.org
Dmarrageduservice :
# /etc/init.d/ntp restart
Stopping NTP server: ntpd.
Starting NTP server: ntpd.

2.ServiceSMTPPostfix
LinstallationdupackagepostfixvapermettrelagestiondesenvoisdemessagesvocauxdepuisAsterisk.

a.Installation
# apt-get install postfix

Ilfautvalidercettepremirepage :

ENI Editions - All rigths reserved - educ hafa

- 1-


Surcettepage,ilfautslectionnerlavaleur"Pasdeconfiguration",puisvalider.
Linstallationdepostfixesttermine.

b.Configuration
Ilfautmodifierlefichierprincipaldeconfiguration/etc/postfix/main.cf.
myhostname = autocom.masociete.com
mydomain = masociete.com
myorigin = $myhostname
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 127.0.0.1
transport_maps = hash:/etc/postfix/transport
home_mailbox = Maildir/
mail_spool_directory = /var/spool/mail/
mail_name = courriel
smtp_banner = $myhostname ESMTP $mail_name
Ilfautgalementmodifierlefichiertransportdans/etc/postfix/transport
domaine1.com
domaine2.com
domaine3.fr

relay:[192.168.1.50]
relay:[ 192.168.1.50]
relay:[ 192.168.1.50]

etcrerlatabletransportlaidedelacommande :
# postmap /etc/postfix/transport

c.Vrificationdelaconfiguration
# postfix check
Encasderreur,lemessagesuivantapparat :
postfix: fatal: open /etc/postfix/main.cf: No such file or directory

d.LancementdePostfix

- 2-

ENI Editions - All rigths reserved - educ hafa

lissue,ilestncessairederedmarrerpostfixafindeprendreencomptelatablederoutage.
# /etc/init.d/postfix restart

3.InstallationduserviceMySQL
a.Installation
Il existe diffrentes mthodes pour linstallation du serveur MySQL nous prconisons linstallation partir de
lutilitaireaptget.
# apt-get install mysql-server
Durantlaphasedinstallation,ilestdemanddesaisirunmotdepassepourlecompterootmysql.

SaisirlemotdepassesouhaitpuisvaliderparOK.Ilfautensuiteleconfirmerunefois.

b.ConnectorODBC
Pour pouvoir interfacer Asterisk avec MySQL, il faut installer le connecteur ODBC de MySQL (notamment pour le
stockagedesmessagesvocauxenbasededonnes).
# apt-get install unixodbc unixodbc-dev libmyodbc libmysqlclient15-dev
Ilfautapporterlesmodificationssuivantesdanslesfichiers/etc/odbcinst.iniet/etc/obdc.ini.
# vi /etc/odbcinst.ini
[odbcasterisk]
DRIVER = /usr/lib/odbc/libmyodbc.so

ENI Editions - All rigths reserved - educ hafa

- 3-

SETUP
= /usr/lib/odbc/libodbcmyS.so
UsageCount
= 1
[MySQL ODBC 3.51 Driver]
DRIVER =/usr/lib/odbc/libmyodbc.so
SETUP
=/usr/lib/odbc/libodbcmyS.so
UsageCount
=1
# vi /etc/odbc.ini
[MySQL-asterisk]
Description
= MySQL Asterisk Database
Driver = odbcasterisk
Trace
= Yes
TraceFile
= /var/log/odbc/extodbc.log
Debugging
= Yes
DebugFile
= /var/log/odbc/debugodbc.log
Database
= asterisk
Servername
= 127.0.0.1
Username
= odbc (ce compte sera ajouter sur mysql ultrieurement)
Password = test1234 (mot de passe du compte ci-dessus)
Port
= 3306
socket=/var/run/mysqld/mysqld.sock (vrifier lemplacement du
fichier .sock)

c.ConfigurationPostinstall
Ajoutdelutilisateursystme
# mysql -uroot -p
mysql > grant all privileges on asterisk.* to odbc@localhost
identified by motdepasse with grant option;
mysql> flush privileges;

4.InstallationdesservicesHTTPPHP5
a.Installation
# apt-get install apache2 php5 libapache2-mod-php5 php5-mysql
<...>
Paramtrage de apache2.2-common (2.2.9-10+lenny7) ...
Enabling site default.
Enabling module alias.
Enabling module autoindex.
Enabling module dir.
Enabling module env.
Enabling module mime.
Enabling module negotiation.
Enabling module setenvif.
Enabling module status.
Enabling module auth_basic.
Enabling module deflate.
Enabling module authz_default.
Enabling module authz_user.
Enabling module authz_groupfile.
Enabling module authn_file.
Enabling module authz_host.
Paramtrage de apache2-mpm-prefork (2.2.9-10+lenny7) ...
Starting web server: apache2.
Paramtrage de apache2 (2.2.9-10+lenny7) ...
Paramtrage de php5-common (5.2.6.dfsg.1-1+lenny8) ...
Paramtrage de libapache2-mod-php5 (5.2.6.dfsg.1-1+lenny8) ...

- 4-

ENI Editions - All rigths reserved - educ hafa

Creating config file /etc/php5/apache2/php.ini with new version


Reloading web server config: apache2.
Paramtrage de php5 (5.2.6.dfsg.1-1+lenny8) ...
Paramtrage de php5-mysql (5.2.6.dfsg.1-1+lenny8) ...
Paramtrage de sgml-base (1.26) ...
Paramtrage de xml-core (0.12) ...

ENI Editions - All rigths reserved - educ hafa

- 5-

InstallationdesmodulesspcifiquesAsterisk
1.InstallationdeDahdi
Dahdi(DigiumAsteriskDeviceInterface),anciennementZaptelestunmodulelogicielintermdiaireentreAsterisk(via
son module de canaux chan_dahdi) et les pilotes de priphriques matriels. Dahdi va donc permettre Asterisk
dutiliserlescartesdecommunication(analogiques,BRIetPRI)verslerseaucommut.
Les deux packages essentiels que sont dahdilinux et dahditools sont inclus dans le fichier propos par Digium
(dahdilinuxcomplete2.3.0+2.3.0.tar.gz).

a.InstallerDahdi
# cd /usr/src
# wget http://downloads.asterisk.org/pub/telephony/dahdi-linuxcomplete/releases/dahdi-linux-complete-2.3.0+2.3.0.tar.gz
# tar zxvf dahdi-linux-complete-2.3.0+2.3.0.tar.gz
# chown -R root:root dahdi-linux-complete-2.3.0+2.3.0
# cd dahdi-linux-complete-2.3.0+2.3.0
# ls -l
drwxrwxr-x 2 root root 4096 avr 12 22:51 build_tools
-rw-rw-r-- 1 root root 3062 avr 12 22:51 ChangeLog
drwxrwxr-x 6 root root 4096 avr 12 22:51 linux
-rw-rw-r-- 1 root root 778 jui 21 2008 Makefile
-rw-rw-r-- 1 root root 1127 jui 3 2008 README
drwxrwxr-x 7 root root 4096 avr 12 22:52 tools

b.CompilerDahdi
Il faut veiller disposer de lutilitaire make (aptget install make) et du kernelheaders (aptget y install
linuxheaders`unamer`)

# make clean
# make all
# make install
< ... >
/usr/bin/install -c -d /etc/dahdi
/usr/bin/install -c -m 644 system.conf.sample /etc/dahdi/system.conf
/usr/bin/install -c -d -m 755 //usr/lib
/usr/bin/install -c -m 755 libtonezone.a /usr/lib/
/usr/bin/install -c -m 755 libtonezone.so /usr/lib/libtonezone.so.2.0
if [ `id -u` = 0 ]; then \
/sbin/ldconfig || : ;\
fi
rm -f /usr/lib/libtonezone.so
/bin/ln -sf libtonezone.so.2.0 \
/usr/lib/libtonezone.so.2
/bin/ln -sf libtonezone.so.2.0 \
/usr/lib/libtonezone.so
# Overwrite the 1.0 links out there. dahdi-tools 2.0.0 installed
# 1.0 links but dahdi-tools changed them to 2.0 in order to explicitly
# break applications linked with zaptel. But, this also meant that
# applications linked with libtonezone.so.1.0 broke when dahdi-tools
# 2.1.0 was installed.
/bin/ln -sf libtonezone.so.2.0 \
/usr/lib/libtonezone.so.1.0
/bin/ln -sf libtonezone.so.2.0 \
/usr/lib/libtonezone.so.1
/usr/bin/install -c -d -m 755 //usr/include/dahdi
/usr/bin/install -c -m 644 tonezone.h /usr/include/dahdi/
###################################################

ENI Editions - All rigths reserved - educ hafa

- 1-

###
### DAHDI tools installed successfully.
### If you have not done so before, install init scripts with:
###
###
make config
###
###################################################
make[1]: quittant le rpertoire /home/sdeon/dahdi-linuxcomplete-2.3.0+2.3.0/tools
# make config
make[1]: quittant le rpertoire /home/sdeon/dahdi-linuxcomplete-2.3.0+2.3.0/tools
make -C tools config
make[1]: entrant dans le rpertoire /home/sdeon/dahdi-linuxcomplete-2.3.0+2.3.0/tools
install -D dahdi.init /etc/init.d/dahdi
/usr/bin/install -c -D -m 644 init.conf.sample /etc/dahdi/init.conf
/usr/bin/install -c -D -m 644 modules.sample /etc/dahdi/modules
/usr/bin/install -c -D -m 644 xpp/genconf_parameters
/etc/dahdi/genconf_parameters
/usr/bin/install -c -D -m 644 modprobe.conf.sample
/etc/modprobe.d/dahdi.conf
/usr/bin/install -c -D -m 644 blacklist.sample
/etc/modprobe.d/dahdi.blacklist.conf
/usr/sbin/update-rc.d dahdi defaults 15 30
Adding system startup for /etc/init.d/dahdi ...
/etc/rc0.d/K30dahdi -> ../init.d/dahdi
/etc/rc1.d/K30dahdi -> ../init.d/dahdi
/etc/rc6.d/K30dahdi -> ../init.d/dahdi
/etc/rc2.d/S15dahdi -> ../init.d/dahdi
/etc/rc3.d/S15dahdi -> ../init.d/dahdi
/etc/rc4.d/S15dahdi -> ../init.d/dahdi
/etc/rc5.d/S15dahdi -> ../init.d/dahdi
DAHDI has been configured.
List of detected DAHDI devices:
No hardware found
make[1]: quittant le rpertoire /home/sdeon/dahdi-linuxcomplete-2.3.0+2.3.0/tools
CettedernirecommandepermetdedtecterlespriphriquesDadhiinstallssurlesystme:
SiunecartedetypeDigiumTE122estinstalledansleserveur,nousauronslemessagesuivant :
List of detected DAHDI devices:
pci:0000:00:0c.0
wcte12xpd161:8001 Wildcard TE122
run dahdi_genconf modules to load support for only
the DAHDI hardware installed in this system. By
default support for all DAHDI hardware is loaded at
DAHDI start.

DahdidoittrechargavantLibprietAsterisk.

c.ConfigurerDahdi
Les fichiers de configuration sont prsents dans le rpertoire /etc/dahdi et il est recommand de modifier le
fichier /etc/dahdi/modules laide du gnrateur de configuration dahdi appel dahdi_genconf. Il est utile de
sauvegarder,aupralable,lefichier/etc/dahdi/modules.
En effet, le fichier modules contient les pilotes dtects et ncessaires charger au niveau de la configuration de
Dahdi.
Lacommandedahdi_genconfpermetdecrerdeuxautresfichierstrsutiles:
*/etc/dahdi/system.conf(lquivalentde/etc/zaptel.conf)
*/etc/asterisk/dahdichannels.conf(aupralable,ilfautcrerundossier/etc/asterisk).

- 2-

ENI Editions - All rigths reserved - educ hafa

#
#
#
#

mkdir /etc/asterisk
cd /etc/dahdi
mv modules modules.original
dadhi_genconf modules

# cat modules
# Digium TE122: PCI single-port T1/E1/J1
wcte12xp
# ls -l /etc/asterisk/
total 4
-rw-r--r-- 1 root root 390 jun 5 22:16 dahdi-channels.conf
vi genconf_parameters
...
lc_country
fr
...
Aprs linstallation dAsterisk, le fichier dahdi_channels.conf doit tre appel en modifiant le
fichier/etc/asterisk/chan_dahdi.conf(quiestlquivalentdelexfichier/etc/asterisk/zapata.conf).
LorsqueDahdiestutilisavecunecartedetypePCI,ilfautconfigurerlefichier/etc/dahdi/system.conf.
ExempledeconfigurationpourunecarteT2quivagreruneligneT2(15canaux):
/etc/dahdi/system.conf
span=1,1,0,ccs,hdb3
bchan=1-15
dchan=16
loadzone = fr
defaultzone = fr
Ce fichier permet galement de fournir, aux pilotes Dahdi, les informations concernant le type de carte de
communicationutilise.
Parexemple,pouruneinterfaceT215canaux,lesparamtressuivantssontpertinents:
span = numro_span , timing , LBO , framing , coding
numro_span : numro du port (span)
timing : concerne la synchronisation du temps (0: le span nest pas
la source de synchronisation, 1: le span est la source de
synchronisation, 2: source secondaire)
LBO : Line Built Out (0: 0db)
Framing : communication avec le matriel de loprateur (pour une
T1, les valeurs possibles sont d4 ou esf; pour une E1, les valeurs
possibles sont cas ou css
coding : communication avec le matriel de loprateur (T1 : ami ou
b8zs; E1 : ami ou hdb3)
bchan : concerne les numros de canaux (exemple : 1-15, 17-31)
dchan : concerne le numro de canal utilis pour la signalisation
(exemple : 16, 32)
loadzone : concerne la zone de tonalit (fr, it, us, ...)
defaultzone : concerne zone de tonalit par dfaut (fr, it, us, ...)
ExempleduneconfigurationavecunecarteT2(TE207P)connecte2lignesT2de30canauxchacune:
span=1,1,0,ccs,hdb3
bchan=1-15,17-31
dchan=16
span=2,1,0,ccs,hdb3
bchan=32-46,48-62
dchan=47
ExempleduneconfigurationavecunecarteTDM22Bavec2portsFXOet2portsFXS:

ENI Editions - All rigths reserved - educ hafa

- 3-

fxsks=1,2
fxoks=3,4
loadzone=fr
defaultzone=fr
Exempledecontenude/etc/dahdi/system.confpourunecarteDigium4T0(DigiumB410P:4NT/TEBRIportswcb4xxp)
o2portsseulementsontconnects :
#
#
#
#
#
#
#

Dahdi Configuration File


This file is parsed by the Dahdi Configurator, dahdi_cfg
Span 1: WCTDM/4 "Wildcard TDM400P REV I Board 5" (MASTER)
channel 1, WCTDM/4/0, no module.
channel 2, WCTDM/4/1, no module.

# An example of BRI port:


#
span=1,1,0,ccs,ami
#bchan=1,2,4,5,7,8,10,11
bchan=1,2
#dchan=3,6,9,12
hardhdlc=3
# Global data
loadzone=fr
defaultzone=fr
Lefichier/etc/asterisk/chan_dahdi.confpermetdefaireunlienentrecequiestrellementinstall(system.conf)etce
quelelogicielAsteriskdoitutiliser.Ilprcisegalementlesparamtresassocisauxmatriels.Dahdinepeuttre
configurquaprslinstallationdAsterisk.
Exempledecontenude/etc/asterisk/chan_dahdi.conf
[trunckgroups]
[channels]
; type de lignes PRI (ISDN)
switchtype=euroisdn
; paramtre du dialplan utile pour loprateur
pridialplan=unknown
; signalisation de linterface
signalling=pri_cpe
; activation du suppesseur dcho
echocancel=yes
; activation de lapprentissage de lcho par le suppresseur dcho
echotraining=yes
; activation de la dtection de fax dans le sens entrant et le sens
sortant
faxdetect=both
language=fr
; classe de la musique par dfaut
musiconhold=default
; les appels entrants sur la ligne T2 sont dirigs vers le contexte
incoming du plan de numrotation
context=incoming
;dfinition du groupe de canaux
group=1
; dfinition des canaux
channel => 1-15,17-31
group=2
channel => 32-46,48-62

- 4-

ENI Editions - All rigths reserved - educ hafa

Avec ces paramtres non exhaustifs, il sera possible dutiliser des types de groupes de canaux dans le plan de
numrotation(extensions.conf):

Dahdi/g1 pour tous les canaux de 1 15 et de 17 31 (cela correspond une premire ligne T2 de 30
canaux).
Dahdi/g2 pour tous les canaux de 32 46 et de 48 62 (cela correspond une seconde ligne T2 de 30
canaux).

Cesvariablesdecanauxserontutilisesnotammentpourindiquerourouterlesappelssortants.
UnportFXO(portoestbrancheuneligneRTC)dialogueavecunportFXSilutiliseunesignalisationFXS:

signalling=fxs_ks.

UnportFXSdialogueavecunportFXO,ilutiliseunesignalisationFXO:

signalling=fxo_ks.

Casdunecarte(TDM11B)avecunportFXOetunportFXS:
[channels]
...
; le tlphone analogique est connect au port 1 (FXS) de la carte
; les appels entrants sur ce port sont dirigs vers le contexte
appels_internes
; la signalisation est de type FXO
context=appels_internes
signalling=fxo_ks
channel => 1
; la ligne RTC est connecte au port1 (FXO) de la carte
; les appels entrants sur ce port sont dirigs vers les contexte
appels_entrants
; la signalisation est de type FXS
context=appels_entrants
signalling=fxs_ks
channel => 2
Lasyntaxegnraledechan_dahdi.confestlasuivante :
[trunkgroups]
[channels]
#include "dahdi-channels.conf
Danscertainscas,lefichierdahdichannels.confnexistepasetsoncontenuestdirectementdanschan_dahdi.conf.
Contenudedahdichannels.conf:
;
;
;
;
;
;
;
;
;
;

DAHDI telephony interface


Configuration file
You need to restart Asterisk to re-configure the DAHDI channels
CLI> reload chan_dahdi.so
will reload the configuration file,
but not all configuration options are
re-configured during a reload.

[trunkgroups]
ENI Editions - All rigths reserved - educ hafa

- 5-

[channels]
language=fr
context=external
switchtype=euroisdn
pridialplan=unknown
prilocaldialplan=unknown
signalling=pri_cpe

usecallerid=yes
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
rxgain=0.0
txgain=0.0
;
group=1
context=external
channel => 1,2
;channel => 1,2,4,5,7,8,10,11
callgroup=1
context=external
channel => 1,2
;channel => 1,2,4,5,7,8,10,11
callgroup=1
pickupgroup=1

d.UtilitairesDahditools
Auparavant avec Zaptel, nous utilisions ZTOOL et ZTCFG pour vrifier que la carte de communication tait
correctement installe et connecte. Dsormais, lors de linstallation de Dahdi, nous avons notre disposition les
"dahditools".
IlnefautpasoublierdinitierlechargementdeDahdiparLinux:
# /etc.init.d/dahdi start
Loading DAHDI hardware modules:
wcte12xp: done
Running dahdi_cfg: done.
# lsmod | grep dahdi
dahdi_dummy
dahdi
crc_ccitt

9384
190728
6337

0
2 dahdi_dummy,wctdm
1 dahdi

# /usr/sbin/dahdi_scan
[1]
active=yes
alarms=UNCONFIGURED
description=DAHDI_DUMMY/1 (source: RTC) 1
name=DAHDI_DUMMY/1
manufacturer=
devicetype=DAHDI Dummy Timing
location=
basechan=1
totchans=0
irq=0

- 6-

ENI Editions - All rigths reserved - educ hafa

2.ModuleLibpri
LibpriestunmoduleutilisparlesfabricantsdecartesdecommunicationquipermetauxinterfacesPRIdtreutilises
parAsterisk.
# wget http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri1.4.10.2.tar.gz
# cd /usr/src/
# tar zxvf libpri-1.4.10.2.tar.gz
# chown -R root:root libpri-1.4.10.2/
# cd libpri-1.4.10.2/
# make clean
# make
# make install
mkdir -p /usr/lib
mkdir -p /usr/include
install -m 644 libpri.h /usr/include
install -m 755 libpri.so.1.4 /usr/lib
if [ -x /usr/sbin/sestatus ] && ( /usr/sbin/sestatus | grep "SELinux
status:" | grep -q "enabled"); then /sbin/restorecon -v
/usr/lib/libpri.so.1.4; fi
( cd /usr/lib ; ln -sf libpri.so.1.4 libpri.so)
install -m 644 libpri.a /usr/lib
if test $(id -u) = 0; then /sbin/ldconfig -n /usr/lib; fi
LibpriestchargautomatiquementparAsterisk.

partirdelaversion1.4.4,libpripermetdegrergalementlesaccsBRIenplusdesaccsPRI.

3.ModuleAsterisk
LemoduleAsteriskestlelogicieldetlphonie.Nousavonschoisidinstallerladernireversiondelafamille1.6mme
si les versions les plus rpandues sur les systmes en production demeurent les versions 1.2 et 1.4 du fait de
lhistorique.

a.CrationdelutilisateurAsterisk
# adduser --home /var/lib/asterisk -u 5060 asterisk

b.TlchargementdupackageAsterisk
# cd /usr/src/
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.6.2current.tar.gz
# tar zxvf /download/ asterisk-1.6.2-current.tar.gz
# chown -R root:root asterisk-1.6.2.8
# cd /usr/src/asterisk-1.6.2.8

c.CompilationdAsterisk
# make clean
# ./configure
< ... >
checking for mandatory modules: ... ok
configure: creating ./config.status
config.status: creating build_tools/menuselect-deps
config.status: creating makeopts
config.status: creating channels/h323/Makefile

ENI Editions - All rigths reserved - educ hafa

- 7-

config.status: creating include/asterisk/autoconfig.h


.$$$$$$$$$$$$$$$=..
.$7$7..
.7$$7:.
.$$:.
,$7.7
.$7.
7$$$$
.$$77
..$$.
$$$$$
.$$$7
..7$
.?.
$$$$$
.?.
7$$$.
$.$.
.$$$7. $$$$7 .7$$$.
.$$$.
.777.
.$$$$$$77$$$77$$$$$7.
$$$,
$$$~
.7$$$$$$$$$$$$$7.
.$$$.
.$$7
.7$$$$$$$7:
?$$$.
$$$
?7$$$$$$$$$$I
.$$$7
$$$
.7$$$$$$$$$$$$$$$$
:$$$.
$$$
$$$$$$7$$$$$$$$$$$$
.$$$.
$$$
$$$
7$$$7 .$$$
.$$$.
$$$$
$$$$7
.$$$.
7$$$7
7$$$$
7$$$
$$$$$
$$$
$$$$7.
$$ (TM)
$$$$$$$.
.7$$$$$$ $$
$$$$$$$$$$$$7$$$$$$$$$.$$$$$$
$$$$$$$$$$$$$$$$.
configure:
configure:
configure:
configure:
configure:

Package configured for:


OS type : linux-gnu
Host CPU : i686
build-cpu:vendor:os: i686 : pc : linux-gnu :
host-cpu:vendor:os: i686 : pc : linux-gnu :

La commande ./configure va terme uniquement si tous les packages du systme dexploitation sont
prsents.Dansnotreinstallation,ilmanquelespaquetslibxml2dev etlespaquetslisncurses.
La branche 1.6 dAsterisk permet, tout comme la 1.4, de personnaliser linstallation en ne slectionnant que les
options correspondantes linstallation cible. Cette personnalisation seffectue via la commandemake menuselect,
quirestecependantoptionnelle.
# make menuselect
**************************************************
Asterisk Module and Build Option Selection
**************************************************
Press h for help.
--->

Applications
Bridging Modules
Call Detail Recording
Channel Drivers
Codec Translators
Format Interpreters
Dialplan Functions
PBX Modules
Resource Modules
Test Modules
Compiler Flags
Voicemail Build Options
Module Embedding
Core Sound Packages
Music On Hold File Packages
Extras Sound Packages

Unmenudaide(h)permetdobtenirlcransuivant:
**************************************************
Asterisk Module and Build Option Selection
**************************************************
Press h for help.

- 8-

ENI Editions - All rigths reserved - educ hafa

scroll
toggle selection
select
deselect
select all
deselect all
back
quit
save and quit

=>
=>
=>
=>
=>
=>
=>
=>
=>

up/down arrows
Enter
y
n
F8
F7
left arrow
q
x

XXX means dependencies have not been met


or a conflict exists
< > means a dependency has been deselected
and will be automatically re-selected
if this item is selected
( ) means a conflicting item has been
selected
Nous pouvons apporter une modification dans le menu Core Sounds Packages en cochant toutes les options des
sonsFR.
**************************************************
Asterisk Module and Build Option Selection
**************************************************
Press h for help.
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]

CORE-SOUNDS-EN-G722
CORE-SOUNDS-EN-SLN16
CORE-SOUNDS-EN-SIREN7
CORE-SOUNDS-EN-SIREN14
CORE-SOUNDS-ES-WAV
CORE-SOUNDS-ES-ULAW
CORE-SOUNDS-ES-ALAW
CORE-SOUNDS-ES-GSM
CORE-SOUNDS-ES-G729
CORE-SOUNDS-ES-G722
CORE-SOUNDS-ES-SLN16
CORE-SOUNDS-ES-SIREN7
CORE-SOUNDS-ES-SIREN14
CORE-SOUNDS-FR-WAV
CORE-SOUNDS-FR-ULAW
CORE-SOUNDS-FR-ALAW
CORE-SOUNDS-FR-GSM
CORE-SOUNDS-FR-G729
CORE-SOUNDS-FR-G722
CORE-SOUNDS-FR-SLN16
CORE-SOUNDS-FR-SIREN7
CORE-SOUNDS-FR-SIREN14

French, WAV format


PassonslacompilationdAsterisk :
# make
Building Documentation For: channels pbx apps codecs formats cdr
bridges funcs tests main res
+--------- Asterisk Build Complete ---------+
+ Asterisk has successfully been built, and +
+ can be installed by running:
+
+
+
+
make install
+
+-------------------------------------------+
# make install
+---- Asterisk Installation Complete -------+
+
+

ENI Editions - All rigths reserved - educ hafa

- 9-

+
YOU MUST READ THE SECURITY DOCUMENT
+
+
+
+ Asterisk has successfully been installed. +
+ If you would like to install the sample
+
+ configuration files (overwriting any
+
+ existing config files), run:
+
+
+
+
make samples
+
+
+
+----------------- or ---------------------+
+
+
+ You can go ahead and install the asterisk +
+ program documentation now or later run:
+
+
+
+
make progdocs
+
+
+
+ **Note** This requires that you have
+
+ doxygen installed on your local system
+
+-------------------------------------------+
# make samples
# make config
update-rc.d: warning: /etc/init.d/asterisk missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
Adding system startup for /etc/init.d/asterisk ...
/etc/rc0.d/K91asterisk -> ../init.d/asterisk
/etc/rc1.d/K91asterisk -> ../init.d/asterisk
/etc/rc6.d/K91asterisk -> ../init.d/asterisk
/etc/rc2.d/S50asterisk -> ../init.d/asterisk
/etc/rc3.d/S50asterisk -> ../init.d/asterisk
/etc/rc4.d/S50asterisk -> ../init.d/asterisk
/etc/rc5.d/S50asterisk -> ../init.d/asterisk
Explicationdesdiffrentescommandes:
Lacommandemake installpermetdallerlescherchertouslespaquetsslectionnsdansmake menuselect.
(parexemple :
http://downloads.asterisk.org/pub/telephony/sounds/releases/asteriskcoresoundsfrwav1.4.18.tar.gz).
La commande make
samples permet linstallation des fichiers de configuration par dfaut
(/etc/asterisk/sip.conf, /etc/asterisk/extensions.conf...). Il sagit de fichiers dexemple. Attention, chaque lancement
decettecommandecraselesfichiersdeconfigurationprcdents.
Lacommandemake configpermetdajouterlesscriptsdedmarrage(exemple :/etc/init.d/asteriskstart).

d.DmarragedAsterik
Le lancement dAsterisk peut se faire par la commande/usr/sbin/asterisk ou par le script /etc/init.d/asterisk
start(cestlacommandemake configquipermetlutilisationdecescript).
# /etc/init.d/asterisk start
Starting Asterisk PBX: asterisk.
# ps -ef | grep asterisk
root
24851 10972 0 21:44 pts/1
root
25469
1 0 21:43 ?

00:00:00 grep asterisk


00:00:00 /usr/sbin/asterisk

e.AccslaCommandLineInterface(CLI)
# asterisk -rv
asterisk -rv
Asterisk 1.6.2.8, Copyright (C) 1999 - 2010 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type core show warranty
for details.
This is free software, with components licensed under the GNU
General Public
License version 2 and other licenses; you are welcome to redistribute it

- 10 -

ENI Editions - All rigths reserved - educ hafa

under
certain conditions. Type core show license for details.
=========================================================================
Connected to Asterisk 1.6.2.8 currently running on srv-alfresco2
(pid = 25469)
Verbosity was 0 and is now 1
srv-asterisk*CLI> exit
Executing last minute cleanups

4.ModuleAsteriskperl
LemoduleasteriskperlestunebibliothquepermettantdedvelopperdesapplicationsdetypeAGIetManager.Ce
module ne pouvant pas tre install par CPAN, nous linstallons via la mthode conventionnelle ( partir de
http://asterisk.gnuinter.net).
#
#
#
#
#
#
#
#

wget http://asterisk.gnuinter.net/files/asterisk-perl-1.01.tar.gz
cd /usr/src
tar zxvf /download/asterisk-perl-1.01.tar.gz
chown -R root:root asterisk-perl-1.01/
cd asterisk-perl-1.01/
perl Makefile.PL
make all
make install

5.ModuleAsterisksounds
Pardfaut,AsteriskinclutunensembledesonsauformatGSMenversionUS.
Le choix dautres langues et dautres codages seffectue lors de linstallation dAsterisk via la commande make
menuselect,citeprcdemment.
Ilestalorspossibledechoisirdessonsadditionnelsdanslesmenus Core Sound Packages , MusicOnHoldFile
Packages et ExtrasSoundPackages .

6.ModuleAsteriskAddons
LemoduleAsteriskAddonspermetdestockerlesenregistrementsCDR(CallDetailRecord)dansunebasededonnes
MySQL.

a.Tlchargementdufichierasteriskaddons1.6.2.1.tar.gz
# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/
asterisk-addons-1.6.2.1.tar.gz
# cd /usr/src
# tar zxvf /download/asterisk-addons-1.6.2.1.tar.gz
# chown -R root:root asterisk-addons-1.6.2.1/
# cd asterisk-addons-1.6.2.1/
# ./Configure
# make menuselect
# make
# make install
# make samples

b.Modificationdesdroitsdexcution
#
#
#
#
#

chown
chown
chown
chown
chown

-R
-R
-R
-R
-R

asterisk:asterisk
asterisk:asterisk
asterisk:asterisk
asterisk:asterisk
asterisk:asterisk

/var/lib/asterisk
/var/log/asterisk/
/var/run/asterisk/
/var/spool/asterisk/
/dev/dahdi

ENI Editions - All rigths reserved - educ hafa

- 11 -

#
#
#
#
#
#
#
#

- 12 -

chmod -R 750 /var/lib/asterisk/


chmod -R 750 /var/log/asterisk/
chmod -R 750 /var/run/asterisk/
chmod -R 750 /var/spool/asterisk/
chmod -R 750 /dev/dahdi
chown -R root:asterisk /etc/asterisk
chmod -R 750 /etc/asterisk
service asterisk start

ENI Editions - All rigths reserved - educ hafa

Lesclientstlphoniques
NousallonsprendrecommeexemplelematrielThomsonST2030quioffreunexcellentrapportqualitprix.
Letlphoneseparamtredirectementvialeclavierouviauneinterfaceweb,laidedeladresseIPdynamiqueque
letlphonearcupre(sousrservedelaprsencedunserveurDHCPdanslentreprise).
Loption SETUP / VoIP Service / Basic Setup permet de paramtrer le serveur SIP primaire (ici, il sagit du serveur
AsteriskavecpourIP192.168.1.100),leserveurSIPsecondaire(192.168.5.100)etlecompteSIP(777).
ExempledeparamtrageduPrimarySIPServerduThomsonST2030:

LeprotocoleSIPfaitrfrenceauportUDP5060pardfaut.LeparamtreRegisterFrequencyindiqueladure
entredeuxtentativesdeconnexionauserveurSIP.

ExempledeparamtrageduSecondarySIPServerduThomsonST2030 :

LoptionAdvancedpermetdeparamtrerendtailletlphone.
ExempledesfonctionnalitsdelongletAdvancedduThomsonST2030 :

ENI Editions - All rigths reserved - educ hafa

- 1-

- 2-

ENI Editions - All rigths reserved - educ hafa

Introduction
Danscechapitre,nousabordonstoutcequitouchelapriphriedelaVoIPetquipermetlacheminementdesappels
entrantsetsortants.

Appelsentrants:cesontlesappelsquiproviennentdumondeextrieurparexemple,unappelprovenant
duneligneanalogique,duneligneNumris,duneligneGSM,duneligneFreebox...
Appelssortants:cesonttouslesappelsdestinationdumondeextrieurdoncdurseaupubliccommut.

ENI Editions - All rigths reserved - educ hafa

- 1-

Lesdiffrentssupports
Pourrappel,lechapitreStratgiedarchitectureTVoIPprsentediffrentesstratgiesVoIP,quisappuienttoutessur
desmdias,ausensphysique.

1.LignesRTC
Cetypedelignesestleplusancienetleplusrpanduencorelheureactuelle.Cetteligneestuneligneanalogique
deloprateurhistorique,surlaquelleonbrancheuntlphoneanalogiqueetquiestrelielautocommutateurde
loprateur.
Laliaisonentrelaprisedelabonnetlecentralestraliselaidedunepairetlphonique.
Le rle du central est deffectuer la mise en relation avec un autre abonn et donc deffectuer la rservation de
circuitsdecommunicationetlacommutation.
UneligneRTC(RseauTlphoniqueCommut)fonctionneundbitde64Kb/s.Aucunecompressionnumriquenest
ralise,principaleraisondesafiabilit.
Danslecadreduneentreprise,ilfautvidemmentenvisagerdavoirplusieurslignesRTCisolesmaisceladevient
vitefastidieuxgrersilebesoinencommunicationssimultanesestplusimportant.

2.LignesRNISPRIBRI
Une autre faon de se connecter au RTC est dutiliser une ligne, dite Numris en France, qui sappuie sur le RNIS
(RseauNumriqueIntgrationdeService)trsdployenEuropedanslesannes80/90maispeurpandudansle
restedumonde.

a.AccsT0ouBRI(BasicRateInterface)
DisposerdunaccsaurseauNumrisdeloprateurhistoriquepermetdavoirdeuxcanauxvoixoudeuxcircuits
BRI.Onparlede2B+D(2canauxB+1canalDpourlasignalisationdesdonnes).
Ledbitmaximumestdoncde128Kb/saveclesdeuxcanauxBdetransmissiondedonnes.
Un lien T0 permet de disposer de deux lignes physiques donc davoir un maximum de deux communications
simultanes.uninstantt,laligneT0peutdisposerdescapacitssuivantes:
Nombredappelsentrants

Nombredappelssortants

ENI Editions - All rigths reserved - educ hafa

- 1-

b.AccsT2ouPRI(PrimaryRateInterface)
DautrestypesdeliensexistentgalementcommelesaccsT2dit"demiT2",quivalents16canaux(15B+D)et
galementlesaccsT2(30B+D),quivalents30canauxsimultans.
UnT2permetdoncdavoirundbitde30*64Kbp/s=2Mb/s
Audel,ilfaudrautiliserplusieursliensT2,T0ouanalogiques.
Exemple:uneentrepriseabesoinde48canaux.ElledevrainstallerunT2,unT2,unT0etuneligneRTC.
EnAustralieetenEurope,latechnologiePRI30B+D(dsignesousletermedeliaisonE1)estutilise.Alorsque
danslerestedumonde,cestlatechnologiePRI23B+Dquiestutiliseetquiestdsignesousletermedeliaison
T1.

c.QualitdeservicedesaccsBRI/PRIdeFranceTlcom
Lacommutationdecircuit,utilisedanscestypesdeliens,permetdedisposerdebandepassantefixe.Ilnyadonc
aucunsoucidequalitdeservice.

d.Cots
Ilexistetroistypesdecots:lesfraisdinstallation,labonnementmensuel,lescotsdescommunications.
Cemodleestdoncpluttonreuxetdevraitavoirtendancedisparatredanslesprochainesannesauprofitdu
supportSDSLpuisdusupportfibreoptique.

3.LignesSDSL
Plusieursoprateursalternatifsdepremierplanproposentdesoffresderaccordementversle"RTC"laidedeliens
SDSL.
IlfautbiencomprendrequelesaccsT0et/ouT2classiquessontrsilisetremplacsparuneligneSDSL.
Ledbitduliendevratreprisenconsidrationenfonctiondunombredecanauxsimultanssouhait.
Cetypedeliensnepeutpastreinstallpartout,contrairementauxT0/T2,carceladpenddelligibilitSDSL.
Defaongnrale,lescotssontmoinsimportants:

FAS:lesfraisdaccsauservicedpendentducontratsouscrit

Abonnement:defaongnrale,moinsde50%parrapportauxabonnementsdOrange

Cotsdescommunications:latarificationestsouventavantageusemaisrarementforfaitise.

ExempledunearchitectureT2surSDSL

- 2-

ENI Editions - All rigths reserved - educ hafa


Danstouslescas,leslignesSDSLsontlocalesausiteetlesacheminementsdesappelsentrantsetsortants
sontdonclocaux,horscommunicationintrasitesiunrseauVPNexistedj.

4.TrunkingSIP
Menons la rflexion plus loin, en se demandant si la passerelle vers le rseau commut ne pourrait pas tre
externalisedirectementchezloprateurlaliaisonsefaisantalorsviauneligneddie,dequalitetsousforme
IP.LorsqueleprotocoleSIPestutilis,ilsagitduntrunkSIP.
Celaprsentecertainsavantages:

pasdinstallationetdegestionlocaledeligne

pasdecartedecommunicationlocaleouderouteursVoIPenlocal

communicationscentralises.

Techniquement, ce mode peut tout fait fonctionner avec un serveur Asterisk dans lentreprise ou un iPBX chez
loprateur.
Enralit,sinoussouhaitonsmettreen uvrenotrepropreAsteriskavecunouplusieurstrunksSIPexternaliss,
peudesolutionexisterellement.Lesoprateursclassiquestrouventcertainementencoreplusdintrtsdevendre
soitdesliensT0/T2,soitdeslignesSDSLdirectementauseindelentreprise.
LautretendancechezlesoprateursestdetoutmaintenirenproposantuntrunkSIPbiensrmaisaussilecentrex
etlalocationdepostesSIP.
Ilnyapasdebonnesolutiontoutdpendquelestlebutrecherch.Celadit,lavolontdematrisersonsystme
dinformationendployantetenexploitantsonpropreserveurdetlphonieestsanscontesteunebonneide.
Le modle du "centrex local" avec trunks SIP externaliss, sduisant tant financirement que techniquement, est
cependantdjbiendployauxtatsUnisetdevraitprochainementfairesonentreenFrance.
Afindeminimiserlesrisquesetdegarantirunecontinuitdeservices,ilfaudraveillerrpartirlestrunksSIPauprs
deplusieursoprateursetsipossibleavecdesarrivessurplusieurssitesphysiques.
ExempledetrunksSIP

ENI Editions - All rigths reserved - educ hafa

- 3-

- 4-

ENI Editions - All rigths reserved - educ hafa

Lesoffresdumarch
1.OrangeBusinessServices
LoffreVoIPdOBS(exFranceTelecom)estarticuleautourde5produits:

BusinessTalkIP

BusinessTalkIPCentrex

BusinessTalkGlobal

BusinessInternetCentrex(BIC)

BusinessInternetVoix(BIV).

BusinessTalkIPetBusinessTalkIPCentrexncessitentdedisposerdunrseauEquantIPVPNavecdesliensSDSL
ou des liaisons spcialises (LS) en effet, ce type de rseau MPLS (MultiProtocol Label Switching) permet de
disposerdelaclassedeservicesVoix.

a.BusinessTalkIP
Cettesolutionpermet,toutendisposantdesespropresmatrielsdetlphonie(autocoms,tlphones),dutiliser
une passerelle mutualise en c ur de rseau Equant, afin davoir la connectivit avec le rseau tlphonique
commut. Cette plateforme de service OBS permet de supprimer les accs T0/T2 locaux. Les principales
caractristiquessontlessuivantes:

Aucunchangementdesquipementsexistants
conomiesintressantescarsuppressiondesliensT0/T2locauxetutilisationdelapasserellecentraliseen
c urderseaudOBS

Tarificationavantageuseverslesmobilesetlesappelsinternationaux

NcessiteunrseauEquantdetypeSDSLavecQOS(classeVoix)

Appelsintersitesgratuits

Webdadministrationdelaplateformecentralise

b.BusinessTalkIPCentrex
Leprincipeestlemmequepourloffreprcdentemaislatlphonieestentirementexternalise,danslesens
olentreprisevaconfierOBSlagestiondesatlphonie:lautocom,ditcentrex,estchezloprateur,enc ur
derseau.Lestlphonessontlous.
OutrelescotsrcurrentsdurseauEquantetlesfraisdemiseenservicedecettesolution,lentrepriseauradonc
supporterdescotsrcurrents:tlphones,centrex,communicationstlphoniques.titredinformation,leprix
varieentre14et22eurosHTparmoisparutilisateurenfonctiondutypedeterminalchoisi.Lescommunications
peuventtrefactureslusageouauforfait.Lesprincipalescaractristiquessontlessuivantes:

Pasdinvestissementsenautocom,tlphones,passerelle:modelocatif

Pasdegestiontechnique:webdadministrationetwebutilisateur

NcessiteunrseauEquant

ENI Editions - All rigths reserved - educ hafa

- 1-

DpendanceforteavecOBS

Appelsintersitesgratuits

Nombreusesfonctionnalits(messagerievocale,clisktodial)

GTR24/24

Softphonespourlesnomades(ncessiteunpackBusinessEveryWhere)

c.BusinessTalkGlobal
Cetteoffreestadapteauxgrandscomptesdisposantdesiteslinternational.Ellepermetdunifierlescontratsde
tlphonie au sein dun seul contrat, de disposer de tarifications avantageuses sur les communications, dappels
intersitesIPgratuits,disponibilitdansplusde100pays.Ilnyapasderemiseencausedelexistanttlcom.

d.BusinessInternetCentrex(BIC)
BICregroupe,auseindunseulabonnement,unetlphonieenmodecentrexetunaccsInternet.Lestlphones
sontlousetlapasserelleVoIPestenc urderseauxdOBS.LesappelsverslesfixesenFrancesontillimitset
destarifsavantageuxsontappliquspourlesmobilesFrance.
UneBusinessLiveboxassurelasparationdesdeuxrseauxvoixetdatasousformedeVLAN.
LinternetestconstruitauchoixsurdelADSLoudelaSDSL.

e.BusinessInternetVoix(BIV)
BIVressemblesonhomologueBICmaislematrieltlphoniqueetlautocomnesontpaschezOBS,ilssontdj
existants.
BIVfournitdoncunaccsInternet(ADSLouSDSL),unaccsverslespasserellestlphoniquesdOBS,letoutsurla
mmeligneetvialerouteurBusinessLivebox.
BIVrevientenmoyenne13eurosHT/utilisateur/mois.
Source:http://www.orangebusiness.com/entreprise

2.SFR
SFRproposeplusieursoffresautourdelatlphoniefixeetdelaconvergence.
Tlphoniefixe

SFRbusinessfixeCentrex:tlphoneslocauxcomprisdanslabonnement,centrexetpasserellechezSFR.

9OfficeSFR:autocomettlphoneslocauxmaispasserellechezSFR.

9DialogSFR:offredeprslection.

Convergence

- 2-

Pack Business SFR : pour les petites entreprises. Systme de communication globale alliant autocom et
Internet,tlphoniefixeetmobile,letoutchezSFR.
SFROneCentrex:offreintgrefixe/mobileenmodeCentrex.
9ipnetToIP:offrevoix,autocomlocaloucentrex.ConvergenceavecleVPNIPdata.Convientauxgrosses
entreprises.

ENI Editions - All rigths reserved - educ hafa

a.PackBusiness(ex9Pass)
Ilsagitduquadrupleplaypourlesstructuresdemoinsde20personnes.
AveclepackBusinessSFR,depuisfinjanvier2010,SFRsattaqueaumarchdesstructuresdemoinsde20salaris
qui reprsente environ 600000 entreprises. Ce pack est une sorte de fusion entre lex 9Pass de Neuf Telecom,
datantde2006,etdeloffrefixe/mobiledeSFR,datantde2007.
Letroncdeloffre(enmodelocatif74eurosHT/mois)estcomposdesfonctionnalitssuivantes:

UnaccsInternetviaADSLSFRobligatoire.
Un Standard tlphonique (ce service remplace le service TV de loffre grand public, peu utile pour les
professionnels).
Unelignefaxddieaveccommunicationsillimites.

LestandardatdveloppparEfixo,lafilialemarseillaisedeSFR,etpermetderaccorderunelignefaxetentre2
9lignestlphoniques.
Lesoptionspermettentdajouterde29lignesfixes.Chaquelignepermetdedisposerduntlphone,desappels
illimitsverslesfixesFranceetversplusde40destinations.
Il faut au minimum ajouter deux lignes ( 29 euros HT/mois) ainsi que les forfaits vers les mobiles valables pour
toutesleslignesfixes(leforfait4hest31,20eurosHT/mois).
Enrsum,laconfigurationsuivanterevient163eurosHTparmois:

Lautocom

LaccsInternet

2tlphones

2lignesfixes

Unforfaitmobilede4h

Chaqueautrelignesupplmentaire(fax,TPE,alarme)estfacture17,30eurosHT/mois.

b.9Office
CeserviceestgalementbassuruneligneSDSLendgroupagetotalchezSFR9T.Unbotier9officepermetde
raccorderlePBXlocalaurseau9Tetainsidedisposerdecanauxvoix.
Lescommunicationssontsoumisesunegrilletarifaireattractive.LabonnementSDAest3euros/mois.Laccs
Internetestenoption.
Encasdenonligibilit,lesiteestrattachenprslectionmaisbnficiedelammegrilletarifairequedusite
raccordendirect.
SFR est le rsultat de la fusion de SFR (expertise mobilit), et de 9 Telecom (expertise en rseau de
donnes)quiavaitgalementacquisCegetelen2005.
Sources:http://www.neufcegetel.fr,http://www.sfr.fr,http://www.wengo.com

3.Completel
En2009,loprateurspcialisenrseaufibreoptiquepourentreprisesarachetB3G,acteurmajeurdumondedes
centrexsIP.
Enmatiredetlphonie,loprateurproposelessolutionssuivantes:

ENI Editions - All rigths reserved - educ hafa

- 3-

Tlphoniedirecte

Tlphonieindirecte

Gestiondesappelssortants(prslection).

PasserelleToIP

InstallationdefibreoptiqueouSDSLenremplacementdesliensT0/T2,GTRde4h.

CentralisationdelatlphonieIPsansremiseencomptedurseauDataenplace.

Completude

Solution pour fixe, mobile et Internet. Il sagit ici uniquement de lvasion des flux tlphonique et
internetlinstallationlocalePBX+tlphonesIPrestentinchanges.
LoffreCompletudedestinationdesPMEpermetdebnficierdunaccsInternetjusqu4Mb/set
dun accs au rseau RTC, via le rseau de Completel. Ce service sappuie sur une ligne SDSL
construitespcialementparloprateur.
Lesnumrosdetlphonedelentreprisebnficientdelaportabilit.
Pour les grandes entreprises, Completel met en place une ligne SDSL et un botier spcifique
permettantderemplacerlesaccsT2deFranceTelecom.Lescotssontavantageux:moins50%
surlabonnement,etlescotsdescommunicationsgalement.
Completel commercialise des offres via des liens Fibre optique connus pour leur robustesse et leur
capacitillimiteenvoix/data,desliensSDSLGS100%desdbitsATMetIPgarantis(pasdeburst)
ouviadesliensdetypeLS(LPT)2048KbpsoletransportdelavoixestnatifetquivalentunT2
RNIS.

UneSDSL4Mbps(4GS)permetdmuler1T2soit30canauxsanscompression(G711).
Une SDSL 2 Mbps (2GS) permet dmuler 1 T2 avec compression (G729) ou T2 soit 15
canauxsanscompression.

Source:http://www.completel.fr

BCentrex

IlsagitniplusnimoinsquedeloffreBCentrexdelancienacteurducentrexIPB3GTelecom,rachet
en2009.
Cest une offre complte de VoIP/ToIP avec centrex B3G, tlphones IP en mode locatif, deux liens
hautdbit(detypeSDSL)dinterconnexionaveclerseaudeB3G.LepremierlienestddiVoIPetle
secondsertdebackupdelaVoIPaucasolepremierlienneseraitplusdisponible.Leliendebackup
peutgalementservirdelienpourletransportdesdonnes.Ilestnoterquelesdeuxlienssont
pris chez deux oprateurs diffrents, dans la mesure du possible. La passerelle est en c ur de
rseauoprateur.
Un plugin outlook permet un interfaage des contacts tlphoniques avec la messagerie. Les cots
descommunicationssontattractifs.

4.Free
Cet oprateur sadresse essentiellement au grand public mais rien ninterdit dinstaller plusieurs accs freebox en
entreprise.Techniquement,uneFreeboxpermetdedisposerduneoffretripleplay(Internet,tlphonieettlvision)
grcedeslignestrivc("virtualchannels"pourcanauxvirtuels).Letlphoneanalogiquesebranchesurlaboxetla
tlphonielocaleetnationaleestillimite(horsmobiles).Leforfaitde29,99euros/moisestattractif.

- 4-

ENI Editions - All rigths reserved - educ hafa

Il est galement possible dutiliser le service Freephonie via un softphone SIP : cela permet, depuis nimportequel
ordinateur,dmettreouderecevoirdesappelsversdesfixesoumobilesauxconditionsdeFree.
LinterfacedegestionducompteFreepermetdeparamtrerlesinformationsrelativesaucompteSIP:

Nomdutilisateur:ilsagitdunumrodetlphoneFree

Identifiant:idem

Motdepasse:dfinirparlutilisateur

Domaine:freephonie.net

RedirigerlesappelsentrantsverslecompteSIP:OUI/NON

RedirigerlesappelsentrantsverslaFreebox:OUI/NON

Serviceactiv:OUI/NON

CesparamtressontrenseignerdanslesclientsSIPcommeXLiteparexemple.

Exemple:latlphonieFree

ChaqueFreeboxV5reprsentepotentiellementunpointdeconnexionWiFisilaconnexionFreephonieest
autorise.Celapermetuntlphone/smartphonedeseconnecterenWiFisuruneFreebox"Freephonie"
via une authentification base de cl prive/cl publique installer et disponible dans linterface de gestion du
compteFree.

5.DirectCentrex
FrontierSoftwareestunesocitquicommercialisedesoffressousformedeforfaits(forfaitconso,forfaitdebase,
forfait international, forfait illimit, forfait libert). Lutilisateur dispose dun compte VoIP, un numro de tlphone
pourlesappelsentrants/sortants.
IlsuffitdtreconnectauserveurVoIPdeDirectCentrex,viauneconnexionInternet.
Lesappelsverslesmobiles,nazur,nvertfontlobjetdunetarificationsupplmentaire.
Source:http://www.directcentrex.com

ENI Editions - All rigths reserved - educ hafa

- 5-

6.Denouvellesoffres
a.Keyyo(exPhonesystem)
KeyyoproposedesoffresdestinationdesPME/TPEetdesoffresdestinationdesparticuliers:

3Offresbusiness,basedecentrex

LibreCentrex5euros/mois/poste:tarificationlaconsommationde0.014euroHT/minpourles
appelsFrancefixeet0.10euroHT/minverslesmobilesFrance.
Illimit Centrex 15 euros/mois/poste : appels illimits vers fixes France + 50 destinations
internationales+tarifmobilesFrance0.10euroHT/min.
Illimit Mobile Centrex 39 euros/mois/poste : appels illimits vers tous les fixes France + 50
destinationsinternationales+touslesmobilesenFrancedetouslesoprateurs.

Les tlphones IP proposs sont des modles Cisco Linksys SPA 922 au prix de 112 euros HT et des
modles(pourstandard)CiscoLinksysSPA942auprixde134,95eurosHT.
Keyyo propose galement des accs ADSL Pro et SDSL, soit ddis la tlphonie seule, soit mutualiss avec
linternet.Cijointletableaucomparatifdbit/nombredepostesindicatifs/nombredappelssimultans:
Queldbitchoisir?

AccsddiTlphonieIP

AccsmutualisTlphonieIP+
Internet

Nombredepostes
indicatifs

Nombredappels
simultans

Nombredepostes
indicatifs

Nombredappels
simultans

ADSLProMax

15

SDSL512Kbps

30

10

SDSL1Mbps

60

20

40

12

SDSL2Mbps

150

40

100

30

SDSL4Mbps

400

80

200

60

Source:www.keyyo.fr

b.CielTelecom
Cette socit propose aux PME tout un ensemble de services de tlphonie qui est adapt chaque type
dentreprises.Elleproposeunauditgratuitdesfacturesdetlphonieetannonceunerductionpossiblecomprise
entre30et70%parrapportlexistant(abonnements+consommations).Lesservicessontlessuivants:
Offressansabonnement

CielNationalGratuit,pournepluspayerlesappelsnationaux
Cestloffrebasiquedeprslectionaveclagrilletarifairesuivante:

- 6-

Local:1centimeHT/minute+cotdeconnexionde7,5centimes.

National:gratuit.

Mobiles:8centimesHT/minute+cotdeconnexionde17,5centimes.

ENI Editions - All rigths reserved - educ hafa

CielLibert,pourenfiniraveclescotsdeconnexion

Cetteoffresadresseauxclientspassantbeaucoupdappelscourts(moinsde2minutes).Lesprix
verslesfixessontde2,3centimesHT/mnetverslesmobilesde15,9centimesHT/mn.

CielInfini,pourbnficierdunforfaitlocal/nationalillimit

International(ZoneA,Europe,USA,Canada):6centimesHT/minute+cotdeconnexionde10
centimes.

Loffre est 19,50 HT/mois et les appels vers les mobiles sont 10 centimes HT/mn + 21
centimesdecotdeconnexion.

CielInfiniGlobal,pourunforfaitlocal/national/mobilesillimit

Loffre est 48 HT/mois et sadresse des clients mettant beaucoup dappels vers mobiles
partirdespostesfixes.

Offresavecabonnement

Pack national gratuit : Cest une offre qui vient se substituer labonnement classique de la ligne de
tlphone (16 HT/mois chez Orange). Labonnement est 12,95 HT/mois et les communications sont
facturesselonlagrilledeCielNationalGratuit.

PackLibert:abonnement12,95HT/mois+conditionsdeCielLibert.

PackInfini:abonnementettouslesappelsillimitsverslesfixespour29,99HT/mois.

PackInfiniGlobal:abonnementettouslesappelsillimitsverslesfixesetmobilespour59,99HT/mois.

CielCentrex
IlsagitduneoffreenmodeCentrexoletlphoneIP,prconfigur,estlou.LaSDAestportechezCielTelecom
etlesappelsverslesfixesFrancesontillimits.LatlphonieseffectuevialelienInternetduclient.Chaqueligne
estpropose13,50eurosHT/mois.
Source:http://www.cieltelecom.fr

c.Poivy
Ilsagitdunfournisseur(basCologne)detlphoniesortantemaisilestgalementpossibledelevoircomme
unfournisseurdetrunkSIPetainsideparamtrerlautocomAsteriskpourmettrelesappelssortantssurletrunk.
PourutiliserPoivy,ilfautaupralablesinscrirecommeclient(aucunfrais)entlchargeantleclientSIPPoivy.
5 heures de communications sont offertes par semaine vers une trentaine de destinations pour les fixes dont la
France,laBelgique,lAllemagne,lItalie,lAngleterre,lesUSA(ycomprislesmobiles).Ensuite,lestarifssontvraiment
agressifs : 0,010 centime /mn pour les fixes France. Les appels vers les mobiles France sont 0,06 centime
/minute.
Le compte doit ensuite tre approvisionn soit en prpaiement (approvisionnement en manuel), soit en post
paiement(prlvementautomatique).
Source:www.poivy.com
ConfigurationdutrunkSIPPoivysurAsterisk
allow=ulaw&alaw
authuser=username
disallow=all
fromuser=username
host=sip.poivy.com
insecure=very
nat=yes

ENI Editions - All rigths reserved - educ hafa

- 7-

qualify=yes
secret=password
type=peer
username=username
LeusernameetlepasswordsontceuxcrschezPoivyetcorrespondentaucomptedeconnexion.
Il ne faut pas hsiter surfer sur le site de gratostel (http://www.gratostel.com) afin de consulter les
meilleuresoffresdumarch.

7.Skype
Skype fournit un softphone qui permet de passer et de recevoir des appels gratuitement entre utilisateurs skype.
Techniquement, il suffit de disposer dune connexion Internet, afin que le client skype senregistre avec le serveur
skype.
Ilestpossibledesouscrireloffre"SkypeIn"afindebnficierdunnumro(uneSDA)etderecevoirdesappelsen
provenancedetlphonesfixesetmobiles.LecotdelacommunicationpourlmetteurversunnumroSkypeInest
celuidunecommunicationlocale.
Loffre"SkypeOut"permetdeffectuerdesappelssortantsverslerseauRTC.
Skype offre dautres fonctionnalits : sms, appels vido, transfert de fichiers, confrences tlphoniques, transfert
desappelsSkypeversunelignefixeoumobile.
Source:http://www.skype.com

8.Larrivedesregistrarssurlemarch
OVH
Le mtier dOVH est de fournir des noms de domaines, des hbergements de sites web, des serveurs en mode
hberg.Depuis2009,OVHproposedessolutionstlphoniques:

SolutionDUO(Abonnementde4,99eurosHT/mois)

SolutionDECTIP(abonnementde9,99eurosHT/mois)

Compos dun tlphone IP Thomson ST2030 + extension 128 touches et dune ligne SIP. Mmes
conditions que loffre Solution DECT IP mais avec 10 heures de communications vers les mobiles
France.

Solutionstandardiste+

- 8-

ComposduntlphoneIPThomsonST2030etduneligneSIP.MmesconditionsqueloffreSolution
DECTIP.

Solutionstandardiste(abonnementde29,99eurosHT/mois)

ComposduntlphoneDECTSiemensC470IPetduneligneSIP.Incluslesappelsfixesenillimit
et3heuresverslesmobilesFrance.

SolutionOffice(abonnementde9,99eurosHT/mois)

ComposdunbotierATALynsysPAP2Tpermettantderaccorderuntlphoneetunfaxparexemple.
LebotierestconnectlaboxADSL.OVHfournitdonc2lignes(2numrosgographiquesounon)
etunetlphoniedetypecentrexSIP(viaADSLaveccommunicationillimiteverslesfixesFranceet
plusde40paysetuneheureversmobilesFrance).

MmeoffrequeSolutionStandardistemaisavec2modulesdextensionde128touches.

ENI Editions - All rigths reserved - educ hafa

Ilexistegalementdautresoffressansforfaitmobilelercurrentestdelordrede0,99euroHT/mois:
UntlphoneCISCOWIP310+ligneSIP+appelsfixeFranceillimits,engagement1mois,fraisdemiseenservice
de 9,99 euros HT, dpt de garantie de 190 euros, appels intra OVH illimits, facturation la seconde pour les
mobilesetlinternational.
Enfin,uneoffrePasserelleSIP/E159,99eurosHT/moispermetdedisposerde30canaux.Cetteoffrencessite
dedisposerduneligneSDSLde2Mb/sminimum.Attention,ledptdegarantieestde2300euros,restitusenfin
decontrat.CetteoffreestbasesurlapasserelleEpuygyQuadroE1/T1(unportLAN,unportWAN,unportE1/T1,
unporttlphoniquepouruntlphoneanalogiqueouunfax).
Ilsemblevidentquelesregistrars,bienconnusdugrandpublic,sontlesmieuxplacspourproposerdesoffresde
typeCentrexbascotsettoucherunecibleimportante.Cesoffressontlabasedunbouleversementdumarch
etannoncentladisparitiondesacteurshistoriquesdelatlphoniebascotssurInternet.
Pourlemoment,Gandi,1&1,Nordnetnontpasdoffresdetlphonie.
Dansunmondeotoutvavite,otoutdoitallervite,lesoutilsdecommunicationsdoiventtresimples,fiableset
bon march. A ce jour, il nexiste pas doutils fdrateurs pour la tlphonie, la vido, la webformation, la
webconfrence, la messagerie, la GED, le partage de documents mais le besoin de convergence est bel et bien
prsent. Les registrars ont une longueur davance puisquils ont linfrastructure et le cloud va permettre de rendre
disponiblelapplicationdeconvergencedonttoutlemonderve.Lesoprateurstlcomontgalementdelavance
puisquilsontlestuyaux.

ENI Editions - All rigths reserved - educ hafa

- 9-

Lescartesdecommunications
Digium,lasocitquisponsoriseleprojetAsterisk,commercialiseunemultitudedecartesdecommunicationetilexiste
principalementdeuxtypesdecartes:lescartesanalogiquesetlescartesnumriques.
Sourcehttp://www.digium.com(prsencedunconfigurateur)

1.Cartesanalogiques
CescartespermettentdesconnexionsaurseauRTCetcorrespondentdespetitssitesolebesoinennombrede
canauxsimultansestrduit.
Ilexistedeuxtypesdeport:lesportsFXS(ForeigneXchangeStation)etlesportsFXO(ForeigneXchangeOffice):

Les ports FXS permettent de connecter des tlphones analogiques qui vont se connecter sur le serveur
Asterisk.
LesportsFXOpermettentdeconnecterleserveurAsteriskaurseaucommut.

a.TDM410

PCI2.2busPCI3.3Vou5V

ModuleFXS

ModuleFXO
Cestlacartedebasechezdigiumquicomprend4portssurlesquelsvontsenficherdesmodules,desS110MFXS
pourbrancherdestlphonesetdesX100MFXOpourconnecterdeslignesanalogiques(desPOTS).
La terminologie TDM400P signifie la carte gnrique mais en ralit, chaque combinaison de modules FXS/FXO
permetdobtenirunenomenclaturedemodle.
Exempledecombinaisonpossible:
ModulesFXO

ModulesFXS

TDM410P

TDM401EF

TDM402EF

TDM403EF

TDM404EF

TDM410EF

TDM411EF

TDM412EF

TDM413EF

TDM420EF

TDM421EF

TDM422EF

ENI Editions - All rigths reserved - educ hafa

- 1-

TDM430EF

TDM440EF

TDM431EF

LacarteTDM412EFsignifiequilsagitdunecarteTDM410PquipedunmoduleFXSetdedeuxmodules
FXO.Autrementdit,leserveurAsteriskdisposeradunecarteavec3lignesRTCetuntlphoneanalogique.

b.TDM800P
Cettecarte,similairelaTDM400P,permetdeconnecter8modulesFXS/FXO,laidedemodulesS110M,X100Mou
S400M(modulesde4FXS),X400M(modulesde4POTS).
noter que cette carte dispose de la technologie HPEC (High Performance Echo Canceller) afin damliorer les
problmesdcho.

c.TDM2400P
Cettecartepermetdeconnecterjusqu6modulesavecunecombinaisonde4FXS(S400P)et4FXO(X400M).
LacarteTDM2406Ecorrespond6modulesquadFXO+anticho,soitlquivalentde24canauxversleRTC.

d.LesmodlesAEX
LesmodlesenversionPCIXsontdclinsautraversdescartessuivantes:

AEX2400:24portsFXO/FXSmaximum

AEX800:8portsFXO/FXSmaximum

AEX410:4portsFXO/FXSmaximum.

2.Lescartesnumriques
a.B410P
CartePCIfonctionnanten3.3Vet5Vavecanticho,exclusivementpour4interfacesBRI(T0).Ellefonctionneen
modeNT(NetworkTermination)ouTE(TerminalEquipment)grceunjumper.

b.TE122P/TE122BEC

CestunecartePCIquifonctionneen3.3Vou5V.EllefournituneinterfaceT1/J1ouE1.Cestunjumperquipermet
deswitcherentrelemodeT1ouJ1(24canaux)etE1(32canaux).LemodleTE122Bdisposedunmoduledanti
chohardware(chocancellation).

LescartesenversionPCIExpress(PCIX)sontlesmodlesTE121P/TE121B.

c.TE205/TE207EC
CettecartefournitdeuxinterfacesT1/J1(48canaux)ouE1(64canaux).UniquementsurslotsPCI5V.LaTE207EC
disposedunmoduleantichohardware.

- 2-

ENI Editions - All rigths reserved - educ hafa

d.TE210/TE212EC
Cette carte fournit deux interfaces T1/J1 (48 canaux) ou E1 (64 canaux), ainsi quun module antichohardware.
EllenefonctionnequesurdesslotsPCI3,3V.LaversionPCIXestprsentevialesmodlesTE220/TE220BEC.

e.TE410/TE412EC
Ilsagitdecartesquadspan(4interfacesdecommunication)enversionPCI3,3V.

f.TE405/TE407EC
IlsagitdecartesquadspanenversionPCI5V.
Les slots PCI 5V ont tendance disparatre chez les grands constructeurs dordinateurs et de serveurs.
Cescartestantfragilesetcoteuses,ilestrecommanddelesmanipuleravecprcautionenutilisantdes
gantsadapts.Dautrepart,lescartesPCIXonttendancesedvelopperfortementenraisondelaprsence
deplusenplusrpanduedesslotsPCIExpressdanslesserveurs.
Dautres constructeurs de cartes analogiques et numriques sont prsents sur le march et ont des cartes
compatiblesaveclesystmeAsterisk:

Sangoma(http://www.sangoma.com)

Junghanns(http://www.junghanns.net)

DivaServer(http://www.eicon.com)

Rappel:
Afindebienvaluersonbesoinencartesdecommunication,ilfautprendreencompte:

lematriel(nousavonsvuquecertainescartesnefonctionnentquesurdesslotsPCI3.3VouPCI5Vou
PCIExpress)

lenombredecommunicationssimultanes(lenombredecanaux)

lejumperdelacarteDigiumpourswitcherenconfigurationE1prsenteenFrance

le cot dune solution analogique par rapport une solution numrique : achat carte + modules +
abonnement.

titredinformation,unabonnementT230canauxchezFranceTelecomcote504eurosHT/mois,unabonnement
duneligneanalogiquecote12,54eurosHT/mois.
Conseil : dans le cadre dune entreprise, il est plus ais de maintenir une seule ligne T2 que 30 lignes
analogiques.

ENI Editions - All rigths reserved - educ hafa

- 3-

LesrouteursVoIP
1.Cisco
LaplateformederouteursCiscoIntegratedservices(Cisco2801,2811,2821,2851,3825,3845),sontdesrouteurs
VoIPsilssontcorrectementadaptsdefaonmatrielle.
Parexemple,lerouteur2801peutremplacerlescartesDigiumetsepositionnerlafrontireentrelemondeinterne
delentrepriseetlesliensT2.
PrincipalescaractristiquesduCisco2800:

mmoire:256Mo(debase),384Momaximum

mmoireflash:128Mo(debase),128Momaximum

protocolerseaux:Ethernet,FastEthernet,IPSec,SNMP3,firewall,MPLS,VLAN,800tunnelsVPN

extensions:2slotsHWIC(HighPerformanceWIC),1WIC(WanInterfaceCard),1VIC(VoiceInterfaceCard),2
PVDM(DSP)surcartemre
deuxinterfacesrseauxEthernet10BaseT/100BaseTXRJ45.

Afin de grer correctement les problmatiques de transcodage entre diffrents codecs, les PVDMs (Packet Voice DSP
Module) sont indispensables ces modules permettent de fournir des fonctionnalits de transcodage, dapplications
RTSP,deconfrences,devoixanalogiquesetnumriques.IlexistedesPVDMde8canaux(pardfaut)64canaux
(faxetvoix).
Cerouteurvatreinstallsurunsitedagenceparexemple,saconnectiqueT2permetdesortirversleRTClocal.On
peutimaginerquelestlphonesSIPlocauxdialoguentavecunSIPRegisterprimaireviauneligneSDSLeteffectuent
des appels entrants/sortants vers une passerelle centralise au sige. En cas de coupure de la ligne SDSL, le
tlphoneSIPdialogueavecunpetitserveurSIPregisterinstallenlocaletquivarouterlesappelssortantsversle
routeurCISCO2801.

LechapitrePrparationdurseauprsenteuneconfigurationdtailledunrouteur2801.
Source:http://www.cisco.com

2.Bewan
Bewan est un constructeur de modem, modemrouteur ADSL, de routeurs VPN et de routeurs hautedisponibilit. Il
fournitdespasserellesrsidentielles(iBOXA5200,A5100)quidisposentdescaractristiquessuivantes:

accsenREADSL,ADSLouADSL2+
4portsEthernet,1borneWIFI802.11b/g/m,1portUSB,firewallSPI(StatefulPacketInspection),VPN,NAT,2
portsFXSpourconnectiontlphonesanalogiquesouDECT,1portmixteDSL/FXO(ligneADSL+RTC).

LescodecssupportssontG.729ab,G.711u,G.711aetleprotocoleVoIPestSIP.
ExempledetlphonieVoIPavecuneiBOXA5100:

ENI Editions - All rigths reserved - educ hafa

- 1-


LeportFXOpermetdedborderencasdebackupsuruneligneanalogiqueetsavreutilepourlesappelsversles
numrosdurgencesouventnonaccessiblesviaInternet.
Source:http://www.bewan.fr

- 2-

ENI Editions - All rigths reserved - educ hafa

LespasserellesVoIP
1.Patton
Nouslavonsvudanslesparagraphesprcdents,ilyplusieursmoyensdinterconnecterunautocomaveclerseau
commut : cartes internes lautocom, gateway Cisco pour les grosses configurations en raison du prix, modem
routeursbasdegammeavecportFXS.IlexisteunedernirepisteintressanteaveclespasserellesVoIP.
LesbotiersPattonsontlesplusrpandusmaislesprixsontdissuasifsdslorsquilsagitdelienT2aussi,ilssont
intressantspourdepetitesconfigurationsjusqu2T0.
Letableaucidessousprsentelesdiffrentsmodles:
PasserellesVoIPanalogiques
SmartLinkMATA

AdaptateurATA(RJ45/FXXRJ11).

SmartNode4110Series

BotiersIPavec8portsFXS/FXO.

RouteursVoIPanalogiques
SmartLink4020Series

RouteurSOHOavec2RJ45/1FXSou2RJ452FXS,
firewall,NAT,DHCP,PPPoE.

SmartNode2290Series

PermetlextensiondelignesspcialisessurInternet
via2botiers.Jusqu4lignespeuventainsitre
dportes.

SmartNode4400Series

IPChannelBankpermettantdedisposerde1232
portsFXS.

SmartNode4520Series

Routeuravec2,4,6ou8portsFXSet2ou4FXO.

SmartNode4830DSLSeries

ModemrouteurDSL+2,4,6ou8portsFXSet2ou4
FXO.

SmartNode4830Series

Routeuravec2,4,6ou8portsFXSet2ou4FXO+2
RJ45+interfaceV35ouX21.

SmartNode4900Series

IPChannelBanckpermettantdedisposerde12,16,
24ou32portsFXSouFXS.

PasserellesVoIPnumriques
SmartNode4554

2portsBRI(2T0)/RJ45.

SmartNodeSDTA

PermetdinterconnecterunrseauBri(desterminaux
numriquesISDN)surunrseauIP.

RouteursVoIPnumriques
SmartNode4552

RouteurSohoISDNVoIPIADavec2portsBRI.

SmartNode4562

1portNT,1portBRISo,12connexionsVPNIPsecs
(VoiceOverVPN),routeurIP.

SmartNode4630Series

MultiportsISDNVOIPIAD,de35portsISDN.

SmartNode4650ADSL

MultiportsISDNVOIPIADavecinterfaceADSL2+,3
5portsISDN.

ENI Editions - All rigths reserved - educ hafa

- 1-

SmartNode4650G.SHDSL

MultiportsISDNVOIPIADavecinterfaceG.SHDSL.bis,
35portsISDN.

SmartNode4960

MultiportsT1/E1(PRI)VoIPIAD.

SmartNode4660G.SHDSL

MultiportsPRIVOIPIADavecinterfaceG.SHDSL.bis.

SmartNode4961

MultiportsT1/E1VoIPIAD:4portsPRI.

Les modles qui sont intressants, dans le contexte de ce livre, sont le SmartNode 4554 et le SmartNode
4960.Ilfautbienrflchirlanotiondetoutmettredanslebotier,cestdirelesfonctionsdevoixetde
routeurdatacarencasdecrash,celapeutvitedevenirdlicatdpanner.
Une description de linterface de management dun botier Patton4554 est prsente au chapitre Prparation du
rseau.

2.Lesautresconstructeurs
Nous ne pouvons pas prsenter ici tous les matriels permettant de faire de la VoIP, mais nous pouvons citer
quelquesconstructeursintressants:

- 2-

ZYXEL(http://www.zyxel.fr)

BILLION(http://www.billion.com/product/voip.html)

HUAWEI(http://www.huawei.com/fr/)

QUICKEAGLE(http://www.dataconnect.com/Quick_Eagle_Products.htm)

LINKSYS(www.linksys.fr)

Mediatrix(www.media5corp.com)

Draytec(www.draytec.com).

ENI Editions - All rigths reserved - educ hafa

Introduction
Cechapitreprsentelesfondamentaux"rseaux"indispensablespourconstruireunrseaucapabledesupporterune
implmentationcompltedeVoIPbasedeserveurAsterisk,detlphonesSIPetdesoftphonesXLite.

ENI Editions - All rigths reserved - educ hafa

- 1-

tatdeslieux
Considrons,parexemple,lasocitEvolutionSAdontlarchitectureavantinstallationdelaVoIPestlasuivante:

unLANadressen192.168.1.0/24

100PC,10serveurs

unetlphonietotalementindpendantedurseauinformatique,unesortieT2,unautocomlocal(nonIP)

une liaison SDSL 1 Mb/s vers un oprateur permettant lvasion Internet, la messagerie et linterconnexion
aveclesagences
unensemblehtrognedehubsetdeswitchspermettantlinterconnexiondurseau.

Cettesocitdisposedeseptagencesayantchacuneunearchitecturepluslgre:

unLANde20postesen192.168.Y.0/24oYestunchiffrediffrentparagence(Yestcomprisentre2et8)

desPC,pasdeserveurs

tlphonieindpendante,unesortieT2ouplusieursT0,autocomlocalnonIP

uneliaisondetypeSDSL512Kb/savecGTRverslerseauoprateur

quelqueshubsetswitchshtrognespourlinterconnexion.

tant donn quil ny a pas dautres accs Internet que laccs centralis fourni par loprateur, aucun
quipement de type firewall nest donc ncessaire. Nous pouvons penser, a priori, que cestloprateur lui
mmequigrecetypedeproblmatique.

ENI Editions - All rigths reserved - educ hafa

- 1-

Premierconstat,premiresmodifications
Il est possible de mettre en place une architecture VoIP au sein de cette socit sans remettre en cause lexistant,
maisdesproblmesdequalitvontrapidementapparatreauniveaudelavoix.
Unemodificationprofondedelarchitecturerseausimposeetvapasserparleschangementssuivants:

achatdeswitchsmanageablespourlesige,dontunswitchserviradesservirlesautres(rseauentoile)

achatdeswitchsmanageablespourlesagences
migrationdeslignesSDSL1Mb/sen2Mb/spourlesigeetdeslignesagencesenSDSL1Mb/s,miseenplace
avecloprateurdemcanismedeQoS(rservationdebandepassantepourlavoix)

segmentationdechaquerseauenVLAN,achatdunrouteurparagence.

1.NotiondeVLAN
Les VLANs (LAN virtuel) permettent disoler les sousrseaux au sein dune architecture et sont tout naturellement
utilisslorsdunecohabitationentreunrseaudedonnesetunrseauvoixeneffet,les"parasitages"prsents
dansunVLANnesepropagerontpasdansunautre,donc,priori,ungrostlchargementaurauneincidencesurle
rseaudedonnesmaispassurlerseauvoix.
Touteslestramesdeniveau2sortirontduswitchentanttagguesaveclidentifiant(ID)duvlanassoci.LesVlans
sontgrsauniveaudesswitchsL2(Level2pourniveau2)maisilestncessairededisposerdunrouteur(niveau
3)permettantderouterlespaquetsauseindesdiffrentsVlans.
Afin dtre homogne pour une meilleure comprhension et exploitation ultrieure, il est fondamental davoir une
visioncohrente,toutentantvolutive,pourlensembledelasocit.AusensVlans,chaquesiteseradonctrait
delammefaon.
Exemple:TableaudesVlansdelanouvellearchitecture
Site

IDVlan

Nomvlan

SubnetIP

Masque

Sige

LANDATA

192.168.1.0

255.255.255.0

Sige

LANVOIXIP

192.168.2.0

255.255.255.0

Sige

LANVOIXIP
Softphone

192.168.3.0

255.255.255.0

Sige

WANoprateur

192.168.4.0

Masqueoprateur

CesquatreVlansdoiventtrecrssurchaqueswitchmaiscertainsconstructeurs(Ciscoparexemple)fournissent
unpuissantmcanismeappelVTP(VlanTrunkProtocol)simplifiantcetypedeparamtrage.
LeprincipeestdedfinirunVTPdomainsurunswitchdetteetdesaisirtouslesvlanssurceswitch.Ensuite,tous
lesautreslmentsserontdfiniscommeVTPclientet,ainsi,touslesVlansserontalorspropagsautomatiquement
entempsrel.

2.Configurationdesswitchs
Danslagence,leswitchprincipal(24ports10/100/1000)seraconfigurdelafaonsuivante:

port112:interconnexionaveclesautresswitchs.

port13:routeurinterne,interfaceFe0/0envlan1+2+3,interfaceFE0/1envlan4.

port14:routeuroprateurWAN(192.168.4.1),vlan4.

ENI Editions - All rigths reserved - educ hafa

- 1-

Ensuite,ilyaplusieurscasdefigures:

Casn1:lestlphonesIPsontisolsetbranchsendirectsurunepriseduLAN.

Ilsagit du cas le plus simple encore fautil disposer de suffisamment de prises RJ45 dans les bureaux mais cest
rarementlecas.IlsuffitalorsdebrancherletlphoneIPsurunportconfigurenvlan2.

Casn2:lestlphonesIPetlesPCsontdpendants.

LePCestbranchsurleswitchintgrdutlphoneIPleportcorrespondantdoittreenvlan1+2.Danslecasdu
softphone,ildoittreenvlan1+3.
Ilestintressantdetaggerlessoftphonesdansunvlanpartcarsouvent,ceslogicielssontemployspar
deshotlinersquiontdesclientspresquetoutelajourne.Laqualitdelavoixestdoncprimordialecarelle
reprsenteunepartiedelimagedelasocit.
Schmadesportsduswitchdette
1 2 3 4 5 6 7 8 9 10 11 12 13

14

Verslesautresswitchsdurseau

VerslerouteuroprateurVlan4

VerslerouteurinterneVlan1+2+3

3.Configurationdurouteur
Un routeur vient souvent en complment des switchs. Il assure le routage des diffrents sousrseaux de
larchitecture.Dansnotrecas,unCisco1841serautilis.
Le1841disposededeuxinterfacesphysiques10/100Mb/s:

FE0/0:nousallonslutiliserpourlagestionduLAN:data,voixtlphonesIP,voixsoftphones,encrantdes
interfaceslogiques(sousinterfaces):

FE0/0.1:sousrseaudataen192.168.1.0

FE0/0/2:sousrseauvoixtlphonesen192.168.2.0

FE0/0.3:sousrseauvoixsoftphonesen192.168.3.0
LaFE0/0.1serabranchesurleport13duswitchdette,enmodetrunkvlan1+2+3.

FE0/1:nousallonsutilisercetteinterfacepourlagestiondurouteurWAN,encrantuneinterfacelogique:
FE0/1.4.

FE0/1.4ferarfrenceausousrseau"routeurWAN"en192.168.4.0,avecuneadressedurouteuren192.168.4.2
par exemple (sousentendu que le routeur WAN est en 192.168.4.1). La FE0/1.4 sera branche sur le port 14 du
switchdette,enmodetrunkvlan4.
LerouteurWANnestplusphysiquementbranchsurleLAN.Ilfautdoncdemanderloprateurderajouter
trois routes statiques : 192.168.1.0/24 via 192.168.4.2, 192.168.2.0/24 via 192.168.4.2 et 192.168.3.0/24
via192.168.4.2
Ladresse LAN du routeur interne devient ainsi la passerelle TCP/IP de tous les lments du LAN du sige
(tlphones,PC,serveurs,imprimantes).
Lesinterfacesdurouteurinterne
InterfaceFE0/0
SousinterfaceFE0/0.1

- 2-

SousinterfaceFE0/0.2

InterfaceFE0/1
SousinterfaceFE0/0.3

ENI Editions - All rigths reserved - educ hafa

SousinterfaceFE0/1.4

VLAN1

VLAN2

VLAN3

VLAN4

Data

Voixtlphones

Voixsoftphones

WANoprateur

192.168.1.1

192.168.2.1

192.168.3.1

192.168.4.2

Port13suswitch

Port14duswitch

LenumrodeVLANchoisidoitcorrespondreauderniernumrodelinterfacelogiquedurouteur:FE0/0.50
ferarfrenceauVlan50(nonutilisdansnotreexemple).

4.AdressagedestlphonesIP
Le mode DHCP permet un dploiement plus rapide mais il est difficile dadministrerdirectementletlphoneviaun
navigateur,danslamesureoladresseIPestdynamique.Lemodedadressagestatiqueprsentelesavantageset
inconvnientsdelautre.
Dansnotrecas,lestlphonesaurontuneadresseIPfixedanslesousrseau192.168.2.0/24.

Silestlphonessontnombreux,ilserautiledutiliserunoutildeprovisioning.

5.Implmentationenagence
Puisquelessousrseaux192.168.2.0...onttutiliss,ilfautchangerleplandenumrotationenagence.
Agencen1
Site

IDVlan

Nomvlan

SubnetIP

Masque

Agence1

LANDATA

192.168.11.0

255.255.255.0

Agence1

LANVOIXIP

192.168.21.0

255.255.255.0

Agence1

LANVOIXIP
Softphone

192.168.31.0

255.255.255.0

Agence1

WANoprateur

192.168.41.0

Masqueoprateur

Agencen2
Site

IDVlan

Nomvlan

SubnetIP

Masque

Agence2

LANDATA

192.168.12.0

255.255.255.0

Agence2

LANVOIXIP

192.168.22.0

255.255.255.0

Agence2

LANVOIXIP
Softphone

192.168.32.0

255.255.255.0

Agence2

WANoprateur

192.168.42.0

Masqueoprateur

Chaqueagencedevradisposerdeswitchspermettantdefairedesvlans.
Le choix du routeur en agence peut tre le mme que pour le sige mais il est intressant, en plus de la
fonctionnalitderoutagedesfluxintervlans,delecoupleravecunefonctionnalitdepasserelleversleRTC(voirle
chapitreLespasserellesoprateurs).
Schmalogiqueglobaldurseau
ENI Editions - All rigths reserved - educ hafa

- 3-

6.ConfigurationdunswitchCISCO2960G
C2960G#sh run
Building configuration...
Current configuration : 3099 bytes
version 12.2
no service pad
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname C2960G
!
logging buffered 8192 debugging
enable secret 5 $1$Sn9M$6PkEbA3r75VffiFK5Y30T6
!
no aaa new-model
clock summer-time UTC recurring last Sun Mar 1:00
last Sun Oct 2:00
ip subnet-zero
!
!
!
no file verify auto
spanning-tree mode pvst
spanning-tree extend system-id
!
vlan internal allocation policy ascending
!
interface GigabitEthernet0/1
switchport trunk native vlan 1
switchport trunk allowed vlan 2,3
switchport mode trunk
!

- 4-

ENI Editions - All rigths reserved - educ hafa

interface GigabitEthernet0/2
switchport trunk native vlan 1
switchport trunk allowed vlan 2,3
switchport mode trunk
!
interface GigabitEthernet0/3
switchport trunk native vlan 1
switchport trunk allowed vlan 2,3
switchport mode trunk
!
interface GigabitEthernet0/4
switchport trunk native vlan 1
switchport trunk allowed vlan 2,3
switchport mode trunk
!
interface GigabitEthernet0/5
switchport trunk native vlan 1
switchport trunk allowed vlan 2,3
switchport mode trunk
!
interface GigabitEthernet0/6
switchport access vlan 1
switchport mode access
!
interface GigabitEthernet0/7
switchport access vlan 1
switchport mode access
!
interface GigabitEthernet0/8
switchport access vlan 1
switchport mode access
!
interface GigabitEthernet0/9
switchport access vlan 1
switchport mode access
!
interface GigabitEthernet0/10
switchport access vlan 1
switchport mode access
!
interface GigabitEthernet0/11
switchport access vlan 1
switchport mode access
!
interface GigabitEthernet0/12
switchport access vlan 1
switchport mode access
!
interface GigabitEthernet0/13
switchport trunk native vlan 1
switchport trunk allowed 2,3
switchport mode trunk
!
interface GigabitEthernet0/14
switchport access vlan 4
switchport mode access
speed 100
duplex full
!
interface GigabitEthernet0/15
switchport access vlan 1
switchport mode access
!
interface GigabitEthernet0/16
switchport access vlan 1
switchport mode access
!
interface GigabitEthernet0/17

ENI Editions - All rigths reserved - educ hafa

- 5-

switchport access vlan 1


switchport mode access
!
interface GigabitEthernet0/18
switchport access vlan 1
switchport mode access
!
interface GigabitEthernet0/19
switchport access vlan 1
switchport mode access
!
interface GigabitEthernet0/20
switchport access vlan 1
switchport mode access
!
interface GigabitEthernet0/21
switchport access vlan 1
switchport mode access
!
interface GigabitEthernet0/22
switchport access vlan 1
switchport mode access
!
interface GigabitEthernet0/23
switchport access vlan 1
switchport mode access
!
interface GigabitEthernet0/24
switchport access vlan 1
switchport mode access
!
interface Vlan1
ip address 192.168.1.1 255.255.255.0
no ip route-cache
!
ip default-gateway 192.168.1.1
ip http server
snmp-server community EVOLUTIONSA RO
!
control-plane
!
!
line con 0
line vty 0 4
password mypassword
no login
line vty 5 15
password mypassword
no login
!
!
monitor session 1 source interface Gi0/13
monitor session 2 destination interface Gi0/14
ntp clock-period 36028937
ntp server 192.168.1.99
end
IlfautgalementpenserparamtrerunportduswitchenVLAN2surlequelestbranchlerouteurVoIP
Cisco1841.

7.ConfigurationdunrouteurCISCO1841
C1841#sh run
Building configuration...

- 6-

ENI Editions - All rigths reserved - educ hafa

interface FastEthernet0/0
description LAN DATA et VOIX
no ip address
duplex auto
speed auto
no cdp enable
no mop enabled
!
interface FastEthernet0/0.1
description LAN DATA
encapsulation dot1Q 1 native
ip address 192.168.1.1 255.255.255.0
no snmp trap link-status
!
interface FastEthernet0/0.2
description LAN VOIX TELEPHONES
encapsulation dot1Q 2
ip address 192.168.2.1 255.255.255.0
no snmp trap link-status
!
interface FastEthernet0/0.3
description LAN VOIX SOFTPHONES
encapsulation dot1Q 3
ip address 192.168.3.1 255.255.255.0
no snmp trap link-status
!
interface FastEthernet0/1
no ip address
duplex auto
speed auto
no cdp enable
!
interface FastEthernet0/1.4
encapsulation dot1Q 4
ip address 192.168.4.2 255.255.255.0
no snmp trap link-status
!
ip classless
ip route 0.0.0.0 0.0.0.0 192.168.4.1
!
ip http server
!
snmp-server community EVOLUTIONSA RO
!
control-plane
!
!
line con 0
exec-timeout 0 0
line aux 0
line vty 0 4
password mypassword
login
!
no process cpu extended
no process cpu autoprofile hog
end

ENI Editions - All rigths reserved - educ hafa

- 7-

Scurisationdelarchitecture
Toutelinterconnexion de la socit est base sur un rseau oprateur avec des liens uniques sur chaque site. Ces
liens vont permettre, avec la VoIP, de communiquer en interne et donc de faire des conomies non ngligeables sil
existebeaucoupdappelsintrasites.
Cesliensserventaussivhiculerlesconnexionsdesagencesausige,pourlaccsauxapplicatifsmtiers,avecle
relaisdemails,lesurf...
Mais que se passetil si le lien tombe ? Lagence ou le sige (cas plus critique) sont coups ? La production sen
ressentavecventuellementuneperteschedechiffredaffaires.
LaGTRde4heuresnesuffitparfoispasetlesdlaisdertablissement,encasdeproblmestechniques,peuventtre
pluslongs.
La seule solution consiste doubler tous les liens mais en les prenant chez un oprateur diffrent. Dans ce cas, le
routeurinterneprendalorstoutsonsensmaisildevientinvitablementunSPOF(SinglePointOfFailure).Ilfaudradonc
ledoubleroualorsapprovisionnerunpetitrouteurLAN/LANquiserautilissaplace(attention,silerouteurnestpas
VoIP,lavoixintersitesneseraalorspluspossible)encasdedfaillance,enattendantlinterventionlieaucontratde
maintenancequilfautdanstouslescassouscrireenJ+1oumieuxenH+4.

1.IncidencesurlesVLANS
NousavonsunsecondlienWANoprateur,ilfautdoncdfinirunnouveauVLANparsite.
Site

IDVlan

Nomvlan

SubnetIP

Masque

Sige

LANDATA

192.168.1.0

255.255.255.0

Sige

LANVOIXIP

192.168.2.0

255.255.255.0

Sige

LANVOIXIP
Softphone

192.168.3.0

255.255.255.0

Sige

WANoprateur1

192.168.4.0

Masqueoprateur

Sige

WANoprateur2

192.168.5.0

Masqueoprateur

2.Incidencesurlerouteurinterne
Il faut crer une sousinterface FE0/1.5. Cette interface aura lIP 192.168.5.2 (sousentendu que le routeur WAN
oprateur2acommeadresseIP192.168.5.1).
TroisroutesstatiquessontimplmentersurlerouteurWANdeloprateur2:

192.168.1.0/24via192.168.5.2

192.168.2.0/24via192.168.5.2

192.168.3.0/24via192.168.5.2

LerouteurinternedisposedsormaisdedeuxconnexionsSDSLpossibles.Ilestalorspossibledefairedelaiguillage
deflux:parexemple,lesfluxmtierssurleliensWAN1,lesfluxVoIPsurlelienWAN2,lerestedesfluxsurlelien
WAN2.
Exemple:RoutageversdeuxagencessurdeuxliensWAN
Laroutepardfaut(vasionInternet)passeparlerouteur192.168.4.2.
Les flux destination du sousrseau de donnes de lagence 1 (192.168.11.0/24) passent par le routeur WAN 1
(192.168.4.2).
Les flux destination du sousrseau de donnes de lagence 2 (192.168.12.0/24) passent par le routeur WAN 2

ENI Editions - All rigths reserved - educ hafa

- 1-

(192.168.5.2).
ip route 0.0.0.0 0.0.0.0 192.168.4.2
ip route 192.168.11.0 255.255.255.0 192.168.4.2
ip route 192.168.12.0 255.255.255.255 192.168.5.2
Pourquecetteconfigurationsoitvalide,ilfautquelagence2disposedunsecondlienchezloprateurqui
fournitlelienWAN2dusige,sinonlesfluxnepourrontpastrerouts.
De cette faon, nous pouvons rpartir la charge sur les deux liens, en les utilisant en mme temps ensemble,
contrairement au mode actif/passif. noter que ce dernier mode est souvent mal peru des Directions Gnrales
puisquunseullienestutilisalorsquelesdeuxsontfactursparlesoprateurs.

3.ConfigurationdunrouteurCISCO2801avec2cartesT0
Seuleslescommandesimportantessontprsentes:
network-clock-participate wic 0
network clock-participate wic 1
voice translation-rule 1
rule 1
rule 2
rule 3
voice translation-rule 11
rule 1
rule 2
voice translation-profile Prefix
translate calling 1
voice translation-profile appels_sortants
translate calling 11
interface FastEthernet0/0.1
description lien LAN data
encapsulation dot1Q 1 native
ip address 192.168.1.1 255.255.255.0
interface FastEthernet0/0.2
description lien LAN voix telephones
encapsulation dot1Q 2
ip address 192.168.2.1 255.255.255.0
interface FastEthernet0/0.3
description lien LAN voix softphones
encapsulation dot1Q 3
ip address 192.168.3.1 255.255.255.0
interface FastEthernet0/1.4
description lien WAN operateur 1
encapsulation dot1Q 4
ip address 192.168.4.2 255.255.255.0
interface FastEthernet0/1.5
description lien WAN operateur 2
encapsulation dot1Q 5
ip address 192.168.5.2 255.255.255.0
interface BRI0/0/1
no ip address
isdn switch-type basic-net3
isdn point-to-point-setup
isdn incoming-voice voice

- 2-

ENI Editions - All rigths reserved - educ hafa

interface BRI0/0/1
no ip address
isdn switch-type basic-net3
isdn point-to-point-setup
isdn incoming-voice voice
voice-port 0/1/0
translation-profile incoming Prefix
translation-profile outgoing appels_sortants
echo-cancel coverage 24
compand-type a-law
cptone FR
voice-port 0/1/1
translation-profile incoming Prefix
translation-profile outgoing appels_sortants
echo-cancel coverage 24
compand-type a-law
cptone FR
dial-peer voice 10 voip
destination-pattern ....
progress_ind setup 3
modem passthrough nse codec g711ulaw
voice-class codec 1
session protocol sipv2
session target ipv4:192.168.2.100
incoming called-number T
dtmf-relay h245-alphanumeric
fac rate disable
no vad
LoprateurprsenteaurouteurlesSDAsuniquementsurlesquatredernierschiffres.Ensuite,lerouteurenvoieles
appelsauserveurSIP(ici,ladresseIPduserveurSIPest192.168.2.100).
Silesappelsnaboutissentpas,ilfautavanttoutessayerdedfinirosesitueleproblme:

Estcequelalignedeloprateurfonctionne?

Estcequelecblereliantlaccsoprateuraurouteurestentat?

Estcequeleleddelacartedurouteurestconformeuntatnormal?

Estcequelesappelsentrantsarriventbiensurlerouteur?

Estcequelesappelssortantspartentbiendurouteur?

EstcequelesappelsentrantsarriventbiensurleserveurAsterisk?

AfindedebuggerlesappelssurlerouteurCisco,ilconvientdelancerlescommandessuivantes:
# term monitor
# debug isdn q931

4.ConfigurationdunrouteurCISCO2801avecunecartecomprenantdeuxT2
C2801-T2#sh run
Building configuration...
Current configuration : 6172 bytes
!
## VERSION DE LIOS

ENI Editions - All rigths reserved - educ hafa

- 3-

version 12.4
## AFFICHAGE DE LHEURE ET DE LA DATE POUR LE DEBUG ET LES LOGS
service timestamps debug datetime msec
service timestamps log datetime msec
## PAS DENCRYPTION DES PASSWORDS SYSTEMS
no service password-encryption
!
##NOM DU ROUTEUR
hostname C2801-T2
!
boot-start-marker
boot-end-marker
!
## PAS DAUTHENTIFICATION (TACACS+ ou LOCAL)
no aaa new-model
!
network-clock-participate wic 2
mmi polling-interval 60
no mmi auto-configure
no mmi pvc
mmi snmp-timeout 180
##
ip
ip
!
##
ip

AUTORISATION DES RESEAUX TOUT A ZERO


subnet-zero
cef
CONFIGURATION DU DNS
domain name yourdomain.com

## DEFINITION DU PROTOCOLE ISDN UTILISE (Europe)


isdn switch-type primary-net5
!
voice-card 0
dsp services dspfarm
!
!
## ACTIVATION DES FLUX VOIX RTP, DANS LES 2 SENS
voice rtp send-recv
!
!
voice class codec 1
codec preference 1 g711ulaw
codec preference 2 g711alaw
codec preference 3 g729r8
!
## CREATION DE REGLES DE TRANSLATION
voice translation-rule 1
rule 1 /\(^........$\)/ /00\1/
rule 2 /\(^.........$\)/ /00\1/
rule 3 /\(^..........$\)/ /000\1/
rule 4 /\(^...........$\)/ /000\1/
rule 5 /\(^............$\)/ /000\1/
rule 6 /\(^.............$\)/ /000\1/
rule 7 /\(^..............$\)/ /000\1/
rule 8 /\(^...............$\)/ /000\1/
!
translation-rule 5
Rule 1 ^00 0
Rule 2 ^01 1
!
voice translation-rule 11
rule 1 /^21..$/ /0820909090/
!
!
voice translation-profile Prefix
translate calling 1
!
voice translation-profile appels_sortants

- 4-

ENI Editions - All rigths reserved - educ hafa

translate calling 11
!
## CONFIGURATION DES CONTROLEURS E1, SUPPRESSION DU CRC4
controller E1 0/2/0
framing NO-CRC4
pri-group timeslots 1-16
!
controller E1 0/2/1
framing NO-CRC4
pri-group timeslots 1-16
!
track 1 rtr 1 reachability
!
## CONFIGURATION DES INTERFACES ETHERNET
interface FastEthernet0/0
description IP Ethernet en VLAN 2 (VoIP)
ip address 192.168.2.99 255.255.0.0
duplex auto
speed auto
!
interface FastEthernet0/0.1
!
interface FastEthernet0/1
no ip address
shutdown
duplex auto
speed auto
!
## CONFIGURATION DES INTERFACES SERIES DES CONTROLEURS E1
interface Serial0/2/0:15
no ip address
isdn switch-type primary-net5
isdn incoming-voice voice
no cdp enable
!
interface Serial0/2/1:15
no ip address
isdn switch-type primary-net5
isdn incoming-voice voice
no cdp enable
!
## ON SUIT LES RECOMMENDATIONS SUR LES CLASSES IP
ip classless
!
!
## ACTIVATION DU SEVEUR http
ip http server
ip http access-class 23
ip http authentication local
ip http secure-server
ip http timeout-policy idle 60 life 86400 requests 10000
!
disable-eadi
!
!
!
control-plane
!
!
!
## CONFIGURATION DES PORTS VOIX EN MODE FR
voice-port 0/2/0:15
translation-profile incoming Prefix
translation-profile outgoing appels_sortants
echo-cancel coverage 24
cptone FR
!
voice-port 0/2/1:15
translation-profile incoming Prefix

ENI Editions - All rigths reserved - educ hafa

- 5-

translation-profile outgoing appels_sortants


echo-cancel coverage 24
cptone FR
!
!
!
!
dspfarm profile 6 transcode
codec g711ulaw
codec g711alaw
codec g729ar8
codec g729abr8
codec gsmfr
codec g729br8
codec g729r8
maximum sessions 6
!
!
## CONFIGURATION DUN DIALPEER (numero)
dial-peer voice 10 voip
## ON FAIT CORRESPONDRE LE NUMERO APPELANT AVEC CELUI-CI POUR
EFFECTUER LAPPEL (4 DERNIERS CHIFFRES DE LA SDA)
destination-pattern ....
progress_ind setup enable 3
modem passthrough nse codec g711ulaw
voice-class codec 1
## DEFINITION DU PROTOCOLE SIP UTILISE
session protocol sipv2
## DEFINITION DU SERVEUR SIP POUR LES APPELS ENTRANTS
session target ipv4:192.168.2.100
incoming called-number T
## CHOIX DU MODE DTMF
dtmf-relay h245-alphanumeric
fax rate disable
no vad
!
## CREATION DU DIALPEER POTS
dial-peer voice 1 pots
## LORS DUN APPEL SORTANT, CORRESPONDANCE AVEC NIMPORTE QUEL
NUMERO
destination-pattern T
progress_ind alert enable 8
progress_ind progress enable 8
progress_ind connect enable 8
## PAS DE MODIFICATION DE NUMERO
no digit-strip
direct-inward-dial
port 0/2/0:15
!
dial-peer voice 2 pots
destination-pattern T
progress_ind alert enable 8
progress_ind progress enable 8
progress_ind connect enable 8
no digit-strip
direct-inward-dial
port 0/2/1:15
!
dial-peer hunt 1
!
## DEFINTION DES PARAMETRES DE CONNEXION A DISTANCE
line con 0
login local
line aux 0
line vty 0 4
password mypassword
login local
transport input telnet ssh
line vty 5 15

- 6-

ENI Editions - All rigths reserved - educ hafa

access-class 23 in
privilege level 15
password mypassword
login
transport input telnet ssh
!
Lerouteur2801disposede4slots(slot3slot2slot1slot0)pourinstallerdescartesadditionnellesVoIP.

Dansnotreexemple,unecarte2T2atinstalledansleslotnumro2.

5.ConfigurationdunepasserellePattonsmartnode4552,2portsNumris
Lebotierestdunepetitetailleetseprsentedelafaonsuivante:

Faadeavant

Faadearrire
LapartieBRIestassurevia2ports:

LineBRI0/0:connexionaurseauISDN.
Phone BRI 0/1 : connexion au rseau ISDN ou alors un IPBX Numris o sont raccords des postes
tlphoniquesnumriques.

SchmadinterconnexionavecunbotierPatton2T0:

ENI Editions - All rigths reserved - educ hafa

- 7-


LePatton4552peutaismenttreutilispouracheminerlescommunicationstlphoniquesvialeportWAN,
doncenIP,grcenotammentunefonctiondecryptageetdacclrationmatrielle.Encasdedfaillance
dulienWan,lePattonbasculeautomatiquementlescommunicationssortantesverslesliensNumris,grcela
fonction ClearConnect de surveillance du rseau. Sur les rseaux IP o la qualit de la VoIP nest pas garantie
(Internet par exemple), la fonction DownStream QoS, en cours de brevet, permet dassurer la gestion et la
continuitdescommunicationsvoix.
Paramtragedelapasserelle
LebotierestlafoisunrouteurWanetunepasserelleVoIP.Ildisposedoncdefonctionsclassiquesentantque
routeur:

Wan:PPPoE,DHCP,defaultgateway

Firewall/ACL

Nat(NetworkAdressTranslation)

QoS

LAN/DHCP

DNS/DynDNS

Vlan

LebotierdisposegalementdefonctionVoIPpourlaconnexionaveclatlphonie.Laccspeutgalementsefaire
viauneCLI(CommandLineInterface):
telnet 192.168.1.1
login: administrator

- 8-

ENI Editions - All rigths reserved - educ hafa

password:
192.168.1.1> ?
arp
blink
call
clear
debug
dns-lookup
enable
mode
exit
fg
help
install
jobs
logout
ping
host
show
sniff
su
terminal
test
traceroute
to a network

Manipulates the ARP database


Reads/writes/erases data from/to Flash
Manipulates local calls
Clears the screen
Enables debug monitor
Look up the IP/hostname of a host/IP
Enters administrator exec configuration
Goes back to the parent configuration mode
Resumes a suspended task
Shows information on how to use help
Installs system components
Shows current running commands
Terminates console / telnet session
Sends icmp ping packets to a destination
Shows system information
Sniff packets
Changes user
Enables or configures terminal parameters
Stimulates input of a system-part
Prints routes which IP packets takes

host
who
Shows users logged into the system
192.168.1.1>enable
192.168.1.1>show running-config
#----------------------------------------------------------------#
#
#
# SN4552/2BIS/EUI
#
# R5.2 2009-07-09 H323
#
# 1970-01-01T03:29:13
#
# SN/00A0BA056410
#
# Generated configuration file
#
#
#
#----------------------------------------------------------------#
cli version 3.20
gui type basic
dns-relay
webserver port 80 language en
sntp-client
sntp-client server primary 129.132.2.21 port 123 version 4
system
ic voice 0
profile acl ACL_WAN_PERMIT_ALL_MGMT
permit 1 ip any any ""
profile acl ACL_WAN_PERMIT_SEL_MGMT
deny 1 tcp any any eq 23 ""
deny 2 tcp any any eq 80 ""
deny 3 udp any any eq 161 ""
permit 4 ip any any ""
profile acl ACL_WAN_BLOCK_ALL_MGMT
deny 1 tcp any any eq 23 ""
deny 2 tcp any any eq 80 ""
deny 3 udp any any eq 161 ""
permit 4 ip any any ""
profile service-policy SP_WAN_OUT
rate-limit 100000 header-length 18 voice-margin 0

ENI Editions - All rigths reserved - educ hafa

- 9-

source traffic-class local-voice


priority
source traffic-class default
priority
profile service-policy SP_WAN_IN
rate-limit 100000 header-length 18 voice-margin 200
source traffic-class local-voice
priority
source traffic-class default
queue-limit 4
profile napt NAPT_WAN
profile ppp default
profile call-progress-tone US_DIAL_TONE
play 1 10 350 -13 440 -13
profile call-progress-tone US_RB_TONE
play 1 2000 440 -19 480 -19
pause 2 4000
profile call-progress-tone US_BUSY_TONE
play 1 500 480 -24 620 -24
pause 2 500
profile call-progress-tone US_CONGESTION_TONE
play 1 250 480 -24 620 -24
pause 2 250
profile tone-set default
profile tone-set Europe
profile tone-set UnitedStates
map call-progress-tone dial-tone US_DIAL_TONE
map call-progress-tone ringback-tone US_RB_TONE
map call-progress-tone busy-tone US_BUSY_TONE
map call-progress-tone release-tone US_BUSY_TONE
map call-progress-tone congestion-tone US_CONGESTION_TONE
profile voip default
codec 1 g711alaw64k rx-length 20 tx-length 20
codec 2 g711ulaw64k rx-length 20 tx-length 20
profile voip VOIP
codec 1 g729 rx-length 20 tx-length 20
codec 2 g711alaw64k rx-length 20 tx-length 20
codec 3 g711ulaw64k rx-length 20 tx-length 20
dejitter-mode static
dejitter-max-delay 120
profile pstn default
profile dhcp-server DHCPS_LAN
network 192.168.1.0 255.255.255.0
include 1 192.168.1.10 192.168.1.19
lease 2 hours
default-router 1 192.168.1.1
domain-name patton.com
domain-name-server 1 192.168.1.1
profile aaa default
method 1 local
method 2 none
context ip router

- 10 -

ENI Editions - All rigths reserved - educ hafa

interface IF_IP_WAN
ipaddress dhcp
use profile acl ACL_WAN_PERMIT_ALL_MGMT in
use profile service-policy SP_WAN_IN in
use profile service-policy SP_WAN_OUT out
use profile napt NAPT_WAN
tcp adjust-mss rx 582
tcp adjust-mss tx 1440
interface IF_IP_LAN
ipaddress 192.168.1.1 255.255.255.0
icmp router-discovery
context ip router
dhcp-server use profile DHCPS_LAN
subscriber ppp SUB_PPPOE
dial out
no multilink
authentication chap
authentication pap
bind interface IF_IP_WAN router
context cs switch
routing-table called-e164 RT_SPEED_DIAL
route T dest-table RT_NR_BLOCKING MT_SPEED_DIAL
routing-table called-e164 RT_NR_BLOCKING
route default dest-table RT_CALL_ROUTING MT_SET_CNPN
routing-table called-e164 RT_CALL_ROUTING
route default dest-service SER_HG_PSTN_FALLBACK
routing-table called-e164 RT_INCOMING
route default dest-interface IF_S0_01 MT_NR_TRANSLATION
mapping-table called-e164 to called-e164 MT_SPEED_DIAL
mapping-table calling-e164 to calling-e164 MT_SET_CNPN
mapping-table called-e164 to called-e164 MT_NR_TRANSLATION
interface isdn IF_S0_00
route call dest-table RT_INCOMING
interface isdn IF_S0_01
route call dest-table RT_SPEED_DIAL
use profile tone-set Europe
isdn-date-time
interface isdn IF_DEV0
service hunt-group SER_HG_PSTN_FALLBACK
timeout 6
drop-cause normal-unspecified
drop-cause no-circuit-channel-available
drop-cause network-out-of-order
drop-cause temporary-failure
drop-cause switching-equipment-congestion
drop-cause access-info-discarded
drop-cause circuit-channel-not-available
drop-cause resources-unavailable
drop-cause no-route-to-destination
route call 1 dest-interface IF_H323
route call 2 dest-interface IF_S0_00
context cs switch
no shutdown
port ethernet 0 0

ENI Editions - All rigths reserved - educ hafa

- 11 -

bind interface IF_IP_WAN router


pppoe
session SES_PPPOE
bind subscriber SUB_PPPOE
shutdown
port ethernet 0 0
no shutdown
port ethernet 0 1
bind interface IF_IP_LAN router
no shutdown
port bri 0 0
clock auto
encapsulation q921
q921
uni-side auto
encapsulation q931
q931
protocol dss1
uni-side user
bchan-number-order ascending
encapsulation cc-isdn
bind interface IF_S0_00 switch
port bri 0 0
no shutdown
port bri 0 1
clock auto
encapsulation q921
q921
uni-side auto
encapsulation q931
q931
protocol dss1
uni-side net
bchan-number-order ascending
encapsulation cc-isdn
bind interface IF_S0_01 switch
port bri 0 1
no shutdown
192.168.1.1#
Pour accder linterface Web, il faut brancher la passerelle via un cble crois un PC et ensuite lancer un
navigateursurlURLhttp://smart.nodeouhttp://192.168.1.1.
Leloginpardfautestadministratoretilnyapasdemotdepasse.
IlseraensuitepossibledemodifierladresseIPdelapasserelleetdedsactiverleserveurDHCP,ceciafindefixer
uneIPquiserancessairedutiliserdansledialplandAsterisk.

- 12 -

ENI Editions - All rigths reserved - educ hafa

InterfaceavanceduPattonSN45522T0

ENI Editions - All rigths reserved - educ hafa

- 13 -

ConfigurationdesportsBRI
Les botiers Patton sont interoprables avec les principaux commutateurs logiciels du march (Centile, Nortel,
Siemens,Thomson),ainsiquaveclesprincipauxPBXgalement(Asterisk,Aastra,3CX,Pingtel,SIPfoundry).

- 14 -

ENI Editions - All rigths reserved - educ hafa

Dfinition
Leplandenumrotationestlec urlogiqueduroutagedesappelsdusystmeAsterisk:ilindiqueausystmecequil
faut faire chaque fois quil y a un appel entrant, sortant ou interne. Dfini dans le
fichier/etc/asterisk/extensions.conf,ilfaitappelaufichier/etc/asterisk/sip.confquicontientlalistedesterminaux
SIPdusystmeouaufichier /etc/asterisk/iax.confpourlestlphonesettrunksIAX.noterquune extension fait
gnralementallusionunnumrodetlphone.

1.Lefichiersip.conf
a.Syntaxe
Lefichiersip.confcontientplusieurssections:unesection[general]etautantdesectionsquilyadeclientsSIP.La
section[general]contientlesparamtresvalablespourtouslesclientsSIP.
Exemple
Dans lexemple cidessous, nous dfinissons deux clients SIP 1000 et 1010 avec leurs paramtres gnraux et
spcifiques. Ces deux clients sont utiliss dans le plan de numrotation (numro de postes 1000 et 1010). Les
tlphonesSIPsontparamtrsaveccesdeuxnumros.
[general]
; contexte par dfaut des clients SIP (en lien avec extensions.
conf)
context=default
; permet de faire des appels bass sur des noms DNS
srvlookup=yes
;port SIP
port=5060
; dsactivation de tous les codecs
disallow=all
;autorisation du codec GSM
allow=gsm
;autorisation du codec G711 alaw
allow=alaw
;autorisation du codec G711 ulaw
allow=ulaw
LesautressectionsconcernentlesclientsSIP:
; nom de lextension
[1000]
username=1000
; user pour appel entrant; peer pour appel sortant; friend
pour les deux types dappel
type=friend
; permet de vrifier quun client est joignable :
yes|no|millisecondes
; yes signifie un check toutes les 2000 ms (2 secondes)
qualify=yes
; mot de passe pour lauthentification du client
secret=3615
; le client nest pas derrire un firewall qui natte
nat=no
; le client senregistre lui-mme (dynamic|hostname|addresse IP)
host=dynamic
; le client ne fait pas de SIP-reinvite (update|yes|no) et le flux RTP passe par Asterisk
directmedia=no
; contexte du client 1000
context=appels_entrants

Lattribut"directmedia"estlenouveaunomdelancienattribut"canreinvite".

ENI Editions - All rigths reserved - educ hafa

- 1-

Si directmedia= yes, cela signifie que les flux RTP circulent directement entre les tlphones SIP et ne
passentparAsterisk.

; nom de lextension
[Catherine]
username=1010
type=friend
qualify=yes
secret=5768
nat=yes
; le client a pour IP 192.168.5.109
host=192.168.5.109
directmedia=yes
context=default
disallow=all
allow=ulaw
; nom de lutilisateur
username=777
...

b.ParamtragedusoftphoneXLite
LelogicielgratuitXlitepeuttretlchargpartirdusitedelditeur(www.counterpath.com).
IlestdisponibleenversionWindows,LinuxouMac.LaversionpayanteEyeBeampermetdesupporterlavidoil
suffitdebrancherunewebcamsurlePCdelappelantetunesurlePCdelappel.
Lesparamtresprincipauxpourpermettrelaconnexiondutlphonesontlessuivants:

DisplayName:utilispourlaprsentationdunom.

Username:utilispourlauthentification(numrodetlphone).

Password:motdepassepourlauthentification.

Autorisationusername:utilispourlauthentification(numrodetlphone).

Domain:adresseIPduserveurAsterisk.

proxyAdress:adresseIPduserveurAsterisk.

ExempledefentredeparamtragedeXLite3.0

- 2-

ENI Editions - All rigths reserved - educ hafa


XLitesenregistreautomatiquementauprsduserveurAsteriskenindiquant:
Ready,Yourusernameis:1010
Exemple:Xlite3.0connect

ENI Editions - All rigths reserved - educ hafa

- 3-

Exemple:lesdiffrentsboutonsdeXlite

Counterpath propose galement en version payante deux autres produits : EyeBeam 1.5 et Bria 3.0 qui
apportentdenombreusesautresfonctionnalits(intgrationOutlook,vidoHD,LDAP,codecG729,support,
lignesmultiples...).

EyeBeamestcommercialis45$lunitetBria49,95$lunit.

2.Lefichierextensions.conf
a.Syntaxe
Lefichierextensions.confesttoujourscomposdesectionsappelesdescontextes:
[general]
...
[globals]
...
[appels_entrants]
...
[appels_internes]
...
[contexte1]
...
[contexte 2]
...
Le contexte "general" est un contexte spcial dfini en dbut de plan il permet de dfinir des informations qui
serontvalablesdanslensembleduplan,parexemple:
[general]
; concerne la commande save dialplan
static=yes
; si static =yes et write protect = no, possibilit de
sauvegarder le dialplan depuis la CLI (la CLI est la console
daffichage des vnements dAsterisk)
writeprotect=no

- 4-

ENI Editions - All rigths reserved - educ hafa

; permet de raccrocher automatiquement aprs lappel


autofallthrough=yes
Lecontexte"globals"estgalementuncontextespcialdfiniendbutdeplanilpermetdedfinirdesvariables
globalesauplan,cecipermetdenapporterunemeilleurelisibilit,parexemple:
[globals]
DIRECTEUR=SIP/1001
SECRETAIRE=SIP/1000
EMAIL_DIRECTEUR=directeur@societe.com
EMAIL_SECRETAIRE=secretaire@societe.com
Dans la suite du plan, ces variables pourront tre utilises sous la forme ${DIRECTEUR},
${EMAIL_SECRETAIRE}.

b.Lescontextes
Chaque contexte dfinit une portion dappels qui est ainsi cloisonne ce qui se passe dans cette portion est
indpendantdesautresportions.
Parexemple
Lecontexteappels_entrantsconcerneexclusivementletraitementdesappelsentrants:
[appels_entrants]
exten => 2409, 1, Answer()
exten => 2409, 2, Dial(${DIRECTEUR})
Supposons ici que loprateur prsente Asterisk toutes ses SDA sur les 4 derniers chiffres un appel
entrantverslaSDA0383502409varentrerdanslecontexteappels_entrantsolesinstructionsAnswer()
puisDial(${DIRECTEUR})vonttreappeles.Concrtement,cestleposte1001quivasonner(lecontenudela
variable${DIRECTEUR}).
Ilestimportantdenoterque:

Lesespacessontproscriredanslenommagedescontextes.

Lenomduncontextepeutcontenirdeslettresminusculesoumajuscules,deschiffres,letiretetlesoulign.

Lors de linstallation du serveur Asterisk, un fichier extensions.conf est automatiquement cr mais il vaut
mieuxrepartirdunfichierviergeafindebiencomprendreleplan.

c.Lesextensions
Chaquecontextecontientuneouplusieursextensionsouinstructions.
Lasyntaxeduneextensionestlasuivante:
exten => numro de lappel, numro de priorit, application( )

numro de lappel:cestlextension

numro de priorit:uneextensionpeutinclureplusieurstapesdoncilfautdonnerdespriorits

application( ):cestlafonctionquiestdclenchelorsquelextensionestappele.

Exemple:
exten => 1000, 1, Dial(SIP/1000)

Le numro de lappel est 1000, la priorit est 1 (il ny a pas dautres tapes) et la fonction qui dclenche
ENI Editions - All rigths reserved - educ hafa

- 5-

lactionsurcetappelestDial(SIP/1000).

Autrementdit,siunterminalinternecomposelenumro1000,etbiencestleposteSIP1000quisonnera.

Attention,letermeextensionsignifieinstructionmaisgalement"poste"(voirlefichiersip.conf).

d.Lesextensionsspciales
Lextensionstarts
Cette extension est utilise quand un appel inconnu arrive dans un contexte cest le cas dun appel entrant en
provenancedelextrieur.
[appels_entrants]
exten => s,1,application()
Lextensioninvalidi
Contrairement ce que nous pouvons penser, cette extension nest pas utilise dans un cas de rponse invalide
(casounappelnetrouveaucunecorrespondancedansuncontexte)maislorsdelamiseenplacedIVR(Interactif
VoiceResponseouServeurVocalInteractif).Elleestutiliselorsquunutilisateurdoittaperunchiffresurleclavierdu
tlphone:tapez1pourleserviceclient,2pourleservicemarketing.Silutilisateurtapeuneautretouche,ilfaut
bienindiquerquilsesttrompetquildoitnouveausaisirunchiffrecomprhensible.
Exten => i,1,Playback(message_non_compris)
Lextensiont
Cetteextensionpermetdegrerlatemporisation.Parexemple,danslecasprcdent,nouspouvonsindiquerquesi
lutilisateurnetapepassurunetouchedansles10secondes,uneactionspcifiqueseradclenche.Pardfaut,la
temporisationestde10secondes.
Exten => i,1,Playback(message_non_compris)
Exten => t,1,Playback(message_fin_dialogue)

e.Lespriorits
Uneextensionpeutavoiruneouplusieursphasesquisontdespriorits.
Exempledunappelduposte1000quidclenchelesactionssuivantes:

lepostesonne:application_1()

sipersonnenerpond,dclenchementdelabotevocale:application_2()

lappelsetermine:application_3().

Leplandenumrotationseradonclesuivant:
exten => 1000, 1,application_1()
exten => 1000, 2,application_2()
exten => 1000, 3,application_3()

Lesprioritsapparaissenttoujoursdansunordrecroissant,souspeinedevoirlextensioninutilisable.

Ilnefautjamaissauteruneextension.

- 6-

Il existe des priorits non numrotes, les priorits n (next) une priorit n permet en fait de prendre la
prioritprcdenteetdajouter1.

ENI Editions - All rigths reserved - educ hafa

exten => 1000, 1,application_1()


exten => 1000, n,application_2()
exten => 1000, n,application_3()
La priorit n est trs utilise lors de lcriture de macros (voir le chapitre Amlioration du plan de
numrotation).

f.Lesapplications
LesapplicationsoufonctionsfontpartieintgrantedAsterisketsontlivreslorsdelinstallationdeceluici.
ChaquenouvelleversiondAsteriskapportedenouvellesfonctionscertainesayantmmedisparuesoudisposant
dunenouvellesyntaxe.
Avant toute mise en production de nouvelles applications, il convient donc de bien les tester dans le plan de
numrotation.
Answer()
Rponduncanalquisonne.Onlutilisetrssouventcommepremireapplicationpouruneextension.
exten => 1001, 1, Answer()
Playback()
Joue un fichier sonore destination de linterlocuteur. Attention ne pas donner dextension au fichier son.
LapplicationBackground()estsimilaire.
Lefichiersonestsitudans/var/lib/asterisk/sounds.
exten => 1001, 1, Answer()
exten => 1001, 2, Playback(fichier_son)
Hangup()
Permetderaccrocherlecanalencours.Celapermetdelibreruncanalproprement.
exten => 1001, 1, Answer()
exten => 1001, 2, Dial(SIP/1001)
exten => 1001, 3, Hangup()
Echo()
Permetdmettreuncholinterlocuteur.Lappelantsortdecemodeenappuyantsur#.
exten => 1001, 1, Answer()
exten => 1001, 2, Echo()
exten => 1001, 3, Dial(SIP/1001)
Background()
Permetdejouerunfichiersonenattendantquelutilisateurcomposeunnumro.
exten => 1001, 1, Answer()
exten => 1001, 2, Background(fichier_son)
Goto()
Applicationquipermetdalleruneextension,uneprioritouuncontexte,fournienparamtre.
exten => 1001, 1, Background(fichier_son)
exten => 1001, 2, Echo()
exten => 1001, 3, Goto(1)

ENI Editions - All rigths reserved - educ hafa

- 7-

Dial()
Applicationfondamentalequifaitsonnerlextensionpasseenparamtre.
exten => 1001, 1, Dial(SIP/1001)
Congestion()
Permet de signaler quun canal est encombr, jusquau raccrochage cette application ne diffuse pas la tonalit
dencombrement. Il faut pour cela utiliser lapplicationPlaytones(congestion),ocongestionestlefichiersonjou.
LapplicationBusy()estsimilaire.
exten
exten
exten
exten

=>
=>
=>
=>

717,
717,
717,
717,

1,
2,
3,
4,

answer()
Playtones(congestion)
Congestion()
Hangup()

Voicemail()
Permetdappelerlabotevocaledelappel.Lappelantpeutalorslaisserunmessage(voirlasection2duprsent
chapitrepourplusdedtails).
exten => 717, 1, Answer()
exten => 717, 2, Voicemail(u717)
Set()
Affecteunevaleurunevariable.
exten => 717, 1, Set(SAV=SIP/700)
exten => 717, 2, Dial(${SAV})
Exec()
Permetdexcuteruneapplication.
exten => 717, 1, Answer()
exten => 717, 2, Set(appel=Dial(SIP/717))
exten => 717, 3, Exec(${appel})
MusicOnHold()
Permet de jouer une musique dattente dont la classe est passe en paramtre cest le
fichier/etc/asterisk/musiconhold.confquicontientlesparamtragesdesmusiquesdattente.Souventutilisavecune
notiondedlai(lamusiquedattenteestjouependant25secondes).Ici,lefichiermymusicauformatMP3doittre
situdans/var/lib/asterisk/mohmp3/mymusic.
exten => 717, 1, Answer()
exten => 717, 2, MusicOnHold(mymusic)
exten => 717, 3, Dial(SIP/717)
Playtones()
Permetdejouerdestonalitsquisontdfiniesdanslefichieretc/asterisk/indications.conf.
exten => 717, 1, Playtones(congestion)
Transfer()
Permet de transfrer lappel vers une nouvelle extension. Cette application est prsente galement dans de
nombreuxterminauxSIP/IAX.
exten => 717, 1, Transfert(SIP/700)

g.Lesmotifs

- 8-

ENI Editions - All rigths reserved - educ hafa

Syntaxe
Afindefaciliterlcritureduplandenumrotation,lesmotifs(oupatterns)suivantspeuventtreutiliss:

Xreprsentetoutchiffrecomprisentre0et9.

Zreprsentetoutchiffrecomprisentre1et9.

Nreprsentetoutchiffrecomprisentre2et9.

[123789]reprsenteunchiffreparmi1,2,3,7,8,9.

[17]reprsentetoutchiffrecomprisentre1et7:1,2,3,4,5,6ou7.

[346]reprsenteunchiffreparmi3,4,5ou6.

.reprsenteunouplusieurschiffressansaucunerestriction(viterpourdesraisonsdescurit).

Unmotifcommencetoujoursparlecaractre_
Exempledemotif:LesnumrosdetlphonesfixesenFrance
Premiercas:_.
Cettecritureesttroppermissivetouttypedappelspartoutdanslemondeestautoris.
Deuximecas:_XXXXXXXXXX
Cettecritureestcertesmeilleurequelapremiremaisilestpossibledepassertouttypedappelssur10chiffres:
appelsversdesmobiles,desnumros08,09.
Troisimecas:_0[12345]XXXXXXXX
CettecriturereprsentelesappelsverslesfixesenFrance.
Prfixedesortie
Ilestcommundutiliserunprfixedesortie0ou9pourlesappelssortants:
_00[12345]XXXXXXXX,leprfixeiciest0suividumotifpermettantdappelertouslesnumrosfixesenFrance.
AppelssortantsverslInternational
Uncontextespcifiquepeuttrecr:
[INTERNATIONAL]
; contexte accs aux appels Internationaux
exten => _000X., 1,Answer()
exten => _000X., n,Macro(appel_sortant,${EXTEN}:1)
exten => _000X., n,Hangup()
Appelsverslesnumros118
exten => _0118., 1,Answer()
exten => _0118., n,Macro(appel_sortant,${EXTEN}:1)
exten => _0118., n,Hangup()

Lesmotifssonttrsutilissdanslescontextesgrantlesappelssortants.
Il est trs important de spcifier des contextes chaque type dappel (fixes, mobiles, numros verts,
numrossurtaxs).Celapermetdegrerlesautorisationsenfonctionduprofildelutilisateur.
${EXTEN}estunevariableinterneAsteriskquicontientcequivientdtretap.

ENI Editions - All rigths reserved - educ hafa

- 9-

- 10 -

${EXTEN}:xpermetdenleverxchiffresenpartantdelagauche.

ENI Editions - All rigths reserved - educ hafa

Lamessagerieunifie
1.Principe
La messagerie vocale est en quelque sorte un rpondeur/enregistreur. Elle permet un utilisateur interne du
systme Asterisk de disposer dune bote vocale, de la paramtrer sa guise et de lactiver en cas dabsence.
Lappelantpourraalorslaisserunmessage.
Mais, comme il est parfois fastidieux de faire la dmarche de consulter sa messagerie vocale depuis un tlphone,
Asterisk peut envoyer galement le message laiss dans la bote vocale vers la messagerie lectronique de
lutilisateurlemailcontenantalorslemessagevocalsouslaformedunfichierjointenformat.wav.
En effet, de plus en plus dutilisateurs cherchent ce que linformation arrive dans un pot commun unique (mail,
message vocaux, sms, fax...) et la messagerie lectronique est tout fait indique pour tre loutil permettant de
fdrertouslesmessages.
Lamiseen uvreduntelsystmedemandelaprsencedunserveurSMTPsurleserveurAsterisk.

2.Botevocale
Lamiseenplacedebotevocalesefaitlaidedufichierspcifique/etc/asterisk/voicemail.conf.
Cefichierestcomposdetroissections:

lasectiongeneralquicontientlesparamtressappliquantlensembledesbotesvocales.
la sectionzonemessages qui permet de grer des zones horaires et donc dassocier des dcalages horaires
aux utilisateurs (en fait lannonce de la date et de lheure des messages vocaux). La syntaxe est
nom_de_la_zone = Pays/Ville |options. Les normalisations des couples Pays/Ville sont dfinies dans le
fichierspcifique/usr/share/zoneinfo.
lasection boites vocales comprenantladfinitiondesbotesvocalesenellesmmes.

Attention,lesparamtresoptionnelsdesbotesvocalessontprioritairessurlesparamtresgnraux.
Lasyntaxedunebotevocaleestlasuivante:
numro de la bote => mot de passe, nom, email, email pager,
options
Siunecomposantenedoitpastrepriseencompte,ilfautentenircomptedanslenombredechamps(ici,lemail
pagernestpasprisencompte):
numro de la bote => mot de passe, nom, email,, options
Lesoptionssontsparespardes|etdoiventprendredesvaleursparmi:
attach

Yes|No:Yespermetdattacherlemessagevocallemail

serveremail

Adresseemailduserveurquienvoielemessageenmail

tz

Concernelatimezone

saycid

Yes|No:YesindiqueleCallerID(cid)avantlemessage.Sinon,lecidestdanslenveloppe

review

Yes|No:Yespermetlappelantderentendrelemessageavantlavalidationparla
touche#

operator

Yes|No:Yespermetlappelantdejoindreunoprateur(extensiono)lafindumessage

ENI Editions - All rigths reserved - educ hafa

- 1-

envelope

Yes|No:Yespermetdelireladateetlheuredumessage

delete

Yes|No:Yessilemessagevocaldoittresupprimduserveur

3.Fichiersdeconfiguration
a.Fichiervoicemail.conf
Cefichiercontientlesinformationssuivantes:

Inclusionducontenudesfichiersvm_general.incetvm_email.inc.
Indication du serveur de mail dmission des mails (attention, un serveur SMTP comme Postfix doit
fonctionnerpourpermettrelagestiondesmails).

Indicationsilemessagevocalestjointlemail.

Indicationdesparamtresdegestiondesdcalageshoraires.

UnesectionDefaultquidfinitlesdiffrentesbotesvocalesdesutilisateurs:lou,zoe,solene,margaux.

UnesectionNancyquidfinitlesbotesvocalesdesutilisateurs:catherineetwalter.

UnesectionChicagoquidfinitlabotevocaledelutilisateur:john.

[general]
#include vm_general.inc
#include vm_email.inc
; adresse email qui envoie les messages en mail
servermail=voicemail@masociete.com
; indique si le message vocal sera joint lemail
attach=yes
[zonemessages]
central=America/Chicago|vm-received Q digits/at IMp
[default]
1000 => 765, lou, lou@masociete.com,,attach=no|saycid=no|
envelope=no|delete=no
1001 => 346, zoe,zoe@masociete.com,attach=yes|saycid=no|
envelope=no|delete=no
1002 => 615, solene, solene@masociete.com,,attach=yes|
saycid=no|envelope=no|delete=no
1003 => 325, margaux, margaux@masociete.com,,attach=yes
saycid=no|envelope=no|delete=no
[Nancy]
2000 => 167, catherine, catherine@masociete.com,,attach=yes|
saycid=no|envelope=no|delete=no
2001 => 892, walter, walter@masociete.com,,attach=yes|
saycid=no|envelope=no|delete=no
[Chicago]
8000 => 378, john, john@masociete.com,,attach=yes|saycid=no|
envelope=no|delete=no|tz=central

b.Fichiervm_general.inc
format=wav49|wav
attach=yes
- 2-

ENI Editions - All rigths reserved - educ hafa

; [PBX] napparatra pas dans le sujet du mail


pbxskip=yes
; metteur du mail de notification
servermail=voicemail@masociete.com
fromstring=Messagerie Vocale MASOCIETE
; taille maximum du message vm
maxmessage=180
; taille minimum du message vm (en secondes)
minmessage=3
; attendre 5 secondes de silence la fin du vm
maxsilence=5
; permettre lmetteur de rentendre ou de renregistrer
son message avant de le sauvegarder
review=yes
; permet lappelant dappuyer sur la touche 0
operator=yes

c.Fichiervm_email.inc
emailbody = Utilisateur ${VM_NAME},\n\nVous avez un nouveau
message sur votre boite vocale ${VM_MAILBOX}:
\n\n\tDe:\t${VM_CALLERID}\n\tDuree:\t${VM_DUR} secondes\
n\tDate:\t${VM_DATE}\n\nComposez le 888 pour acceder
a votre boite aux lettres.\
nAcces en mode Web : http://192.168.1.100/recordings/index.php.\n
ExempledemailreuaveclesystmedesvoicemailsAsterisk

4.Lamessageriedansleplandenumrotation
LapplicationVoiceMail()permetdelaisserunmessagevocaldanslabotevocaledelappel.
LapplicationVoiceMailMain()permetdinterrogersabotevocalebiensr,unmotdepasseestdemand.
; Si Lou est indisponible pendant plus de 20 secondes,
lappelant entendra un message dindisponibilit (u pour

ENI Editions - All rigths reserved - educ hafa

- 3-

unavailable)
exten => 1000, 1, Dial(${LOU},20,r)
; Si Lou est occupe par un autre appel, un saut lextension
102 (n+101) est effectu et lappelant entendra un message
doccupation (b pour busy)
exten => 1000, 2, VoiceMail(u1000@default)
; default correspond au contexte de messagerie vu dans
voicemail.conf
exten => 1000, 102, VoiceMail(b1000@default)
; Lou peut appeler le 888 pour accder son rpondeur
et lire ses messages vocaux
exten => 888, 1, VoiceMailMain()

- 4-

ENI Editions - All rigths reserved - educ hafa

Exempledeplandenumrotationsimple
PrenonslecasdunepetitePME.Leplandenumrotationestsur3chiffres:4XXles10SDAaffectesparloprateur
sont03.83.57.14.00,14.01,...,14.09.
Cettesocitcomprendplusieurscollaborateurs:

Standardiste,posteinterne400,SDAaffecte03.83.57.14.00

Claude,poste401,SDAaffecte03.83.57.14.01

Eliane,poste402,SDAaffecte03.83.57.14.02

Ren,poste403,SDAaffecte03.83.57.14.03

Huguette,poste404,SDAaffecte03.83.57.14.04

Unappelentrantsurlestandarddclencheautomatiquementunemusiquedattente"masocieteattente".
Lesappelssortantsverslesfixes"local/National"etverslesmobilessontprfixsparle0.
Contenudufichiersip.conf
[general]
srvlookup=yes
port=5060
disallow=all
allow=gsm
allow=alaw
allow=ulaw
type=friend
qualify=yes
nat=no
host=dynamic
canreinvite=no
context=appels_internes
[400]
username=400
secret=3615
[401]
username=401
secret=5678
[402]
username=402
secret=9021
...
Contenudufichierextensions.conf
[general]
[globals]
Standard=SIP/400
Claude=SIP/401
Eliane=SIP/402
Rene=SIP/403
Huguette=SIP/404
Gateway=Zap/g1

ENI Editions - All rigths reserved - educ hafa

- 1-

[appels_entrants]
exten => s, 1, Answer()
exten => s, 2, Playback(Hello-world)
exten => s, 3, Hangup()
; affectation des
exten => 1400, 1,
exten => 1400, 2,
exten => 1400, 3,

SDA aux numeros internes


Answer()
Dial (${Standard},15,m(masociete-attente),r)
Hangup()

exten => 1401, 1, Answer()


exten => 1401, 2, Dial (${Claude},10,r)
exten => 1401, 3, Hangup()
exten => 1402, 1, Answer()
exten => 1402, 2, Dial (${Eliane},10,r)
exten => 1402, 3, Hangup()
exten => 1403, 1, Answer()
exten => 1403, 2, Dial (${Rene},10,r)
exten => 1403, 3, Hangup()
exten => 1404, 1, Answer()
exten => 1404, 2, Dial (${Huguette},10,r)
exten => 1404, 3, Hangup()
[appel_internes]
include => appels_sortants
exten => 400, 1, Answer()
exten => 400, 2, Dial(${Standard})
exten => 400, 3, Hangup()
exten => 401, 1, Answer()
exten => 401, 2, Dial(${Claude})
exten => 401, 3, Hangup()
exten => 402, 1, Answer()
exten => 402, 2, Dial(${Eliane})
exten => 402, 3, Hangup()
exten => 403, 1, Answer()
exten => 403, 2, Dial(${Rene})
exten => 403, 3, Hangup()
exten => 404, 1, Answer()
exten => 404, 2, Dial(${Huguette})
exten => 404, 3, Hangup()
[appels_sortants]
exten => _00[12345]XXXXXXXX, 1, Dial({$Gateway}/${EXTEN:1})
exten => _00[12345]XXXXXXXX, 2, Congestion()
exten => _006XXXXXXXX, 1, Dial({$Gateway}/S{EXTEN:1})
exten => _006XXXXXXXX, 2, congestion()
Ce premier plan de numrotation peut tre enrichi et optimis laide dutilisation de variables, de macros et de
nouvellesapplications.
Ceplanestvolontairementincompletilnepermetpasparexempledeffectuerdesappelsverslinternational,
verslesnumrosdurgence,lesnumrossurtaxs

- 2-

ENI Editions - All rigths reserved - educ hafa

Introduction
Danslechapitreprcdent,nousavonsvulessentielpourconstituerrapidementunplandenumrotationfonctionnel.
Cependant, dans le cas dune structure plus importante comme une PME de 100 personnes, il faut apporter des
amliorations nouvelles comme par exemple lutilisation de variables, de macros ou fonctions qui permettent de
simplifier le plan, lutilisation de syntaxe comme les branchements conditionnels, la mise en place de confrences, la
miseenbasededonnesdescomptesSIP,desbotesvocales.

ENI Editions - All rigths reserved - educ hafa

- 1-

Optimisationaveclesmacros
Exemple:Considronsleplandenumrotationconstitude3fois100lignes
[internal]
exten => 400, 1, Answer()
exten => 400, 2, Dial(SIP/400,10,r)
exten => 400, 3, Hangup()
...
exten => 499, 1, Answer()
exten => 499, 2, Dial(SIP/499,10,r)
exten => 499, 3, Hangup()
CeplanpeuttreamliorencrivantunemacroAppel.
Toutemacrodevratremiseentrecrochetsetlenomdevracommencerparmacro-:
[macro-Appel]
exten => s, 1, Answer()
exten => s, 2, Dial(${ARG1},10,r)
exten => s, 3, Hangup()
Lavariable${ARG1}contientlepremierargument(ouparamtre)passlamacroetdansleplandenumrotation,
lappeldelamacrosefaitlaidedelapplicationMacro(nom_de_la_macro, argument).
Lemmeplandenumrotationpeutdoncscriredelafaonsuivante:
[macro-Appel]
exten => s, 1, Answer()
exten => s, 2, Dial(${ARG1},10,r)
exten => s, 3, Hangup()
[internal]
exten => 400, 1, Macro(Appel, SIP/400)
..
exten => 499, 1, Macro(Appel, SIP/499)

ENI Editions - All rigths reserved - educ hafa

- 1-

Fonctionsavances
1.Variablesetexpressions
a.Variables
Lesvariablessontutilisespourtrepassesenargumentdesfonctions.
Lasyntaxedunevariableestlasuivante:
${nom_de_la_variable:offset:longueur}
o:

nom_de_la_variableestlenomdelavariable.

offsetestunchampoptionnelquidfinitunpointeur.Siloffsetestngatif,lalecturedelachaneseffectue
dedroitegauche.

longueur est un champ optionnel qui dfinit le nombre de caractres qui seront retourns, partir de
loffset.

Exemples:
remerciements=Merci Patrick et Damien
${remerciements} : retourne Merci Patrick et Damien
${remerciements:1} : retourne erci Patrick et Damien
${remerciements:-2} : retourne en
${remerciements:8:19} : retourne Patrick et Damien
Noussupprimonsicileprfixedesortie0:
exten => _00XXXXXXXXX, 1, SetVar(numero=${EXTEN:1})
exten => _00XXXXXXXXX, 2, Dial(${numero})
Ilexistetroistypesdevariables:

variablesglobales:ellessontprsentesdanslasection[globals]duplandenumrotationoupeuventtre
affectesentantquetellesparlacommandeSetGlobalVar().
variablesdecanaux:chaquecanaldisposedesespropresvariablesquisontdtruiteslorsquelecanalse
libre.EllessontutiliseslaidedelacommandeSet().Lesvariablesdecanauxsontdjprdfiniesetil
vaut mieux ne pas les utiliser en tant que variables globales : ${CONTEXT}, ${CALLERID(num}),
${EXTEN}...
variables denvironnement : elles permettent daccder aux variables denvironnement du systme
dexploitation.

Certainesapplicationsretournentdesvariablesdecanaux(channel):Dialretourne${DIALSTATUS}quiestuncode
permettantdeconnatreltatdelappel(ANSWER, BUSY, NOANSWER, CANCEL, CONGESTION, CHANUNAVAIL,...).
Lesmacrosdisposentdevariablesspcifiquescomme:
${ARG1}:premierargumentpasslamacro.
${ARGn}:nimeargumentpasslamacro.
${MACRO_CONTEXT}:contextedelextensiondolamacroatappele.
${MACRO_EXTEN}:extensiondolamacroatappele.
${MACRO_PRIORITY}:prioritdanslextensiondolamacroatappele.

ENI Editions - All rigths reserved - educ hafa

- 1-

b.Expressions
Lesexpressionssontutilisessouslaforme$[expression]etutilisentdesvariables,desoprateursetdesvaleurs.
Lasyntaxeest$[expression1oprateurexpresssion2].
LesexpressionsdoiventtreconformeslasyntaxedulangagedeprogrammationdAsterisk.
Lesoprateurspeuventtre:

desoprateurslogiques(vraioufaux):|(ou),&(et),!(ngation)

desoprateursdecomparaison:=,>,<,>=,<=,!=

desoprateursarithmtiques:+,,*,/,%

desexpressionsrgulires:expression1:expression2

desoprateursconditionnels:GotoIf(condition?destination1:destination2).

GotoIfvaluelexpressioncondition.Sicestvrai,ellevadestination1,sinondestination2.
Exemples:
Quesepassetillorsqueleposte777estdemand?
exten => 777, 1, Set(num1=777)
exten => 777, 2, Set(num2=$[${num1} + 3]
exten => 777, 3, Dial(${num2})
Cestleposte780quivasonner.Lexpressionest$[${num1}+3].

Attentionmettredesespacesentreloprateur"+".
Quesepassetillorsqueleposte5555estdemand?
exten => _555X,n,GotoIf($[${VAR1}=100] ? label100 : label200)
exten => _5555X,n(label100), Set(VAR2=${VAR1})
exten => _5555X,n(label200), Set(VAR2=${VAR1}+100)
SilavariableVAR1estgale100,nousallonsaulabellabel100,sinonnousallonsaulabel200.
Danslaprioritn(label100),lavariableVAR2estgaleaucontenudelavariableVAR1.
Danslaprioritn(label200),lavariableVAR2estgaleaucontenudelavariableVAR1+100.
DoncsiVAR1=100alorsVAR2=100sinonVAR2=200.
Commandededbuggage.

LacommandeNoOp()(NoOperation)permetdafficher,danslaconsoleAsterisk,cequisepassependantleplande
numrotation.
exten => 777, 1, Answer()
exten => 777, 2, NoOp(${CALLERID})
CelapermetdafficherlecontenudelavariableCALLERID,donclenumrodelappelant.

- 2-

ENI Editions - All rigths reserved - educ hafa

LesconfrencesMeetMe
1.Gnralits
Asteriskpermetdemettreenplacedesconfrencesdefaontrssimple:chaqueutilisateurinterneouexternepeut
doncentrerdansunespacedecommunicationddi.
Chaque confrence peut tre gre par un administrateur qui peut rendre muets des participants et mme les
expulser.
Cettefonctionnalitesttrsintressantepourlesentreprises,dunpointdevuefinancier,puisquilestdoncpossible
de faire transiter les flux de conferencing via les liens intersites dj en place, vitant ainsi de faire appel un
coteuxdispositifde"ponttlphonique"auprsdunoprateur.
Lesdplacementspeuventgalementtrerduitsdefaonconsquente.
Exemple:ConfrenceMeetMeavecborneaudioSIP

Les"MeetMe" sont mises en place laide du fichier de configuration /etc/asterisk/meetme.conf et dunappella


fonctionMeetMe()dansleplandenumrotation.
Pourlagestiondelaudioconfrence,ilestprfrablededdierunserveurautrequelautocomenluimme,
afindenepaslesurcharger.

LelienentrelesdeuxserveursseferaviauntrunkSIP,parexemple.

2.Fichierdeconfigurationmeetme.conf
Cefichierpermetdedclarerdesconfrencesdetypestatiques.
;
; Configuration file for MeetMe simple conference rooms for
Asterisk of course.
;
; This configuration file is read every time you call
app meetme()
[general]
;audiobuffers=32
; The number of 20ms audio buffers to be used when feeding audio
frames from non-Zap channels
; into the conference; larger numbers will allow for the
conference to de-jitter audio that arrives
at different timing than the conferences timing
source, but can also allow for latency in hearing
the audio from the speaker.minimum value is 2, maximum
value is 32.
;
[rooms]
;
; Usage is conf => confno[,pin][,adminpin]

ENI Editions - All rigths reserved - educ hafa

- 1-

;
conf => 900
conf => 910,6678
Danscetteconfiguration,deuxconfrencessontdfinies:la900etla910accessiblesviaunmotdepasse6678.
Lasyntaxeest:
conf => numro_confrence, options, mot_de_passe
Lesoptionssontnombreusesetlesprincipalessontlessuivantes:

i:permetdannoncerquandlespersonnesentrentouquittentlaconfrence.

c:annoncelenombredepersonnesquirejoignentlaconfrence.

p:permetauxpersonnesdequitterlaconfrenceenappuyantsur#.

m:modecouteimpossibilitdeparler.

t:modediscoursimpossibilitdcouter.

d:permetdajouteruneconfrencedemaniredynamique,partirduplandenumrotation.

s:permetdeprsenterlemenuutilisateurouadministrateursilatouche*estpresse.

-a:permetdentrerenmodeadministrateur.

3.Exempledappeluneconfrencestatique
exten => 900, 1, Answer()
exten => 900, 2, MeetMe(900)
Quandunutilisateurcomposelextension900,Asteriskleplaceautomatiquementdanslaconfrence900.
Siunautreutilisateurfaitdemme,ilentreradanslaconfrence900et,lesdeuxutilisateurspourrontalorsentrer
encommunication.Etainsidesuite.

4.Exempledappeluneconfrencedynamique
; conference utilisateur
exten => 760, 1, Answer()
exten => 760, 2, MeetMe(900,dpm,4044)
; conference orateur
exten => 761, 1, Answer()
exten => 761, 2, MeetMe(900,dt,4059)
Encomposantlenumrodeponttlphonique760,lesystmedemandelutilisateurdesaisirunmotdepassesi
4044esttap,alorslutilisateurrentredynamiquementdanslaconfrencenumro900ilpeutensortirenappuyant
surlatouche#etilnepeutpasparler,seulementcouter.
Encomposantlenumrodeponttlphonique761,lesystmedemandelorateurdelaconfrencedesaisirson
motdepasse(4059)celuicientrealorsdynamiquementdanslaconfrence900ilpeutparlerbienvidemment
maisnepeutentendrelesautresmembres.LacommandeMeetMeAdmin()permetdadministrerlaconfrence.
La syntaxe est MeetMeAdmin(numro_de_confrence, commande, utilisateur) o commande permet deffectuer une
actionsurlaconfrence:

- 2-

K:touslesutilisateurssontsortisdelaconfrence.

ENI Editions - All rigths reserved - educ hafa

k:unutilisateurestsortidelaconfrencencessiteunnumrodutilisateur.

L:laconfrenceestferme.

l:laconfrenceestouverte.

; lutilisateur 1001 est sorti de la confrence


MeetMeAdmin(900, k, 1001)
LacommandeMeetMeCount()permetdecompterlenombredeparticipantsuneconfrence.
Cettefonctionnalitestbiensouventutileauxmanagersafindemesurerlestauxdaudienceetainsireprogrammer
unenouvellesancedeconfrence,silebesoinsenfaitsentir.

5.Exemplercapitulatif
; numero pour utilisateur en coute seule avec demande
du mot de passe 4044
exten => 760, 1, Answer()
exten => 760, 2, MeetMe(900,dpm,4044)
; numero pour orateur uniquement avec demande
du mot de passe 4059
exten => 761, 1, Answer()
exten => 761, 2, MeetMe(900,dt,4059)
; numero
exten =>
exten =>
exten =>

pour
762,
762,
762,

administrer avec demande du mot de passe 9991


1, Answer()
2, Authenticate(9991)
3, MeetMeAdmin(900, K)

; numero uniquement pour manager avec demande


du mot de passe 9984
exten => 763, 1, Answer()
exten => 763, 2, Authenticate(9984)
exten => 763, 3, MeetMeCount(900)

6.GestionMeetMepartirdelaCLI
# asterisk -rvvvvv
meetme : liste les confrences actives au sein du systme
meetme kick <numro_de_confrence> : fait sortir tous les
utilisateurs de la confrence
meetme kick <numro_de_confrence> <numro_utilisateur> :
idem mais pour un utilisateur prcis
meetme lock <numro_de_confrence> : permet de verrouiller
la confrence
meetme unlock <numro_de_confrence> : permet de dvrouiller
la confrence
meetme mute <numro_de_confrence> <numro_utilisateur> :
permet de rendre muet un utilisateur prcis dans la confrence
meetme unmute <numro_de_confrence> : permet
de rendre bavard un utilisateur prcis dans la confrence

ENI Editions - All rigths reserved - educ hafa

- 3-

Audioetvido
Lutilisation des confrences audio est une application trs intressante dAsterisk mais il faut bien constater que
vouloirbtirunerunionentreplusieurspersonnesdistantesde1000Kms,sanssupportvisuelpourlesdocumentsou
sansvido,peutrapidementtrerbarbatifetainsiperdreenefficacit.
CertainesfonctionnalitspeuventtreajoutesenpriphriedelaplateformeAsterisk:

support
de
webconferencing
via
un
logiciel
adhoc,
par
(http://www.openmeetings.net)permetdeffectuerdesrunionsenligne:

exemple,

OpenMeetings

Les utilisateurs se connectent une confrence pour couter lorateur, celui qui prsente le dernier
documentmarketingparexemple,endiaporama.
En mme temps, les utilisateurs se connectent sur un lien URL afin de visualiser le document qui est
commentparlorateur.

plateformeDIMDIM(http://www.dimdim.org)permetdhbergerunsystmedewebconfrence.DIMDIMexiste
en version SAAS (version payante) ou peut tre install en version Open Source sur un serveur au sein de
lentreprise(http://ebooks.zedl.fr).
miseenplacedecommunicationviadeuxsoftphonesquipsdusupportvidolaversioncommercialedeX
Lite EyeBeam permet dobtenir une communication audio et vido, laide de simple webcam. La fentre du
basprsentelavidodelutilisateurlocaletcelleduhautlavidodelutilisateurdistant.

Lefichiersip.confdoitcontenirlinformation:videosupport=yesetlescodecsh263eth263p(allow=all).
*Lamiseen uvredune vritable plateformevidoenmodemultiutilisateursnestpasintgredansAsteriskil
estcependantpossibledobtenirunrsultatcorrectenprenantgardedeprendrebeaucoupdeprcautions:

Mettreen uvredescamrasmotorisesIPdebonnequalitoudescamrasanalogiques.

MettreenplaceunvritablerseaudequalitavecdelaQoSetsuffisammentdebandepassantecarlavido,

ENI Editions - All rigths reserved - educ hafa

- 1-

contrairementlaVoIP,esttrsconsommatrice.

- 2-

Concevoirunsystmesimpledutilisationetfacileadministrer.

ENI Editions - All rigths reserved - educ hafa

Asterisketlesbasesdedonnes
1.LabasededonnesAstDB
Lestockagededonnesauseinmmeduplandenumrotation,laidedefonctionetdevariables,atteintviteses
limitesentermedexploitation.
Asteriskpermetdestockerdesvaleurslaidedunebasededonnesinterne,AstDB(AsteriskDataBase)quiestau
formatBerkeley.
Lesdonnessontsauvegardesdansdesfamillesetsontidentifiespardescls.Cellescisontuniquesparfamille.
Il faut noter que les donnes de la base sont persistantes dans le sens o elles demeurent accessibles depuis
nimporte o dans le plan de numrotation mme aprs un reboot du serveur. La base est stocke
dans/var/lib/asterisk/astdb.
LespostesconnectssontstocksdanslabaseAstDB(clSIP/Registry).

a.AstDBdansleplandenumrotation
Exemple:crituredunevaleurdanslaclprenomdelafamilleutilisateur
${prenom}=Zoe
exten => s, 1, Set(DB(utilisateur/prenom=${prenom})
Exemple:Lecturedelavaleurdelaclprenomdelafamilleutilisateur
exten => s, 1, Set(prenom=${DB(utilisateur/prenom)})
exten => s, 2, NoOP($prenom)

b.CommandesAstDB
DBdel(famille/cl):supprimeunecldelabase.
DBdeltree(famille):supprimeunefamilledelabase.
DBget(variable=famille/cl):rechercheunevaleurdanslabase.
DBput(famille/cl=valeur):enregistreunevaleurdanslabase.
CommandesCLI
database show:affichelensembledelabaseAstDB.
database get:rechercheunevaleurdunecldunefamille.
database put:stockeunevaleurdansunecldunefamille.
database del:supprimeunecl.
database deltree:supprimeunefamille.
Exemple:noussouhaitonsutiliserAstDBpourstockerlesSDAdesutilisateurs.
Pourcela,nousallonscrerunefamilleSDAavecautantdeclsquelonadeSDAetaffecterlesnumrosdepostes
internes chaque cl. De la mme faon, nous allons crer une famille POSTE avec autant de cls que lon a de
postesinternesetaffecterlesnomsdesutilisateurs.
LamiseenplacedecetteconfigurationsefaitlaidedecommandesCLI:
CLI>
CLI>
CLI>
CLI>

database
database
database
database

put
put
put
put

SDA 0383909010 777


SDA 0383909011 778
POSTE 777 P.DUPOND
POSTE 778 J.DUPONT

Dansleplandenumrotation:
exten => 9010, 1, Set(numinterne=${DB(SDA/0383909010)})

ENI Editions - All rigths reserved - educ hafa

- 1-

exten => 9010, 2, Dial(SIP/${numinterne})


Cette base de donnes interne Asterisk est efficace pour stocker des variables mais devient vite
complexemanipulerdanslecasdestockagedegrossesquantitsdinformations.

2.LabasededonnesRealtime
LarchitectureRealtimedAsteriskARA(AsteriskRealtimeArchitecture),apparueaveclaversion1.2,permetdestocker
des informations diverses dans une base de donnes de type SQL cela peut tre les informations des fichiers
sip.conf,extensions.conf,voicemail.conf...
Lapossibilitdexternalisercegenredinformationspermetdedisposer:

dunemeilleuremisejouretdunemeilleurelisibilitdesdonnes

dviterdereloaderuneconfigurationstatiqueencasdechangement

dexternaliserlabasesurunserveurddi,diffrentduserveurAsterisk.

3.ConfigurationdeRealtimeavecunebasededonnesMySQL
a.Prrequis

Il faut au pralable avoir installer tous les packages MySQL (voir le chapitre Installation dun serveur
Asterisk).
LaccslabasepeutsefairelaidedunoutildetypephpMyadmin(http://www.phpMyAdmin.net),SQLiog
(http://www.webyog.com)ouMySQLAdmin(http://www.mysql.com)permettantdedisposerduneinterface
web:ajout,suppression,modification,interrogation.
Lepackageasteriskaddonsdoittreinstall.

b.Procduredinstallation
1.Vrifierlecontenudufichier/etc/asterisk/asterisk.confquicontientlechemindesmodules.
/etc/asterisk/asterisk.conf
[directories]
astetcdir => /etc/asterisk
astmoddir => /usr/lib/asterisk/modules
astvarlibdir => /var/lib/asterisk
astagidir => /var/lib/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run/asterisk
astlogdir => /var/log/asterisk
; Changing the following lines may compromise your security.
;[files]
;astctlpermissions = 0660
;astctlowner = root
;astctlgroup = apache
;astctl = asterisk.ctl
2.Recopierlefichierres_mysql.conf.sampledans/etc/asterisketapporterlesmodificationsvoulues.
Lefichierres_mysql.confcontientlesparamtrespourseconnecterlabase:adresseduserveur,nomdelabase
realtime,numroduport,nomdelutilisateurdelabase,motdepassedelutilisateurdelabase.
/etc/asterisk/res_mysql.conf
- 2-

ENI Editions - All rigths reserved - educ hafa

[general]
dbhost = 127.0.0.1
dbname = asterisk
dbuser = odbc
dbpass = 123456789
dbport = 3306
3.Modifierlefichier/etc/asterisk/res_odbc.conf
[asterisk]
enabled => yes
dsn => MySQL-asterisk
username => odbc
password => 123456789
pre-connect => yes

c.Modificationdufichierextconfig.conf
Lasyntaxede/etc/asterisk/extconfig.confestlasuivante:
nom de la famille => driver, nom de la base, nom de la table
[settings]
sipusers => mysql,asterisk,sip_conf
sippeers => mysql,asterisk,sip_conf
iaxusers => mysql,asterisk,iax_conf
iaxpeers => mysql,asterisk,iax_conf
queues => mysql,asterisk,queue_conf
voicemail => mysql,asterisk,voicemail_conf
;extensions => mysql,asterisk,extensions_conf
Cetteconfigurationpermetdemettreenbaselecontenudesip.conf,iax.conf,queues.conf,voicemail.conf
maispasdeextensions.conf(nousverronspourquoiplusloinilestdconseilldelefaire).

d.Crationdestablesdelatableasterisk_db
SousMySQL,lestablespeuventtrecresdirectementavecphpMyAdmin.
# structure de la table sip_conf
CREATE TABLE `sip_conf` (
`id` int(11) NOT NULL auto_increment, `name` varchar(80) NOT NULLdefault",
`host`varchar(31) NOT NULL default ", `nat` varchar(5) NOT NULL
default no,
`type` enum(user,peer,friend) NOT NULL default friend,
`accountcode` varchar(20) default NULL, `amaflags` varchar(13) default NULL,
`callgroup` varchar(10) default NULL, `callerid` varchar(80) default NULL,
`cancallforward` char(3) default yes, `canreinvite` char(3) default yes,
`context` varchar(80) default NULL, `defaultip` varchar(15) default NULL,
`dtmfmode` varchar(7) default NULL, `fromuser` varchar(80) default NULL,
`fromdomain` varchar(80) default NULL, `insecure` varchar(4) default NULL,
`language` char(2) default NULL, mailbox` varchar(50) default NULL,
`md5secret` varchar(80) default NULL, `deny` varchar(95) default NULL,
`permit` varchar(95) default NULL, `mask` varchar(95) default NULL,
`musiconhold` varchar(100) default NULL, `pickupgroup` varchar(10)
default NULL,
`qualify` char(3)default NULL, `regexten` varchar(80) default NULL,
`restrictcid` char(3) default NULL, `rtptimeout` char(3)default NULL,
`rtpholdtimeout` char(3) default NULL, `secret` varchar(80)default NULL,
`setvar` varchar(100) default NULL, `disallow` varchar(100) default all,
`allow` varchar(100) default g729;ilbc;gsm;ulaw;alaw,
`fullcontact` varchar(80) NOT NULL default ", `ipaddr` varchar(15)
NOT NULL default ",
`port` smallint(5) unsigned NOT NULL default 0, `regseconds`

ENI Editions - All rigths reserved - educ hafa

- 3-

int(11) NOT NULL default 0,


`username` varchar(80) NOT NULL default ,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `name_2` (`name`) ) TYPE=MyISAM ROW_FORMAT=DYNAMIC;
Toutescescolonnesnesontpasindispensablesetilconvientdadapterlastructuredelatableenfonction
desesbesoins.
Lefichiersip.confestalorsrduitauminimum:
[general]
context=default
rtcachefriends=yes
srvlookup=yes
port=5060
bindaddr = 0.0.0.0
disallow=all
allow=g729
allow=gsm
allow=alaw
allow=ulaw
language=fr
notifyringing=yes
country=fr
videosupport=yes
Latablesip_confcontientautantdelignesdenregistrementsquedecomptessip:
Name

Host

Secret

Context

777

dynamic

8890

Default

g729gsmalamulaw

780

dynamic

3618

Internal

g729gsmalawulaw

#structure de la table voicemail_conf


CREATE TABLE `voicemail_conf` (
`uniqueid` int(11) NOT NULL auto_increment,
`customer_id` int(11) NOT NULL default 0, `context` varchar(50)
NOT NULL default ",
`mailbox` int(5) NOT NULL default 0, `password` varchar(4)
NOT NULL default 0,
`fullname` varchar(50) NOT NULL default ", `email` varchar(50)
NOT NULL default ",
`pager` varchar(50) NOT NULL default ", `stamp` timestamp(14)
NOT NULL,
`attach`varchar(3) NOT NULL default no,
`saycid` varchar(3) NOT NULL default yes,
PRIMARY KEY (`uniqueid`), KEY `mailbox_context` (`mailbox`,`context`)
) TYPE=MyISAM;
# structure de la table iax_conf
CREATE TABLE iax_conf (
name varchar(30) primary keyNOT NULL,
username varchar(30),
type varchar(6) NOT NULL,
secret varchar(50),
md5secret varchar(32),
dbsecret varchar(100),
notransfer varchar(10),
inkeys varchar(100),
outkey varchar(100),
auth varchar(100),
accountcode varchar(100),
amaflags varchar(100),

- 4-

allow

ENI Editions - All rigths reserved - educ hafa

callerid varchar(100),
context varchar(100),
defaultip varchar(15),
host varchar(31) NOT NULL default dynamic,
language char(5),
mailbox varchar(50),
deny varchar(95),
permit varchar(95),
qualify varchar(4),
disallow varchar(100),
allow varchar(100),
ipaddr varchar(15),
port integer default 0,
regseconds integer default 0
);
CREATE UNIQUE INDEX iax_conf_username_idx ON iax_conf(username);
# Structure de la table extensions_conf
CREATE TABLE `extensions_conf` (
`id` int(11) NOT NULL auto_increment,
`context` varchar(20) NOT NULL default ", `exten` varchar(20)
NOT NULL default ",
`priority` tinyint(4) NOT NULL default 0, `app` varchar(20)
NOT NULL default ",
`appdata` varchar(128) NOT NULL default ",
PRIMARY KEY (`context`,`exten`,`priority`),
KEY `id` (`id`) ) TYPE=MyISAM;
PouractiverlalectureduplandenumrotationdansRealtime,lefichierextensions.confdoitcontenirlacommande:
switch =>realtime/contexte@famille
La commande switch
extconfig.conf.

=>

realtime/@ sapplique au contexte courant et la famille extensions du fichier

Pourdmarrerleplandenumrotation,ilvafalloirlancerautantdecommandesMySQLquilyauradelignesdansle
plandenumrotation:
INSERT
777,
INSERT
777,

INTO `extensions_conf` VALUES (1, appels_entrants,


1, Answer)
INTO `extensions_conf` VALUES (2, appels_entrants,
2, Dial, SIP/777)

Imaginons un plan de numrotation complexe compos dappels macro ou de commandes qui en appellent
dautresceladevientvitefastidieuxetillisible.
Toutes les informations relatives aux utilisateurs dAsterisk se mettent facilement en base de donnes,
alorsqueleplandenumrotationextensions.confdoittrelaisssousformestatique.

Il est possible de crer au pralable un script "scriptasterisk.sql" au format SQL (create database...) et
dimportercescriptdansMySQLlaidedelacommande#mysqluodbcp</.../scriptasterisk.sql.

e.ApplicationRealtime()
Realtime peut tre utilis dans extensions.conf laide de lapplication Realtime() qui permet dinteragir avec le
contenudelabasededonnes.
Syntaxe
Realtime(<famille>, <colonne>, <valeur>, <prefix>)

Famille:nomdelatabledelabasededonnes(voirextconfig.conf)

Colonne:champssurlequellarequteesteffectue

ENI Editions - All rigths reserved - educ hafa

- 5-

Valeur:valeurquiestrecherchedanslechampsColonne

Prefix:nomdutableauderetour

InterrogationRealtime
Lors dun appel au poste 777, la commande SQL excute est : Select * from sip_conf where name=777. La
variable${var_name}contientlersultatdecetterequte,sousformedetableau.
exten => 777, 1, Realtime(sipusers, name, 777, var_)
Lecontenuduchampsndelenregistrementestobtenudanslavariable${VAR_champs_n}.
Par exemple, si nous souhaitons rcuprer le contenu du champs Context, il faut affecter ${VAR_Context} une
nouvellevariable.
exten => 777, 2, Set(Contexte=${VAR_Context})
MisejourRealtime
LapplicationRealtimeUpdate()permetdeffectuerdesmisesjourdanslabasededonnes.
LexemplecidessouspermetdelancerlacommandeSQL:
Update asterisk_db SET username= William WHERE name = 777
exten => 777, 1, RealtimeUpdate(sipusers, name, 777, username,
William)

- 6-

ENI Editions - All rigths reserved - educ hafa

Introduction
Nous avons vu au cours des chapitres prcdents comment installer un serveur Asterisk monosite et cest
probablementcequilfautdjcommencerparfaireavantdeselancerdansleraccordementdesitesdistants.
Un des intrts dune solution de VoIP et de pouvoir profiter du rseau de donnes priv pour faire passer les
communicationsinternesetilexisteplusieursfaonsderalisercettenouvelleinfrastructure:

utiliserunsystmeAsteriskcentralis

utiliserunsystmeAsteriskdepetitetaillesurlesitedistant

utiliserlesdeuxsolutionsprcdentesavecunserveurprimaireetunserveursecondaire.

Nous serions tent de dire que tout dpend des contraintes budgtaires et surtout du rseau de donnes dj en
place.Cependant,unecertitudedemeure:ilfautresterprudenteninstallantunserveurAsterisksurlessitesdetaille
importanteettoujoursavoirdessolutionsdesecours.

ENI Editions - All rigths reserved - educ hafa

- 1-

InterconnexiondeserveursAsteriskavecdestrunks
1.TrunksSIP
Supposons ici une entreprise disposant dun sige Paris, dune usine de production Nancy et dun site de
commercialisationBordeaux.Lestroissitesontrespectivement50,250et30personnesetdisposentdunrseau
VPNavecQoS.

a.SitedeParis
Leplandenumrotationestbtisurtroischiffres:de100199.LIPduserveurAsteriskest192.168.1.100.

sip.conf

...
[104]
context=default
host=dynamic
type=friend
username=104
[105]
context=default
host=dynamic
type=friend
username=105
...

extensions.conf

Toutappelcommenantparlechiffre2,suividedeuxautreschiffres,estroutsurlecanalSIP/192.168.2.100,donc

ENI Editions - All rigths reserved - educ hafa

- 1-

envoyversleserveurSIPdeNancy.
Toutappelcommenantparlechiffre1,suividedeuxautreschiffres,estroutsurlecanalSIP/192.168.3.100,donc
envoyversleserveurSIPdeBordeaux.
...
exten => _2XX, 1, dial(SIP/192.168.2.100/${EXTEN})
exten => _3XX, 1, dial(SIP/192.168.3.100/${EXTEN})

b.SitedeNancy
Leplandenumrotationestbtisurtroischiffres:de200299.LIPduserveurAsteriskest192.168.2.100.

sip.conf

...
[204]
context=default
host=dynamic
type=friend
username=204
[205]
context=default
host=dynamic
type=friend
username=205
...

extensions.conf

Toutappelcommenantparlechiffre1,suividedeuxautreschiffres,estroutsurlecanalSIP/192.168.1.100,donc
envoyversleserveurSIPdeParis.
Toutappelcommenantparlechiffre1,suividedeuxautreschiffres,estroutsurlecanalSIP/192.168.3.100,donc
envoyversleserveurSIPdeBordeaux.
...
exten => _1XX, 1, dial(SIP/192.168.1.100/${EXTEN})
exten => _3XX, 1, dial(SIP/192.168.3.100/${EXTEN})

c.SitedeBordeaux
Leplandenumrotationestbtisurtroischiffres:de300399.LIPduserveurAsteriskest192.168.3.100.

sip.conf

...
[304]
context=default
host=dynamic
type=friend
username=304
[305]
context=default
host=dynamic
type=friend
username=305
...

extensions.conf

Toutappelcommenantparlechiffre1,suividedeuxautreschiffres,estroutsurlecanalSIP/192.168.1.100,donc

- 2-

ENI Editions - All rigths reserved - educ hafa

envoyversleserveurSIPdeParis.
Toutappelcommenantparlechiffre2,suividedeuxautreschiffres,estroutsurlecanalSIP/192.168.2.100,donc
envoyversleserveurSIPdeNancy.
...
exten => _1XX, 1, dial(SIP/192.168.1.100/${EXTEN})
exten => _2XX, 1, dial(SIP/192.168.2.100/${EXTEN})

2.TrunksIAX
LorsqueplusieursAsteriskdoiventtreinterconnects,ilestprfrabledelesmettreenrelationlaideduprotocole
IAXquiatdveloppspcifiquementceteffet.
IAXpermetderaliserdestrunksIAXmaisaussideconnecterdesclientsIAXentreeux(tlphonesetsoftphones).
Lefichier/etc/asterisk/iax.confpermetdeconfigurerlestrunksIAX.
Il comprend toujours une section [general] permettant de dfinir certains paramtres du protocole IAX (codecs,
bandepassante,modetrunk...)etautantdesectionsquilyauradutilisateursIAX.
Dans notre exemple, les utilisateurs IAX que sont Paris, Nancy et Bordeaux sont dfinis en tant que friend : ils
peuventdoncmettreetrecevoirdesappels.

a.SitedeParis

iax.conf

[general]
qualify = yes
disallow = all
allow = ulaw; gsm; ilbc
port = 4569
trunk = yes
context = internal
[nancy]
username = nancy
type = friend
secret = nancy_usine
context = internal
host = 192.168.2.100
[Bordeaux]
username = bordeaux
type = friend
secret = bordeaux_com
host = 192.168.3.100

extensions.conf

...
; gestion du trunk IAX vers Nancy
exten => _2XX,1,Dial(IAX2/nancy:nancy_usine@192.168.2.100/${EXTEN})
; gestion du trunk IAX vers Bordeaux
exten => _3XX,1,Dial(IAX2/bordeauxbordeaux_com@192.168.3.100/${EXTEN})
CommandesCLI:

iax2 show registrypermetdevisualiserltatdesenregistrementsIAX

iax2 show userspermetdevisualiserlesutilisateursIAXdfinis

ENI Editions - All rigths reserved - educ hafa

- 3-

iax2 reloadpermetderechargerlaconfigurationIAXutiliserencasdemodificationdeiax.conf.

b.SitedeNancy

iax.conf

[general]
qualify = yes
disallow = all
allow = ulaw; gsm; ilbc
port = 4569
trunk = yes
context = internal
[paris]
username = paris
type = friend
secret = paris_siege
host = 192.168.1.100
[bordeaux]
username = bordeaux
type = friend
secret = bordeaux_com
host = 192.168.3.100

extensions.conf

exten => _1XX,1,Dial(IAX2/paris:paris_siege@192.168.1.100/${EXTEN})


exten => _3XX,1,Dial(IAX2/bordeaux:bordeaux_com@192.168.3.100/${EXTEN})

c.SitedeBordeaux

iax.conf

[general]
qualify = yes
disallow = all
allow = ulaw; gsm; ilbc
port = 4569
trunk = yes
context = internal
[paris]
username = paris
type = friend
secret = paris_siege
host = 192.168.1.100
[nancy]
username = nancy
type = friend
secret = nancy_usine
host = 192.168.2.100

extensions.conf

exten => _1XX,1,Dial(IAX2/paris:paris_siege@192.168.1.100/${EXTEN})


exten => _2XX,1,Dial(IAX2/nancy:nancy_usine@192.168.2.100/${EXTEN})

- 4-

ENI Editions - All rigths reserved - educ hafa

InterconnexiondeserveursAsteriskenmodeprimaire/secondaire
1.Gnralits
Dans la configuration prcdente, chaque site dispose de son propre PBX et chaque client SIP et/ou IAX nest
enregistrquunefoissurleserveurdesonsite.
Cette configuration est problmatique en terme de scurit car si le PBX local vient ne plus fonctionner, les
utilisateursdusitenepeuventplusutiliserleservicedetlphonie.
Pourcetteraison,nousallonsprfrerconstruireunearchitectureredondeavecunserveurAsteriskcentralissur
Nancycarcestleplusgrossiteentermedutilisateursceserveurseraconsidrcommetantleprimaire.
Les sites de Paris et de Bordeaux auront des serveurs locaux et seront considrs comme tant secondaires. Ces
serveursnedeviendrontactifsquelorsqueleprimairenefonctionneraplusouserainjoignable.
Biensr,ilfaudrachoisirdestlphonespermettantdeconfigurerunserveurprimaireetunserveursecondaire.

2.Paramtrage
a.Siteprimaire(Nancy)

extensions.conf

...
;gestion
[paris]
...
exten =>
exten =>
...
;gestion
exten =>

du site de Paris

104, 1, Dial(SIP/104)
105, 1, Dial(SIP/105)
des appels sortants par le routeur passerelle de Paris
_0[1-6]XXXXXXXX,1,Dial(SIP/192.168.1.253/${EXTEN})

;gestion du site de Bordeaux


[bordeaux]
...
exten => 304, 1, Dial(SIP/304)
exten => 305, 1, Dial(SIP/305)

ENI Editions - All rigths reserved - educ hafa

- 1-

;gestion des appels sortants par le routeur passerelle de Bordeaux


exten => _0[1-6]XXXXXXXX,1,Dial(SIP/192.168.3.253/${EXTEN})

b.Sitesecondaire(Paris)

extensions.conf

...
exten => 104, 1, Dial(SIP/104)
...
exten => _0[1-6]XXXXXXXX,1,Dial(SIP/192.168.1.253/${EXTEN})

c.Sitesecondaire(Bordeaux)

extensions.conf

...
exten => 104, 1, Dial(SIP/104)
...
exten => _0[1-6]XXXXXXXX,1,Dial(SIP/192.168.3.253/${EXTEN})

3.ConfigurationduThomsonST2030
LetlphoneTHOMSONST2030permetunparamtragedunserveurSIPprimaireetdunserveurSIPsecondaire.
CetteconfigurationatvueauchapitreInstallationdunserveurAsterisk.

- 2-

ENI Editions - All rigths reserved - educ hafa

InterconnexiondePBXhtrognes
Dansbeaucoupdecas,nousseronsconfrontsaubesoindinterconnecterdesutilisateursraccordssurdesautocoms
IPdenaturesdiffrentes.LeseulprrequisestquecesdernierssoientIPetcomprennentleprotocoleSIPouQSIG
(protocoledesignalisationbassurleprotocoleduRNIS).

1.InterconnexionentreunAsterisketunCallManagerCISCO
a.Schmadeprincipe

b.ConfigurationductAsterisk
LeplandenumrotationdumondeAsteriskestbassurtroischiffresen8XX.Afindepouvoirpasserdesappels
internesverslemondeCisco,ilvafalloirdfiniruntrunkSIP(eneffet,lecallManagerestcapablededialogueren
SIP)etindiquerunprfixespcifique(le5parexemple)quipermettraAsteriskderouterlesappelsverslesite
distant.LeplandenumrotationdumondeCiscoestsurquatrechiffresen6XXX.

extensions.conf

...
exten => _56XXX, 1, Dial(SIP/192.168.54.10:5062/${EXTEN:1})
...
Tous les appels commenant par le prfixe 5, suivi du chiffre 6 puis suivi de trois chiffres seront routs vers le
serveur dont lIPest192.168.54.10(ici,considronsquil sagitduserveurCallManager)surleportSIP5062(et
nonpasleportstandarddeSIP5060)celavapermettredenepasentrerenconflitaveclefonctionnementinterne
duCallManagerdanssonpropremonde.
Enfin,nousnepassonsqueleparamtre${EXTEN}privdupremierchiffre,soitenralitles4chiffressuivants
6XXX.

c.ConfigurationductCisco
VocabulaireCisco
UnDevicePhonecorresponduntlphone.
UnDevicePoolsignifieunmodle.
UnCallingsearchSpace(CSS)dfinitlespatternsautorissounon.
UnePartitionestunensembledepatterns.
UneRgionreprsenteunezonegographiquequipermetdedfinirlescodecsetlabandepassantevido.
ENI Editions - All rigths reserved - educ hafa

- 1-

AccsauCallManager
Le Call Manager, install sur une plateforme Windows, coute le protocole SIP sur les ports 5060 et 5062. La
configuration du PBX se fait laide de paramtrage via la console dadministration du Call Manager
(https://192.168.54.10/ccmadmin).

Paramtrage
Prenonscommeexemplelesdonnessuivantes.
Nous allons dfinir une rgion R_SIEGE, un device pool DP_SIEGE, un calling search space CSS_SIEGE et des
patterns.
CrationdutrunkT_Asterisk:Device/trunk

DeviceName:T_Asterisk

Description:trunkAsterisk

DevicePool:DP_SIEGE

DestinationAdress:192.168.1.100(IPduserveurAsterisk)

DestinationPort:5060

IncomingPort:5060

OutgoingTransportType:UDP

CrationdunepartitionP_Asterisk:RoutePlan/ClassOfControl/Partition

PartitionName:P_Asterisk

Description:partitionAsterisk

CrationduneCSSCCS_SIEGE:RoutePlan/ClassOfControl/CallingSearchSpace:

- 2-

ENI Editions - All rigths reserved - educ hafa

CallingSearchSpaceName:CSS_SIEGE

Description:DroitsdappelspourmembresduSIEGE

AvailablePartitions:ajouterP_Asteriskauxpartitionsexistantes

CrationduneRoutePattern:RoutePlan/RouteHunt/RoutePattern

RoutePattern:5XXX

Partition:P_Asterisk

Description:RP_Asterisk

GatewayorRouteList:T_Asterisk

RouteOption:Routethispattern

DiscardDigits:PreDot(permetdesupprimerle5)

Crationde2tlphones:Device/Phone

Description:Directeur

DevicePool:DP_SIEGE

CallingSearchSpace:CSS_SIEGE

DirectoryNumberConfiguration

DirectoryNumber:6100

Partition:P_SIEGE

CallingSearchSpace:CCS_SIEGE

DevicePool:DP_SIEGE

Description:DirecteurAdjoint

DevicePool:DP_SIEGE

CallingSearchSpace:CCS_SIEGE

DirectoryNumberConfiguration

DirectoryNumber:6101

Partition:P_SIEGE

CallingSearchSpace:CCS_SIEGE

DevicePool:DP_SIEGE

Dautres systmes htrognes peuvent sinterconnecter nos deux mondes Asterisk et Cisco Call Manager. Il

ENI Editions - All rigths reserved - educ hafa

- 3-

faudraveillerfaireventuellementmigrerlesautresPBXsenversionSIP(pointdaccsSIP),cequipeutsavrer
coteuxsilssontnombreux.
Il faudra alors faire un compromis entre une migration ou non et dans ce dernier cas, il faudra alors prendre en
comptelefacteuramortissementavantderemplacerpurementetsimplementlautocom.
Il est galement possible de faire appel au protocole QSIG (signalisation au point Q) qui permet des autocom
diversdecommuniquerentreeux.Lamiseen uvredecettearchitecturencessiteunrouteurspcifique.

- 4-

ENI Editions - All rigths reserved - educ hafa

Introduction
Nousavonsvu,aucoursdeschapitresprcdents,lesbasespourconstruireunserveurAsteriskmaisilexisteencore
biendautresoutilspermettantdamliorerleservicedetlphoniesurIPetpermettantlesfonctionnalitssuivantes:

avoirdesstatistiquesdesappels

disposerdinterfacesgraphiquesdemanagementdelaconfiguration

grerlesfaxentrants

interconnecterdesapplicationsexternesausystme.

ENI Editions - All rigths reserved - educ hafa

- 1-

StatistiquesavecCDR
UndespointsimportantsduncahierdeschargesdeTVoIPestdedisposerdoutilspermettantdeffectuerlataxation
etdonclafacturationautrementditdobtenirdesrapportssurlesappelsmisetreus:
numroappelantnumroappelduredelappeldatedelappelheuredelappel
Un outil de taxation peut savrer trs utile si le PBX est utilis pour le compte de plusieurs socits et quun
mcanisme de refacturation interne doit tre mis en uvre. Il prend videmment tout son sens si le PBX est un
centrex destination de clients finaux auprs desquels une facturation du service est vidente. Dans ce cas, le
businessmodeldpendfortementducontratsouscritaveclesoprateurstlcomsquifournissentlaccsaurseau
commut. ce jour, en France, aucun oprateur ne propose, en revente de type marque blanche et sous forme
standardise,unforfaitillimitpourlesappelsverslesfixesenlocaletnational.

1.RetrouverlesCDR
Le systme Asterisk dispose de plusieurs moyens permettant de retrouver la liste des appels passs et/ou reus.
Ces appels sont en fait des tickets ou CDR pour Call Data Records. Pour cela, il ne faut pas oublier de charger les
modulescorrespondants.

a.OutildebaseMaster.csv
Lenregistrement des tickets seffectue dans un fichier au format CSV, dans le fichier /var/log/asterisk/cdr
csv/Master.csv,quiestunjournaldelogsdetouslesappelsdusystme.Cemcanismencessitelechargementdu
modulecdr_cvs.soetleparamtragedufichier/etc/asterisk/cdr.conf.Leschampsenregistrersontprsentsdans
lefichier/etc/asterisk/cdr_custom.csvetncessitentdechargerlemodulecdr_custom.so.
Contenudufichiercdr_custom.conf
;
; Mappings for custom config file
;
; to get your csv output in a format tailored to your liking,
uncomment the following
; and look for the output in the cdr-custom/Master.csv file (usually
in /var/log/asterisk).
;
;
[mappings]
Master.csv => ${CSV_QUOTE(${CDR(clid)})},${CSV_QUOTE(${CDR(src)})},
${CSV_QUOTE(${CDR(dst)})},${CSV_QUOTE(${CDR(dcontex
t)})},${CSV_QUOTE(${CDR(channel)})},${CSV_QUOTE(${CDR(dstchannel)})},
${CSV_QUOTE(${CDR(lastapp)})},${CSV_QUOTE(${CDR(la
stdata)})},${CSV_QUOTE(${CDR(start)})},${CSV_QUOTE(${CDR(answer)})},
${CSV_QUOTE(${CDR(end)})},${CSV_QUOTE(${CDR(duratio
n)})},${CSV_QUOTE(${CDR(billsec)})},${CSV_QUOTE(${CDR(disposition)})},
${CSV_QUOTE(${CDR(amaflags)})},${CSV_QUOTE(${CDR(
accountcode)})},${CSV_QUOTE(${CDR(uniqueid)})},${CSV_QUOTE(${CDR
(userfield)})}
;Simple.csv => ${CSV_QUOTE(${EPOCH})},${CSV_QUOTE(${CDR(src)})},$
{CSV_QUOTE(${CDR(dst)})}
Le fichier est au format texte donc peu lisible il convient de le traiter dans un tableur afin de rcuprer des
informationslisiblesetexploitablespoureffectuerdestris.
ExempledefichierdelogsMaster.csvnonformat:

ENI Editions - All rigths reserved - educ hafa

- 1-

b.EnregistrementdesticketsdansunebaseMySQL
Ce mcanisme ncessite le chargement du module cdr_mysql.so et le paramtrage du fichier de
configuration/etc/asterisk/cdr_addon_mysql.conf.

c.EnvoidesticketslAMI
Celaseffectuevialemodulecdr_manager.soetleparamtragedufichier/etc/asterisk/cdr_manage.conf.

d.EnvoidesticketsunserveurdauthentificationRadius(FreeRadiusparexemple)
Cesystmencessitedechargerlemodulecdr_radius.soetleparamtragedufichier/etc/asterisk/cdr.conf,section
[radius].
Bien souvent, le serveur Radius, dj prsent dans lentreprise, est diffrent de celui dAsterisk (cest
dailleurssouhaitable).LagestiondunradiusenmodeWebpeutseffectuer via loutilPhpMyAdminplutt
quenlignedecommande.

Pourchargerunmodule,ilfautlespcifierdanslefichier/etc/asterisk/modules.confetpenserrecharger
leserveurAsterisk.

2.ChampsCDR
LesCDRpeuventtrestocksdansunebaseMySQLousurunserveurSyslog.
LeschampsCDRpardfautdAsterisksont:

- 2-

accountcode (numro de compte utiliser pour la facturation ou lanalyse, lien avec laccountcode de
sip.conf)

src(numrodelappelant)

dst(numrodelappel)

dcontext(contextededestinationduplandenumrotationutilis)

clid(informationsconcernantlappelant,callerID)

channel(canalutilispourleroutagedelappelverslappelant)

dstchannel(canalutilispourleroutagedelappelverslappel)

ENI Editions - All rigths reserved - educ hafa

lastapp(ApplicationAsteriskDial,VoiceMail...)

lastdata(paramtresutilissparlapplication)

start(heuredappel)

answer(heuredelarponsedelappel)

end(heuredefindappel)

duration(duredelappelensecondes)

billsec(dureutilisepourlafacturationensecondes)

disposition(dernierstatutdelappel)

amaflags(IndicateursAnswseredMachineAccounting:DEFAULT,OMIT,BILLING,DOCUMENTATION)

userfield(voirlafonctionSetCDRUserField()).

3.Applicationsdefacturation(Billing)
SetAMAflags(flags):permetdepositionnerlesflagsAMA
; le compte 777 est positionn avec un flag de facturation
exten => 777, 1, SetAMAFlags(billing)
ForkCDR():permetdecrerunnouveauCDRpourlappelencours
exten => 777, 1, ForkCDR()
NoCDR():permetdedsactiverleCDRpourlappelencours
exten => 777, 1, NoCDR()
exten => 777, 2, Dial(SIP/777)
ResetCDR():permetderemettreleCDRvierge
; avec loption w, copie du CDR en cours
exten => 777, 1, ResetCDR(w)
; efface le CDR en cours
exten => 778, 1, ResetCDR()
SetAccount(account):permetdedfiniruncomptepourleCDR
; pour chaque appel vers le 777, cest le compte 1000 qui
apparatra comme accountcode dans le CDR
exten => 777, 1, Set(CDR(accountcode)=1000)
exten => 777, 1, 2, dial(777)
SetCDRUserField(value):permetdespcifierunevaleurpersonnaliseauchampuserfieldduCDR
; Chaque appel de 777 va enregistrer la valeur promo 2007
dans le champ userfield
exten => 777, 1, Set(CDR(userfield)=promo 2007)
AppendCDRUserField(value):permetdemettrejourleuserfieldduCDR
exten => 777, 1, Set(CDR(userfield)=promo 2007)
...

ENI Editions - All rigths reserved - educ hafa

- 3-

exten => 777, 2, Set(ufield=$cdr(userfield)})


...
exten => 777, 3, Set(CDR(userfield)=ufield prolongation)
Lechampuserfieldauradonccommevaleur"promo2007prolongation"

4.Asteriskstatistiques
Loutilasteriskstat(http://www.areski.net/asteriskstatv2/asteriskstatv2_0_1.tar.gz)permetdefournir,enmode
Web, diffrents rapports et graphiques concernant le trafic des appels sur Asterisk. Toutes les informations sont
basessurlefichierMaster.csv.

a.Installation

Tlchargementdufichierasteriskstatv2_0_1.tar.gzdanslerpertoire/usr/src

Installationdufichier:tarzxvfasteriskstatv2_0_1.tar.gz

Modificationdufichier/usr/src/asteriskstatv2_0_1/lib/defines.php

WEBROOT:URLdelapplication(Exemple:http://localhost/asteriskstat/).
FSROOT:cheminquicontientlapplication(Exemple:/usr/src/asteriskstat/v2).
HOST:nomduserveurdebasededonnes:(Exemple:localhost).
PORT:portdelabasededonnes:Exemple:3306(casdunebaseMySQL).
USER:nomdutilisateurpouraccderlabase(Exemple:root).
PASS:motdepassedelutilisateur(Exemple:password).
DBNAME:nomdelabasededonnes(Exemple:asteriskcdr).
DB_TYPE:typedebasededonnes(support:mysqloupostgres).
DB_TABLENAME:nomdelatablecontenantlesCDR(Exemple:cdrtable).

b.Fonctionnalits
LoutilAsteriskstatpermetde:

recherchertouslesappelspardate,pardestination,parsource,pardure(CDRREPORTS).

comparerdesappelssurunepriodepouvantallerde14jours(CALLSCOMPARE).

fournirungraphiqueparmoissurunepriodepouvantallerde17mois(MONTHLYtraffic).

fournirlachargejournalireenminutesparheure(DAILYLOAD).

Exempledetraficmensuelsurleposte714(Monthlytrafic)

- 4-

ENI Editions - All rigths reserved - educ hafa


Exemplederecherchedesappelsmisparleposte714enJuin2007

Exempledelistedesappelsmisparleposte714

ENI Editions - All rigths reserved - educ hafa

- 5-

ExempledestatistiquespourexportationCDR

Asteriskstatnesembleplusgurevoluer.Ladernireversiondatede2005maisrestenanmoinstrs
oprationnelle.

- 6-

ENI Editions - All rigths reserved - educ hafa

Outilsgraphiquesdemanagement
IlexistedenombreuxoutilstierspermettantdadministrerAsteriskdefaongraphique.

1.EncomplmentdAsterisk
DenombreuxoutilsplusoumoinsgraphiquespermettentdegreroudenrichirlesystmeAsterisk,parmilesquels,
nouspouvonsciter:

Druid

AstGUIclient/Vicidial

FreePBX(exAsterisk@Home)

AsteriskGUI(inclusdansAsteriskNOW)

TrixBox(exAsterisk@Home)

LditeurcanadienScopServ,avecsapuissanteversionScoptel2.0distribueparlintgrateurbelgeEyePea.

a.DRUID
DruidestuneplateformedegestiondunserveurAsterisk,viauneinterfacegraphique(uneGUIpourGraphicalUser
Interface) permettant daccder ladministration des services de tlphonie (ajout de tlphones, ajout
dutilisateurs,ajoutdetrunk,ajoutdebotesvocales).Cestgalementunoutilpermettantlagestiondeprsence
vialeprotocoleJabber.
DruidexisteprincipalementenversionOpenSourceedition:DruidOSEendatede2009(Druid2.0.0)
ExempledinterfacepourDruidOSE:

Attention,laversiondeDruidestproposeenformatISO,autrementdit,enformattoutenunetilest
donc impossible dajouter seulement Druid comme GUI sur un serveur Asterisk existant au risque de tout
casser.NousconseillonsdoncdemonterunserveurDRUIDdetestafinjustementdeffectuertoutlemaquettage
indispensable avant la mise en production. Il est bien videmment possible de modifier les fichiers de
configurationsdAsteriskDruidlamainpuisquelesystmesappuiesurunnoyauLinuxCentOS.

ENI Editions - All rigths reserved - educ hafa

- 1-

Rfrences:http://www.voiceroute.org/
Documentation(versionDruidOSE1.3.0)pourallerplusloin:
http://www.myseez.eu/wpcontent/uploads/2009/04/doc_druid.pdf

b.AstGUIclient/Vicidial
AstGUIclient est une alternative GUI pour administrer Asterisk 1.2 et Asterisk 1.4 et Vicidial est un systme
permettantdegrerlescentresdappels.
Vicidial utilise la technique de la chambre de confrence pour la gestion de la mise en relation agent / client : un
clientconnectestdirectementmisenrelationaveccettechambredeconfrenceolagentlyattend.Cettesolution
esttrsrpanduepourlagestiondeloffshore.
LesprincipalesfonctionnalitsdeVicidialsontlessuivantes:

Gestiondesappelsentrants/sortants

Enregistrementsdetouslesappels

SystmeIVRavecconfigurationweb

Reporting

ConnexiondagentsdistantsviaInternet

Transfertdappels

Appels prdictifs (Mode de gnration automatique dappels sortants selon un algorithme anticipant la
disponibilitdagents)

IntgrationCTIavecVtiger(applicationCRMOpenSourceutilisableenmodeWeb)

Interfacewebagent/admin

IntgrationavecQueuemetrics,outildestatistiquesdesfilesdattente.

AvantdelancerlinstallationdupackageAstGUIclient+Vicidial,ilestindispensabledavoirinstallAsterisk.
# cd /usr/src
# mkdir astguiclient
# cd astguiclient
# wget http://sourceforge.net/projects/astguiclient/files/
astguiclient_2.2.1.zip/download
# perl install.pl
<... Rpondre par Y pour la plupart des fonctions ...>
<... tlchargement de fichier de sons / musique classique ...>
# wget http://astguiclient.sf.net/conf.gsm
# cp conf.gsm /var/lib/asterisk/sounds/park.gsm
LinstallationncessiteensuitedecrerunebasededonnesMySQL.
Laccsauxdiffrentesinterfacesseffectueenmodeweb:

http://10.10.10.15/agc/astguiclient.php.

http://10.10.10.15/vicidial/admin.php.

http://localhost/agc/vicidial.php.

Rfrences:

- 2-

ENI Editions - All rigths reserved - educ hafa

http://astguiclient.sourceforge.net/astguiclient.html.
http://astguiclient.sourceforge.net/scratch_install.html.
http://astguiclient.sourceforge.net/vicidial.html.
http://www.vicidial.com/(sitedelditeurdelasolution).
ExempledcranagentVicidial:

ExempledinterfacedadministrationdeVicidial:

ENI Editions - All rigths reserved - educ hafa

- 3-

LutilisationdeAstGUIclientnadintrtquesinoussouhaitonsutiliserlesystmeVicidial.

c.FreePBX
FreePBX (anciennement AMP Portal pour Asterisk Management Portal) est une interface graphique permettant de
piloterleserveurAsterisk.
Rfrence:http://www.freepbx.org,versionfreepbx2.7.0

d.AsteriskGUI
Cette interface de gestion graphique (Graphical Interface User) est uniquement disponible sur Asterisk 1.4. Elle
permetdegrerlaconfigurationduserveurlaidedunmenuconvivialetnonplusparlintermdiairedesfichiersde
commandes.
CetoutilestinclusaveclinstallationdAsteriskNOW,ladistributiondeDIGIUM.
Rfrence:http://www.asteriskguru.com/tutorials/asterisk_gui.html
Il faut choisir au pralable entre une gestion du serveur via un outil graphique ou via les fichiers de
commandes en pratique, les deux modes sont incompatibles car loutil graphique ajoute ses propres
instructionsdanslesfichiersetceladevientviteillisible.

2.AlternativesAsteriskclassique
a.TrixBox
TrixBoxestcequenouspouvonsappelun"intgr"danslesensoilsagitdunevritabledistributioncomprenant
systme dexploitation et logiciel Asterisk, le tout prt lemploi. Depuis Mai 2006, Trixbox est le nouveau nom
dAsterisk@Home.CesystmeestunebonnebasepourlespersonnesdsirantinstallerunpremierserveurAsterisk,

- 4-

ENI Editions - All rigths reserved - educ hafa

enbootantpartirduCDdinstallation.
TrixBoxexisteenversionprofessionnelle(TrixBoxPro)etenversioncommunautaire(TrixBoxCE,v.2.804stable).
UneapplianceTrixBoxestgalementcommercialise.
Rfrence:http://www.trixbox.org/,http://www.trixbox.com

ENI Editions - All rigths reserved - educ hafa

- 5-

Gestiondesfaxs
Asterisk fournit un service de dtection de fax entrants il va donc tre possible, grce ce mcanisme, de grer
automatiquementlarceptiondesfax:

dtectiondunfaxentrant

stockagedufaxdansunfichiersurleserveurAsterisk

transformationdufichierenformatTIFF

impressiondufax

transformationdufichierTIFFenformatPDFettransfertdufaxenpicejointedanslemaildunutilisateur.

Principederceptiondefax

1.Installation
Pour quAsterisk puisse traiter le fax reu en le transfrant lextension spciale "fax", il faut que les librairies
SPANDSPsoientinstalles:

VrificationquelalibrairieLibtiffestbieninstalle(voirlechapitreInstallationdunserveurAsterisk).Libtifffournit
lapplicatiftiff2pspermettantletraitementdesfichiersTIFF.

Tlchargementdufichierspandsp0.0.6pre17.tgz(http://www.softswitch.org).

Dcompactagedufichieretcompilation.

LabibliothqueSPANDSPvafournirdeuxapplicationsessentielles:

#
#
#
#
#
#

SendFAXpourlenvoidefax.

ReceiveFAXpourlarceptiondefax.

cd /usr/src
tar zxvf /usr/src/spandsp-0.0.6pre17.tgz
chown -R root:root spandsp-0.0.6/
cd spandsp-0.0.2/
./configure
make
ENI Editions - All rigths reserved - educ hafa

- 1-

# make install

Vrifier que le module appfax est bien install dans le make menuselect en faisant un ./configure dans le
rpertoiredinstallationdAsterisk
RecompilationdAsterisk(indispensable).

# cd/usr/src/asterisk-1.6.2.8
# make clean; make; make install
Cela permet Asterisk de disposer des deux applications de rception (app_rxfax) et de transmission des
faxs(app_txfax).NouspouvonslevrifierdanslaCLIentapantlacommandeCLI>showapplications

ActivationdeladtectiondefaxsurlescanauxZapteldanslefichier/etc/asterisk/chan_dahdi.conf.

faxdetect=both

bothsignifiequeladtectionestautoriseenentrantetensortant.

Enfin,enrelanantAsterisk(/etc/init.d/asteriskrestart),ilestpossibledevrifierquelesapplicationsdefaxsont
prsentes.

# asterisk-nvu
CLI>core show applications
:
ReceiveFAX : Receive a Fax
SendFAX : Send a Fax

2.Utilisation
Casn1:
Touslesfaxsdtectssontsystmatiquementenvoyslimprimantepardfautduserveurpuisensuitesupprims
duserveur.
[appels_entrants]
; lapplication Answer() dtecte un fax; si cest le cas,
elle passe la main lextension fax
exten => s, 1, Answer()
...
exten => fax, 1, Set(fax_tif=/var/spool/faxes/${CALLERIDNUM}.tif)
exten => fax, 2, ReceiveFAX(${fax_tif})
exten => fax, 3, system(tiff2ps ${fax_tif} | lpr)
exten => fax, 4, system(rm ${fax_tif})
Casn2:
Tous les faxs sont envoys en pice jointe en format PDF un email unique standard@masociete.com puis
supprims.
[globals]
EMAIL_STANDARD=standard@masociete.com
[appels_entrants]
exten => s, 1, Answer()
...
exten => fax, 1, Set(fax_tif=/var/spool/faxes/${CALLERIDNUM}.tif)
exten => fax, 2, ReceiveFAX(${fax_tif})

- 2-

ENI Editions - All rigths reserved - educ hafa

exten => fax, 3, System(tiff2ps -2eaz | ps2pdf ${fax_tif}.pdf -)


exten => fax, 4, System(ps2pdf ${fax_tif}.ps ${fax_tif}.pdf
exten => fax, 5, System(mime-construct --to ${EMAIL_STANDARD}
--subject "Fax de ${fax_tif}" --attachment fax.pdf
--type application/pdf --file ${fax_tif}.pdf)
exten => fax, 6, system(rm ${fax_tif})
Lastandardisteaaccscetteboteemailetredirigelesmailsdefaxreusverslespersonnesdestinataires.
Lapplication ps2pdf permet de transformer le fichier en format PDF. Elle doit tre installe sous Linux.
SpandspsaitmettreetrecevoirdesfaxsuniquementenG711.

Casn3:
Certains utilisateurs ont un numro SDA qui va galement servir la rception directe de fax Walter dispose par
exemple de la SDA 03.83.54.89.87 et du numro de poste interne 779. Sil reoit un fax sur cette SDA, Asterisk le
transfreradirectementsaboteemailmaissilreoitunappeltlphonique,cestleposte779quivasonner.
[globals]
EMAIL_WALTER=walter@masociete.com
[appels_entrants_walter]
exten => 8947, 1, Answer()
exten => 8947, 2, Dial(SIP/779,20,r)
exten => fax, 1, Set(fax_tif=/var/spool/faxes/${CALLERIDNUM}.tif)
exten => fax, 2, ReceiveFAX(${fax_tif})
exten => fax, 3, System(tiff2ps -2eaz | ps2pdf ${fax_tif}.pdf -)
exten => fax, 4, System(ps2pdf ${fax_tif}.ps ${fax_tif}.pdf
exten => fax, 5, System(mime-construct --to ${EMAIL_WALTER}
--subject "Fax de ${fax_tif}" --attachment fax.pdf
--type application/pdf --file ${fax_tif}.pdf)
exten => fax, 6, system(rm ${fax_tif})

3.missiondefax
LmissiondefaxestplusfastidieusequelarceptionmaispossiblesousAsterisk:
; Nous souhaitons envoyer le fax demande info produits
vers le numro de fax 08805800820
; le fichier DIP_14062007_779 a t cr en format TIFF
et plac dans le rpertoire /var/spool/faxes
exten => 08805800820, 1, Setvar(fax_779=/var/spool/faxes/
DIP_14062007_779.tif)
exten => 08805800820, 2, SendFAX(/var/spool/faxes/${fax_779})|caller
Il est conseill dutiliser un vrai serveur de fax comme Hylafax (http://www.hylafax.org) pour effectuer la
gestion de faxs. Certains routeurs CISCO (vu comme une gateway h323) savent dtecter la rception de
faxsetlesroutervershylafaxenT38(protocoledeFaxOverIP).

T38estencoursdimplmentationdansAsterisk.

4.FaxsansDAHDIavecNVFaxDetect
IlestpossibledegrerlesfaxsurdesliensSIP/IAXsanspasserparuneinterface"matrielle"DAHDI.Celapeuttre
lecassileserveurAsterisknedisposepasdecartesinternesmaisuniquementdetrunkSIPparexemple.Pourcela,
ilfaututiliserlapplicationNVFaxDetect()dontlemoduleestinstallerindpendamment.
Exempledutilisationdansledialplan:

ENI Editions - All rigths reserved - educ hafa

- 3-

[macro-fax]
exten => S, 1, Answer()
exten => S, 2, Playtones(ring)
exten => S, 3, NVFaxDetect()
[Fax]
exten => S,1, ReceiveFAX(${FAXFILE}.tif)

- 4-

ENI Editions - All rigths reserved - educ hafa

ProgrammationAGI
AGI (Asterisk Gateway Interface) est une interface permettant de faire communiquer le plan de numrotation
(extensions.conf)avecdesprogrammesextrieursAsterisk,critsavecdeslangagesdeprogrammationaussidivers
quePHP,Perl,Python,C,shellLinux.

1.Principe
AGIestmatrialisparlcrituredescriptsquisontexcutsdansleplandenumrotation.
chaquelancementdunscriptAGI,Asteriskenvoieauscriptunensembledevariablesavecleursvaleurs.Lorsque
toutes les variables sont mises, Asterisk envoie une ligne vide pour prciser au script quil peut commencer ce
pourquoiilatcrit(suitedinstructions).
LescriptenvoielescommandesetAsteriskrenvoieauscript,pourchaquecommandemise,unerponse.

2.AppelduscriptAGI
Par dfaut, les scripts sont crs et stocks dans /var/lib/asterisk/agibin (cela permet de ne pas mentionner le
chemincompletdappeldesscripts).Ilfaudratoujoursquelesscriptsdisposentdudroitdexcution(chmodugo+x
monscript.agi).
Ensuite,lescriptselancedelamaniresuivante:
exten => 777, 1, Answer()
exten => 777, 2, AGI(monscript.agi|argument1|argument2...)

Lesargumentssontoptionnels.

3.tapesdanslardactionduscriptmonscript.agi
Lasyntaxeduscriptdoitsuivrelelangagedeprogrammationutilis.
a)RcuprationdesvariablesmisesparAsterisk.Leplussimpleestdelesrcuprerdansuntableau.
b)critureducodeetdialoguelaidedecanauxdecommunication.

4.InteractionentreAsterisketAGI
Troiscanauxdecommunicationssontutilisspourpermettreledialogue:
STDIN:AGIlitlecanalSTDINsurlequelAsteriskmetsesinformations.
STDOUT:AGIcritsesinformations(commandes,variables)surlecanalSTDOUT,quiseronttransmisesAsterisk.
STDERR:AGIcritdesdonnessurlecanalSTDERR,desfinsessentiellementdedebuggage.Lersultatsaffiche
danslaCLI.
ExempledinteractionAGI/Asterisk

ENI Editions - All rigths reserved - educ hafa

- 1-

5.ApplicationsdetypeAGI
AGI():permetdecontrlerleplandenumrotation.Seulslescanauxactivssontutilisables.
EAGI():permetenplusdelirelecanalson.
DeadAGI():permetdecontrlerlescanauxdsactivs(hangup).
FastAGI():permetauscriptdtreutilissurunserveurAsteriskdistant.
exten => 777, 1, AGI(agi://192.168.2.100/monscript.agi)

6.VariablesmisesparAsterisk
Cesvariablescommencenttoujoursparagi_:
agi_channel:Zap/11(canal)
agi_callerid:777(numroducallerid)
agi_calleridname:sdeon(nomducallerid)
agi_context:default(contextdanslequellescriptestappel)
agi_extension:777(extensiondanslequellescriptestappel)
agi_priority:2(priorit)
agi_language:fr(language)

7.ListedescommandesAGI
CettelistepeuttreobtenuevialaCLIentapantlacommandeCLI>showagi
IlexisteunebonnetrentainedecommandesAGIquipeuventdonctreutilisesdanslesscripts:channelstatus,get
data,getvariable,sendtext,streamfile,recordfile,saynumber...

8.Dbogagedesscripts
ToutprogrammeurabesoindecontrlerlersultatdesesscriptsetilpeutlefairedanslaCLI:
CLI > agi debug

- 2-

ENI Editions - All rigths reserved - educ hafa

9.ExempledescriptAGI
Cescript,critenlangageC,permetAsteriskdedireundeuxtrois.
#include <stdio.h>
main() {
char
line[80];
/* use line buffering */
setinebuf(stdout);
setinebuf(stderr);
/* read and ignore AGI environment */
while (1) {
fgets(line,80,stdin);
if (strlen(line) <= 1) break;
}
/* Send asterisk a command */
printf("SAY DIGITS 123 \"\"\n");
/* Read response from Asterisk and show on console */
fgets(line,80,stdin);
fputs(line,stderr);
}
Source:http://www.bitflipper.ca/Documentation/agi.html

10.ExemplesdutilisationdAGI

Recherchedelapersonnequiappelle,enfonctiondesonnumro.
Pour cela, il faut constituer au pralable un annuaire LDAP ou une base de donnes MySQL permettant
davoirlacorrespondanceNumrodetlphone<>prnomnom.
ChaqueappelinternedclencheunscriptAGIquivaeffectuerlarechercheetprsenterlenomdelappelant.

Routagedunfaxversuneboteauxlettres.

ENI Editions - All rigths reserved - educ hafa

- 3-

Introduction
Ce chapitre prsente quelques applications incontournables dAsterisk qui viendront enrichir les fonctionnalits dj
prsentes:

AsteriskManager

SynthtiseurvocalFestival

SystmedeserveurvocalinteractifIVR

ClicktoDial

AsteriskdisposegalementdautresfonctionnalitsintressantescommeDUNDI(http://www.dundi.com),lesystme
dannuairepeertopeerquipermetdetrouverunnumrodetlphoneparinterrogationdeserveurs.

ENI Editions - All rigths reserved - educ hafa

- 1-

MANAGER
1.Gnralits
Asterisk Manager est une fonctionnalit intressante pour les dveloppeurs car le "manager" fournit une API
(ApplicationProgramInterface)permettantdesprogrammesexternesdeseconnecterAsterisketainsidepouvoir
lancerdescommandes,liredesvnementsdAsteriskautraversdesocketsTCP/IP.
Avant de pouvoir utiliser les fonctionnalits du manager, il est ncessaire de
fichier/etc/asterisk/manager.confquicontientlesinformationsrelativeslaconnexionlinterface.

paramtrer

le

2.Fichierdeconfiguration

manager.conf

; Asterisk Call Management support


[general]
; activation du service Manager
enabled = yes
; port TCP par dfaut
port = 5038
bindaddr = 0.0.0.0
; Each user has a section labeled with the username
; so this is the section for the user named "asterisk_user" and
asterisk_user_bis
[asterisk_user]
secret = 3615
; blocage de toutes les adresses pouvant accder au manager
deny=0.0.0.0/0.0.0.0
; autorisation des adresses pouvant accder au manager
permit=209.16.236.73/255.255.255.0
permit=127.0.0.1/255.255.255.0
; attribution des permissions de lecture lutilisateur
read = system,call,log,verbose,command,agent,user
; attribution des permissions dcriture lutilisateur
write = system,call,log,verbose,command,agent,user
[asterisk_user_bis]
secret = 8982
deny=0.0.0.0/0.0.0.0
permit=209.16.236.73/255.255.255.0
permit=127.0.0.1/255.255.255.0
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user

3.ConnexionauManager
IlestncessairedarrteretderedmarrerAsteriskafindelancerlaconnectivitaumanager.Afindetesterlebon
fonctionnement,ausensrseau,nouspouvonslancerlacommandetelnet localhost 5038.
Leprincipeestlesuivant:

crationdunesocket

connexionauportTCP5038dumanager

envoidelacommandeautraversdelasocket

ENI Editions - All rigths reserved - educ hafa

- 1-

attentedelarponsedumanager

traitementdesdonnes.

Silutilisateurasterisk_usersouhaiteaccderaumanager,ilvadoncdevoirtabliruneconnexionentablissantun
accsvialeportTCP5038etseconnecterenutilisantlaction"Login".
PourenvoyerdescommandesauManager,ilfaututiliserlasyntaxesuivante:
Action: <action type>
<Key 1>: <Value 1>
<Key 2>: <Value 2>
...
Variable: <Variable 1>=<Value 1><CRLF>
Variable: <Variable 2>=<Value 2><CRLF>
...
<CRLF>
Dansnotreexempledelogin,lejeudecommandeestdonclesuivant:
Action: login
Username: asterisk_user
Secret: 3615
Exemple:checdelaconnexion
[root@asterisk]# telnet localhost 5038
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is ^].
Asterisk Call Manager/1.0
Action: login
Username: Pierre
Secret: 3615
Response: Error
Message: Authentication Required
Exemple:succsdelaconnexion
[root@asterisk]# telnet localhost 5038
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is ^].
Asterisk Call Manager/1.0
Action: login
Username: asterisk_user
Secret: 3615
Response: Success
Message: Authentication accepted
Lorsque lutilisateur est correctement authentifi et connect, il va pouvoir lancer dautres actions et visualiser les
vnementsdAsterisk.
Attention,AsteriskManagernedisposepasdinterfacedecommandetellequelaCLIetilatconupour
quecesoitunprogrammeexternequilancelesactions.

- 2-

ENI Editions - All rigths reserved - educ hafa

4.LesactionsduManager
NouspouvonsvisualiserlensembledescommandesduManagerdepuislaCLIenlanantlacommande:
CLI> show manager commands
asterisk1*CLI> show manager commands
Action

Privilege

Synopsis

--------------AbsoluteTimeout

-----------call,all

---------Set Absolute Timeout

AgentCallbackLo

agent,all

Sets an agent as
logged in by callback

AgentLogoff

agent,all

Sets an agent as no
longer logged in

Agents

agent,all

Lists agents and their status

ChangeMonitor

call,all

Change monitoring filename


of a channel

Command

command,all

Execute Asterisk CLI Command

DBGet

system,all

Get DB Entry

DBPut

system,all

Put DB Entry

Events

<none>

Control Event Flow

ExtensionState

call,all

Check Extension Status

Getvar

call,all

Gets a Channel Variable

Hangup

call,all

Hangup Channel

IAXnetstats

<none>

Show IAX Netstats

IAXpeers

<none>

List IAX Peers

<none>

List available manager


commands

Logoff

<none>

Logoff Manager

MailboxCount

call,all

Check Mailbox Message Count

MailboxStatus

call,all

Check Mailbox

Monitor

call,all

Monitor a channel

Originate

call,all

Originate Call

ParkedCalls

<none>

List parked calls

Ping

<none>

Keepalive command

QueueAdd

agent,all

Add interface to queue.

QueuePause

agent,all

Makes a queue member


temporarily unavailable

QueueRemove

agent,all

Remove interface from queue.

Queues

<none>

Queues

QueueStatus

<none>

Queue Status

ListCommands

ENI Editions - All rigths reserved - educ hafa

- 3-

Redirect

call,all

Redirect (transfer) a call

SetCDRUserField

call,all

Set the CDR UserField

Setvar

call,all

Set Channel Variable

SIPpeers

system,all

List SIP peers (text format)

SIPshowpeer

system,all

Show SIP peer (text format)

Status

call,all

Lists channel status

StopMonitor

call,all

Stop monitoring a channel

ZapDialOffhook

<none>

Dial over Zap channel


while offhook

ZapDNDoff

<none>

Toggle Zap channel


Do Not Disturb status OFF

ZapDNDon

<none>

Toggle Zap channel


Do Not Disturb status ON

ZapHangup

<none>

Hangup Zap Channel

ZapShowChannels

<none>

Show status zapata channels

ZapTransfer

<none>

Transfer Zap Channel

5.DescriptiondtailledesactionsduManager
Pourvisualiserendtaillasyntaxeduneaction,nouspouvonslancerlacommandesuivantedanslaCLI:CLI > show
manager command,suiviedunomdelaction.
Exemple:syntaxedelactionCommandduManager
asterisk*CLI> show manager command Command
Action: Command
Synopsis: Execute Asterisk CLI Command
Privilege: command,all
Description: Run a CLI command.
Variables: (Names marked with * are required)
*Command: Asterisk CLI command to run
ActionID: Optional Action id for message matching.

LactionCommandduManagerpermetdelancerunecommandedelaCLI.

6.AppelduManagerviaunprogrammePHP
a.Gnralits
Supposonsqueleprogrammetest_channels.php,critenPHP,permettedevisualiserlescanauxutiliss.
Lesinteractionsentreceprogrammeetlemanagervontdonctrelessuivantes:

mission(programme/manager)

Action: Command
Command: show channels

- 4-

ENI Editions - All rigths reserved - educ hafa

rception(manager/programme)

Response: Follows
Privilege: Command
Channel
0 active channels
0 active calls
--END COMMAND--

Location

State

Application(Data)

b.Contenuduscripttest_channel.php
#!/usr/bin/php -q
<?php
$asterisk_server = "127.0.0.1";
// Port utiliser par le manager asterisk (manager.conf)
$asterisk_manager_port = "5038";
// User pour le manager asterisk (manager.conf)
$asterisk_manager_user = "asterisk_user";
// Mot de passe pour le manager asterisk (manager.conf)
$asterisk_manager_pass = "3615";
// Commande CLI a passer pour afficher la version d*
$agent_command = "show channels";
$socket = sockopen($asterisk_server,$asterisk_manager_port);
fputs($socket, "Action: Login\r\n");
fputs($socket, "UserName: $asterisk_manager_user\r\n");
fputs($socket, "Secret: $asterisk_manager_pass\r\n\r\n");
fputs($socket, "Action: Command\r\n");
fputs($socket, "Command: ".$agent_command."\r\n\r\n");
do
{
$line = fgets($socket, 4096);
echo $line. "\n";
}while ( !eregi("END COMMAND",$line) );
fputs($socket,"Action: Logoff\r\n\r\n");
fclose($socket);
?>

c.Rsultat
[root@asterisk]# php test_channel1.php
Content-type: text/html
X-Powered-By: PHP/4.3.9
Asterisk Call Manager/1.0
Response: Success
Message: Authentication accepted

Response: Follows
Privilege: Command
Channel

Location

State

Application(Data)

0 active channels

ENI Editions - All rigths reserved - educ hafa

- 5-

0 active calls
--END COMMAND-Lesscriptspeuventtrecritslaidedediffrentslangagedeprogrammation:MACOSX,C#,C++,Java,
Perl, PHP, Python, Ruby, Tcl. Enfin, citons lapplication FOP (Front Operator Panel) qui est une des
possibilitsoffertesparlAsteriskmanager.

- 6-

ENI Editions - All rigths reserved - educ hafa

Festival
1.Gnralits
Festivalestunmoteurdetraductiontexttospeech(delcritloral)dveloppparlUniversitdEdimbourgauCSTR
(TheCentreforSpeechTechnologyResearch).CetteapplicationOpenSourcepermetdoncdetransformerdutexteen
paroleetdeffectuerunelectureaudiolinterlocuteurauboutdelaligne.IlestenvisageabledinstallerFestivalsur
unserveurAsteriskafindefournirdesfonctionnalitssupplmentairescommeparexemple:

lectureaudiodesemails.

lectureaudioduchiffredaffairesjournalier,viaunprogrammelancparFestival...

2.InstallationduserveurFestival
Il existe essentiellement deux mthodes dinstallation de Festival : par installation dun paquet Debian (le plus
simple)ouparcompilationpartirdesfichierstar.gz(pluslourd).
Casduneinstallationtraditionnelle(casleplussimple)

InstallationpartirdunpaquetDebian(aptget).

# apt-get install festival


Lecture des listes de paquets... Fait
Construction de larbre des dpendances
Lecture des informations dtat... Fait
Les paquets supplmentaires suivants seront installs :
esound-clients esound-common festlex-cmu festlex-poslex festvoxkallpc16k
libaudiofile0 libesd0 libestools1.2
Paquets suggrs :
festival-freebsoft-utils festival-gaim pidgin-festival esound
Les NOUVEAUX paquets suivants seront installs :
esound-clients esound-common festival festlex-cmu festlex-poslex
festvox-kallpc16k libaudiofile0 libesd0 libestools1.2
0 mis jour, 9 nouvellement installs, 0 enlever et 6 non mis
jour.
Il est ncessaire de prendre 7637ko dans les archives.
Aprs cette opration, 20,8Mo despace disque supplmentaires
seront utilis
s.
Souhaitez-vous continuer [O/n] ?

Modificationdufichierdeconfiguration/usr/share/festival/festival.scmetajoutducontenusuivantlafindu
fichier.

;;; Command for Asterisk begin


(define (tts_textasterisk string mode)
"(tts_textasterisk STRING MODE) Apply tts to STRING. This function is
specifically designed for
use in server mode so a single function call may synthesize the string.
This function name may be added to the server safe functions."
utt.send.wave.client (utt.wave.resample (utt.wave.rescale (utt.synth
(eval (list Utterance Text string))) 5) 8000)))
;;; Command for Asterisk end

Lessonsrestitussontenlangueanglaise.

ENI Editions - All rigths reserved - educ hafa

- 1-

3.Fichierdeconfiguration
Cefichierest/etc/asterisk/festival.conf.

festival.conf

; Festival Configuration
;
[general]
;
; Host which runs the festival server (default : localhost);
;
host=localhost
;
; Port on host where the festival server runs (default : 1314)
;
port=1314
;
; Use cache (yes, no - defaults to no)
;
;usecache=yes
;
; If usecache=yes, a directory to store waveform cache files.
; The cache is never cleared (yet), so you must take care
of cleaning it
; yourself (just delete any or all files from the cache).
; THIS DIRECTORY *MUST* EXIST and must be writable from the
asterisk process.
; Defaults to /tmp/
;
;cachedir=/var/lib/asterisk/festivalcache/
;
; Festival command to send to the server.
; Defaults to: (tts_textasterisk "%s" file)(quit)\n
; %s is replaced by the desired text to say. The command MUST
end with a
; (quit) directive, or the cache handling mechanism
will hang. Do not
; forget the \n at the end.
;
festivalcommand=(tts_textasterisk "%s" file)(quit)\n
;

4.DmarrageduserveurFestival
LeserveurFestivaldoittredmarrdelafaonsuivante:
# festival 2>&1 >/dev/null &
LacommandepermettantdevisualiserentempsrellecontenudecequisepassesousFestivalest:
# festival -- server
server
Sun Jun 20 22:11:24 2010 : Festival server started
on port 1314
MaisFestivaldisposegalementdunmodeinteractifquipeuttreactivenlanantlacommande:
# festival
Festival Speech Synthesis System 1.96:beta:release July 2004
Copyright (C) University of Edinburgh, 1996-2004. All rights
reserved.
For details type `(festival_warranty)
Festival> (tts "fichier-exemple")
festival> (SayText Bonjour )

- 2-

ENI Editions - All rigths reserved - educ hafa

Danslefichierfestival.scm,danslesaccesslist,ilfautremplacerlocalhostparlenomdedomainecompletdu
serveur(voirlacommandehostname),souspeinedunproblmedaccsauserveurFestival.

5.Festivaldansleplandenumrotation
LacommandeFestival()permetdexcuterlemoteurtexttospeech.
Exemplen1:
Sur appel au poste numro 1000, le texte Bonjour, vous tes sur la messagerie de Monsieur L., veuillez laisser
votremessageestsynthtis.Enpressantsurlatouche*,lutilisateurmetfinlacommandeFestival().
exten => 1000, 1, Answer()
exten => 1000, 2, Festival(Bonjour, vous tes sur la messagerie
de Monsieur L., veuillez laisser votre message, *)
exten => 1000, 3, Hangup()
Exemplen2:
Lecontenude${CALLERIDNAME}(numrodelappelant)estprononcsurappelaupostenumro1000.
exten => 1000, 1, Answer()
exten => 1000, 2, Festival(Bonjour ${CALLERIDNAME})
exten => 1000, 3, Hangup()

6.Restitutionduson
LacommandeFestivalpermetdenvoyerletextelappelantmaisneffectuepaslarestitutionverslacartesonil
faututiliserunecommandederedirectionduson.
exten => 1000, 1, Answer()
; la sortie texte de la commande echo est redirige
vers lentre standard de Festival
exten => 1000, 2, System(echo "Bonjour, bienvenue
en France" | Festival -tts)
exten => 1000, 3, Dial(SIP/1000)
exten => 1000, 4, Hangup()
Le programme FranFest est un complment Festival pour obtenir une restitution des sons en langue
franaise.Source:http://www.pollocknageoire.net/esdffm/franfest.html.

ENI Editions - All rigths reserved - educ hafa

- 3-

IVR
IVR signifie Interactive Voice Response . En fait, il sagit dutiliser le serveur Asterisk en adaptant le plan de
numrotation(extensions.conf)pourpermettreuneinteractionentrelesystmeetlappelantlinteractionsefaisant
alorslaidedestouchesdutlphone.
Pour mettre en uvre un serveur vocal interactif ou un service vocal interactif, il faut disposer de deux lments
essentiels:lalgorithmedelIVRetlesmessagesenregistrssousformedefichier.
Exemple:scnariodemiseenuvredunIVRdehotlinetechnique
Lenumrodappelnationaldelahotlineestparexemple0825888888.Lorsquunclientcomposecenumro,ilentend
unmessagedaccueilluiinvitantpresserlatouche1silveutdclarerunincidentdata,latouche2silveutdclarer
unincidentvoixetlatouche3pourtoutautredemandetechnique.
Nousdevonsdoncavoirplusieursmessages,sousformedefichiersauformatadquat(idalementenformat.wavou
enformat.gsm).

Message1(fichieracceuil_ivr.wav):Bonjour,bienvenueauservicetechniquedelasocitMASOCIETE,pour
dclarerunincidentdata,tapez1,pourdclarerunincidentvoix,tapez2,pourtoutautreincident,tapez3
Message2(fichierincident_data.wav):Sivoussouhaitezdclarerunnouvelincidentdata,tapez5sivous
souhaitezconnatreltatdavancementdunincidentdatadjenregistr,tapez6.
Message3(fichierincident_voix.wav):Sivoussouhaitezdclarerunnouvelincidentvoix,tapez7sivous
souhaitezconnatreltatdavancementdunincidentvoixdjenregistr,tapez8.
Message4(fichierautre_incident.wav):Mercidepatienter,uninterlocuteurtechniquevaprendreencharge
votreappel.

Lesfichiersdoiventtrestockssous/var/lib/asterisk/soundspourquilspuissenttrelusparAsterisk.
Ensuite,ilfautcrirelalogiquedansleplandenumrotation:
Le numro en 0825 a t rout en amont sur un numro SDA local loprateur prsentant ici les quatre derniers
chiffresauserveur(3012parexemple).
exten => 3012, 1, Answer()
exten => 3012, 2, Background(accueil_ivr)
exten
exten
exten
exten
exten
exten
exten

=>
=>
=>
=>
=>
=>
=>

1,
2,
3,
5,
6,
7,
8,

1,
1,
1,
1,
1,
1,
1,

Playback(incident_data)
Playback(incident_voix)
Playback(autre_incident)
Dial(SIP/${poste_nouvel_incident_data})
Dial(SIP//${poste_ancien_incident_data})
Dial(SIP/${poste_nouvel_incident_voix})
Dial(SIP/${poste_ancien_incident_voix})

Il est possible dutiliser des sousmenus, dans le plan de numrotation, afin de simplifier lalgorithme de lIVR et
rutiliser des numros de touches pour dclencher des actions diffrentes. Ainsi, le Message 2 pourrait devenir Si
vous souhaitez dclarer un nouvel incident data, tapez 1 si vous souhaitez connatre ltat davancement dun
incidentdatadjenregistr,tapez2.
exten => 3012, 1, Answer()
exten => 3012, 2, Background(accueil_ivr)
exten
exten
exten
exten

=>
=>
=>
=>

1,
2,
3,
3,

1,
1,
1,
2,

Goto(data, s, 1)
Goto(voix, s, 1)
Playback(autre_incident)
Dial(SIP/${poste_autre_incident})

[data]
exten => s, 1, Playback(incident_data)
exten => 1, 1, Dial(SIP/${poste_nouvel_incident_data})
exten => 2, 1, Dial(SIP/${poste_ancien_incident_data})
[voix]

ENI Editions - All rigths reserved - educ hafa

- 1-

exten => s, 1, Playback(incident_voix)


exten => 1, 1, Dial(SIP/${poste_nouvel_incident_voix})
exten => 2, 1, Dial(SIP/${poste_ancien_incident_voix})
Bienvidemment,ilestencorepossibledenrichirceplandenumrotationenincluantlesextensionsspciales
tetipermettantdegrerlesentresinvalidesetlestemporisations(voirlechapitreConceptionduplande
numrotation).
Il est galement possible dindiquer au plan de numrotation la possibilit denregistrer, via le tlphone, des
messages.Dansnotreexemple,lappelaunumro555dclenchecemcanisme.
; les fichiers denregistrements au format gsm (le format
dAsterisk) sont mis dans /temp/sounds
Exten => 555,1,Wait(3)
; il faut presser sur la touche # pour stopper lenregistrement
Exten => 555,2,Record(/temp/sounds/message1:gsm)
Exten => 555,3,Wait(3)
; le fichier est rejou
Exten => 555,4,Playback(/temp/sounds/message1)
Exten => 555,5,wait(3)
Exten => 555,6,Hangup()
Lefichier/temp/sounds/message1.gsmdoittrecopidansledossier/var/lib/asterisk/sounds,silveuttrelu
parAsterisk.

- 2-

ENI Editions - All rigths reserved - educ hafa

ClickToDial
LafonctionnalitClicktodialestlapossibilitdedclencherunappeltlphoniquesansavoircomposerlenumro.
Lemeilleurexempledutilisationestlappeldecettefonctionviaunnavigateurquiprsenteunepageweblistanttous
les numros dutilisateurs enregistrs sous Asterisk (les appels). Un simple clic sur le numro choisi dclenche une
sonneriesurlepostedelappelantainsiquesurletlphonedelappel.

1.Installation

cd/temp/asterisk/clicktocall

wgethttp://downloads.voipjots.com/scripts/clicktocall.zip

unzipclicktocall.zip

cpclicktocall.php/var/www/html/clicktocall.php

cd/var/www/html

2.Fichierclicktocall.php
Apportonslesmodificationsadquates(host,manager,channel,context):
<html>
<head>
<title>Click-to-Call</title>
</head>
<body>
<?
#Click-To-Call script brought to you by VoipJots.com

#-----------------------------------------------------------------------------#edit the below variable values to reflect your system/information


#-----------------------------------------------------------------------------#specify the name/ip address of your asterisk box
#if your are hosting this page on your asterisk box,
then you can use
#127.0.0.1 as the host IP. Otherwise, you will need
to edit the following
#line in manager.conf, under the Admin user section:
#permit=127.0.0.1/255.255.255.0
#change to:
#permit=127.0.0.1/255.255.255.0,xxx.xxx.xxx.xxx ;(the ip
address of the server this page is running on)
$strHost = "127.0.0.1";
#specify the username you want to login with (these users are
defined in /etc/asterisk/manager.conf)
#this user is the default AAH AMP user; you shouldnt need to change, if youre
using AAH.
#$strUser = "admin";
$strUser = "asterisk_user";
#specify the password for the above user
#$strSecret = "amp111";
$strSecret = "3615";

ENI Editions - All rigths reserved - educ hafa

- 1-

#specify the channel (extension) you want to receive the call


requests with
#e.g. SIP/XXX, IAX2/XXXX, ZAP/XXXX, etc
#$strChannel = "IAX2/250";
# Poste qui effectue lappel
$strChannel = "SIP/1000";
#specify the context to make the outgoing call from. By
default, AAH uses from-internal
#Using from-internal will make you outgoing dialing rules apply
#$strContext = "from-internal";
# Context qui figure dans extensions.conf
$strContext = "internal";
#specify the amount of time you want to try calling the
specified channel before
hangin up
$strWaitTime = "30";
#specify the priority you wish to place on making this call
$strPriority = "1";
#specify the maximum amount of retries
$strMaxRetry = "2";
#------------------------------------------------------------------------------#Shouldnt need to edit anything below this point
to make this script work
#-----------------------------------------------------------------#get the phone number from the posted form
# Numro de lappel saisi dans la page Web
$strExten = $_POST[txtphonenumber];
#specify the caller id for the call
$strCallerId = "Web Call <$strExten>";
$length = strlen($strExten);
if ($length == 4 && is_numeric($strExten))
{
$oSocket = fsockopen($strHost, 5038, $errnum, $errdesc)
or die("Connection to ho
st failed");
fputs($oSocket, "Action: login\r\n");
fputs($oSocket, "Events: off\r\n");
fputs($oSocket, "Username: $strUser\r\n");
fputs($oSocket, "Secret: $strSecret\r\n\r\n");
fputs($oSocket, "Action: originate\r\n");
fputs($oSocket, "Channel: $strChannel\r\n");
fputs($oSocket, "WaitTime: $strWaitTime\r\n");
fputs($oSocket, "CallerId: $strCallerId\r\n");
fputs($oSocket, "Exten: $strExten\r\n");
fputs($oSocket, "Context: $strContext\r\n");
fputs($oSocket, "Priority: $strPriority\r\n\r\n");
fputs($oSocket, "Action: Logoff\r\n\r\n");
fclose($oSocket);
?>
<p>
<table width="300" border="1" bordercolor="#630000"
cellpadding="3" cellspacing=
"0">
<tr><td>
<font size="2" face="verdana,georgia" color=
"#630000">We are currently trying to call you. Please be
patient, and wait for
your phone to ring!<br>If your phone does not ring
after 2 minutes, we apologize, but must either be out, or
already on the

- 2-

ENI Editions - All rigths reserved - educ hafa

phone.<br><a href="<? echo $_SERVER[PHP_SELF] ?>">Try Again</a></font>


</td></tr>
</table>
</p>
<?
}
else
{
?>
<p>
<table width="300" border="1" bordercolor="#630000"
cellpadding="3" cellspacing=
"0">
<tr><td>
<font size="2" face="verdana,arial,georgia" color=
"#630000">Entrer un numero de telephone</font>
<form action="<? echo $_SERVER[PHP_SELF] ?>"
method="post">
<input type="text" size="20" maxlength=
"11" name="txtphonenumber
"><br>
<input type="submit" value="APPEL">
</form>
</td></tr>
</table>
</p>
<?
}
?>
</body>
</html>

3.Rsultat
Dansunnavigateur,lesitehttp://192.168.1.100/clicktocall.phpaffichelcransuivant(ici,leserveurquihbergela
pagewebesten192.168.1.100).

Ilsuffitalorsdesaisirlenumrodappelsouhait.Leposte1000(notreposte)vaalorssonnerpuisaudcrochage
deceluici,leposte1002vaalorssonnergalement.CettefonctionnalitestraliselaideduManageretdesa
commandeOriginatequieffectuelappel.

4.ClicktoDialendirectavecleManager
Lescommandessuivantespermettentdeffectuerlammechosequelefichiercidessus:
# telnet 127.0.0.1 5038
Action: Login
Username: asterik_user
Secret: 3615
Action: Originate
Channel: SIP/1000
Exten: SIP/1002
Context: internal
Priority: 1

ENI Editions - All rigths reserved - educ hafa

- 3-

5.Commentaires
Cetexemplenestcertespasparfaitcarlenumrodappelant(1000)estcodendurdansleprogrammemaisnous
pouvons imaginer quelques amliorations possibles du code clicktodial.php coupl avec un annuaire LDAP. Cela
permettraitparexempledefournir,surunepageWeb,lensembledesutilisateursdunesocit,deffectuerunlogin
utilisateur (numro dappelant) avec enregistrement dans un cookie pour viter de refaire cette manipulation
longueurdejourne,puisdelancerleclicktodialverslappelslectionn.

- 4-

ENI Editions - All rigths reserved - educ hafa

Introduction
Un centre dappel (callcenter en anglais) permet dapporter une assistance aux utilisateurs. Il se matrialise par
diffrentslments:

une plateforme matrielle et logicielle permettant de traiter en masse les appels entrants de la part des
clients
unoudesnumrosdappeldetype08X(souventpayantpourleclientetrmunrateurpourletitulairedeces
numros)
plusieurshotliners,quipsdemicrocasquesetutilisantuneoudesapplicationsdetypeCTI
des outils de monitoring des appels entrants, des fins de statistiques et damlioration de la qualit du
serviceclient.

ENI Editions - All rigths reserved - educ hafa

- 1-

Lesbesoinsfonctionnels
Avanttout,ilesttrsimportantdesavoircommentlesappelsentrantsseronttraits:

Lors de lappel, le client expose son problme et la personne qui a pris lappel est celle qui va traiter son
problme directement cette mthode a lavantage que la rsolution de la demande peut seffectuer
rapidement mais a linconvnient que cest au client de supporter le cot de la communication. Dans ce cas,
aucun systme de filtrage nest prvu en amont par un standard. Ce cas est gnralement utilis par les
hotlinesdestinationdugrandpublic(FAI,oprateursdemobilit...).
Lorsdelappel,leclientexposesonproblmequiestsaisienbaseetrfrencparunnumrodeticket.Le
hotliner qui prend lappelnest pas mme de rpondre "techniquement" lappel et il se contente de dire
quunautreinterlocuteurvarappelertrsrapidement.Cecasestpluttrservpourlesentreprisesqui,bien
souvent,financentleSAVenprenantlesservicesassocis.

Maisaudeldelaspecttechnique,unprojetdecallcenterestavanttoutunprojetorganisationnel:

Combiendepersonnesfautildanslecallcenter?

Commentsontgrslespicsdactivits?

Estcequetouteslespersonnessontphysiquementaummeendroit?

Estcequetouslesappelsarriventaummeendroit?

Fautilmettreenplacedesnumrosspcialiss(commercial,technique,information...)?

Estcequilfautassureruneprsencedeservice24/24ouuniquementenjoursouvrs?

Fautilmettreenplaceunserveurvocalinteractifenamont?

Commentseramesurelasatisfactionclient?

Danscechapitre,nousallonsvoirdeuxtypesdutilisationduncallcenter:

Callcentermonositeetmononumrodappel
Callcenter virtuel, rparti gographiquement en France et multi numros dappels. Nous employons le terme
de virtuel, en rfrence au fait que peu importe o arrive lappel client et peu importe qui le traite, il sera
toujoursprisencomptedanslesystme.

ENI Editions - All rigths reserved - educ hafa

- 1-

Organisationspossibles
1.Premiercas:callcenterlocal
Asteriskdisposedunefonctionnalitpermettantdemettreen uvreuncallcenter:cemcanismesappellelesfiles
dattente(queuesenanglais).Danscetexemple,unseulnumroseracommuniquauclientetilfaudradoncqueles
appelsarriventsurunstandardcomposparexempledetroistlphonesSIPetdoncdetroisstandardistesdontle
rleseradesaisirlappeldefaoninformatiquepuisdetransfrerlappelunepersonneressource.

Exempleduncallcenterlocal
Dans cet exemple, le numro unique doit tre redirig vers un numro de file dattenteinterne(809parexemple).
Lestroisstandardistesvontseconnecterlafiledattente809enutilisantunnumrodentredanslafile(806par
exemple).Ensuite,deuxparamtressontimportantspourlafile809:lastratgiederceptiondesappels(lestrois
postessonnentenmmetemps,lasuite,defaonalatoire...)etlenombredesonnerie.Lorsquunestandardiste
souhaitesortirdelafile,ellevacomposerunautrenumro(le807).
Lamiseen uvreconcrteestvueplusloindanscechapitre.

2.Deuximecas:callcentervirtuel
Dans certaines entreprises, le centre dappel peut tre tenu par des personnes se trouvant sur des sites
gographiquesdiffrentsetnetravaillantpasforcmenttoutesenmmetemps.Cependant,leservicedoittoujours
tredisponiblepourlesclients.
Danslexemplequisuit,larchitectureestbasesuruncentredappelavecdeuxserveursAsteriskrpartissurdeux
sitesdiffrents.Troisfilesdattentesontdfinies,uneparnumrodappelentrant.
Danschaquefile,plusieursagentssenregistrenttouslesmatinscertainsagentssontunjourdansunefile,unjour

ENI Editions - All rigths reserved - educ hafa

- 1-

dansuneautre.Legestionnaireducentredappelpeutdcidercertainsjoursdefaireentrerdesagentsdunsiteet
dautresjoursdesagentsdautressites.Enfin,unagentpeutfairepartiedeplusieursfilesdattente.
CettearchitecturesappuiesurunrseauTlcomperformant,redondantetscuris.
Cette organisation, totalement flexible et redonde, ne dpend ni dalas gographiques, ni dalas lis aux
ressourceshumaines,sousrservequelescomptencesfonctionnellessoientprsenteschezlesagents.
Enoutre,leclientnesaitpasforcmentoesttraitsonappel.

Exempleduncallcentervirtuel

3.Casdunonenumberaveccentralisationde2centresdappelsdisjoints
Questcequun one number ? Cest tout simplement un numro unique pour les appels entrants, numro qui sera
communiquauxclientsetqui,souvent,estreprsentparunnumrodetype0820XXXXXX.
Ceonenumberestroutversunnumronoir(unnumrogographique)quiestroutdirectementsuruneplate
forme daccueil Asterisk. Toutes les standardistes (les agents au sens Asterisk), de France ou dautres pays, sont
connectsviaunefiledattentesurceserveur,ilsuffitdunlienIPdebonnequalit(unVPNMPLSparexemple).
Ensuite,leserveurcentralisdistribuelesappelsverslesserveursAsteriskdechaquecentredappels.Leshotliners
utilisentalorscesderniers,defaontransparente,poureffectuerlesappelssortants.

- 2-

ENI Editions - All rigths reserved - educ hafa

ENI Editions - All rigths reserved - educ hafa

- 3-

Lagestiondesfilesdattente
1.Distributionsimpledappelsdespostesenregistrs
a.Gnralits
Lutilisateur peut utiliser nimporte quel poste mais il doit faire en sorte que le poste senregistre dans la file
dattente.Lesappelsentrantssontalorsroutsversleposte.
Dansnotreexemple,lafiledattentedisposedunumro809.Pourquunutilisateurentredanscettefile,illuifaut
composerle806etpourensortirle807.Lastratgieadopteestdefairesonnertouslespostescorrespondants
auxutilisateursenregistrsdanslafile,maislesunsaprslesautres(stratgieroundrobin).
Rcapitulatif:

809:numrodelafiledattente.

806:numrocomposerpourentrerdanslafiledattente809.

807:numrocomposerpoursortirdelafiledattente809.

b.Fichiersdeconfiguration
Lesqueuessontdfiniesdanslefichier/etc/asterisk/queues.confetsontgresdansleplandenumrotation:

/etc/astererisk/queues.conf

[general]
persistentmembers = yes
[hotline-sav]
; taille de la file = nombre maximum dagent dans la file
maxlen = 15
; lorsque la file est vide dagent
joinempty = yes
leavewhenempty = no
; stratgie de sonnerie
strategy = roundrobin
;dure de la sonnerie lorsque lappel est prsent lagent
timeout = 10
retry = 15
; dlai accord lagent avant un nouvel appel
wrapuptime=30
musiconhold = support
;announce = default
; indique le dlai dattente de lappelant
reportholdtime = yes
; informations donnes lappelant : toutes les 30 secondes,
on lui annonce sa place dans la file
announce-frequency = 30
;estimation du temps dattente 15 secondes prs
announce-holdtime = yes
announce-frequency=15

/etc/asterisk/extensions.conf

exten => 806,1,AddQueueMember(hotline-sav)


exten => 806,2,Playback(agent-loginok)
exten => 806,3,Hangup()

ENI Editions - All rigths reserved - educ hafa

- 1-

exten => 807,1,RemoveQueueMember(hotline-sav)


exten => 807,2,Playback(agent-loggedoff)
exten => 807,3,Hangup()
exten => 809,1,Goto(queue-hotline,s,1)
[queue-hotline]
exten => s,1,Answer()
; la file dattente sappelle hotline-sav
exten => s,2,Queue(hotline-sav)
exten => s,102,PlayBack(hello-world)

c.Stratgiededistributiondesappelsentrants
Ilexistesixstratgiespossibles:

ringall:faitsonnertouslestlphonesdisponiblesjusqucequelunrponde(caspouruncentretraitant
desurgences)

roundrobin:faitsonnerlestlphonesdefaontournante

leastrecent:faitsonnerletlphonequiatlemoinsrcemmentappel(lepluslongtempslibre)

fewestcalls:faitsonnerletlphonequiaprislemoinsdappels

random:faitsonnerlestlphonesdefaonalatoire

rrmemory:roundrobinavecmmoire

2.Gestionparagents
a.Gnralits
Un agent doit pouvoir entrer dans des files dattente (et en sortir) avec un mcanisme dauthentification depuis
nimportequeltlphone.
Danslamesureounagentnestpasreliuntlphone,ilfautdoncdfinirdeuxtypesdenumrotation:une
pourlestlphones(de700750)etunepourlesagents(de900950).
Eneffet,unagentpeuttreutilisateurdunposteuninstanttetlelendemainutiliserunautreposte.
Untlphoneestdoncdfinidanslesfichierssip.confetextensions.conf:
exten => 717, 1, Dial(SIP/717)

b.Fichiersdeconfiguration
Laconfigurationdesagentsesteffectuedanslefichier/etc/asterisk/agents.confdontlasyntaxeestlasuivante:
agent => numro_agent, password_agent, nom

/etc/asterisk/agents.conf

[general]
persistentagents = yes
[agents]
agent => 912, 3678, nathalie
agent => 913, 8976, anne-sophie

- 2-

ENI Editions - All rigths reserved - educ hafa

agent => 914, 3289, fred


agent => 915, 1298, audrey

c.Lesdeuxtypesdagents
Ilexistedeuxtypesdagents:lagentdcrochetlagentenrappel.
Agentdcroch
Lorsque lagent sest enregistr dans la file dattente, sa ligne est dcroche et il peut recevoir de la musique
dattente.Unbiplinforme quun appel arrive sur sa ligne il peut alors le prendre en pressant sur #. la fin de
lappel,ilrevientdansltatdcrochenpressantnouveausur#.
Cette technique est adapte pour les agents disposant de microcasques et devant traiter beaucoup dappels.
Lorsquelaligneestraccroche,lagentnestplusdanslafiledattente.
CestlafonctionAgentLogin()quipermetdefairerentrerunoprateursurlesystmedesfilesdattente.
Exempledagentdcroch
Lagent 912 entre dans le systme des files dattente en composant le 555 il dispose du statut doprateurde
files.Lorsquunappelarrivesurlafile515,unbipvaalorstremissurlalignedelagent912.
queues.conf
[queue-agent-decroche]
member => Agent/912
member => Agent/913
extensions.conf
exten => 555, 1, AgentLogin(912)
exten => 515, 1, Queue(queue-agent-decroche)
Agentenrappel
Cette mthode est plus traditionnelle puisque le tlphone reste libre. Lagent fait simplement partie de la file
dattenteetlorsquelepostesonne,ildcrocheetprendlappel.Maislorsquilraccrochesontlphone,lagentfait
toujourspartiedelafiledattente.
CestlafonctionAgentCallbackLogin()quipermetdefaireentrerunoprateursurlesystmedesfilesdattente.
Exempledagentenrappel
Lagent914vaserfrencerdanslafiledattentedesappels,sanslmissiondunbipsonore(options).Lorsdun
appelpourlagent914,cestleposteSIP/717quivasonner.
queues.conf
[queue-agent-en-rappel]
member => Agent/914
member => Agent/915
extensions.conf
exten => 555, 1, AgentCallbackLogin(914,s,SIP/717)
exten => 515, 1, Queue(queue-agent-en-rappel)

3.Autresfonctionsdesqueues

AddQueueMember()

Permetdajouterunmembreunefiledattente.
exten => 515, 1, AddQueueMember(queue-test, SIP/717, 1)
Lorsquelonappellelextension515,leposteSIP/717estplacdanslafiledattentequeuetestavecunepnalitde
1.Lapnalitpermetdindiquerausystmequelestlemembreappeleravantunautrepluslapnalitestfaible,

ENI Editions - All rigths reserved - educ hafa

- 3-

pluslemembreseraappelvite.

PauseQueueMember()

Permettemporairementunmembredenepasrecevoirdappel.
exten => 515, 1, PauseQueueMember(queue-test, SIP/717)
LetlphoneSIP/717sorttemporairementdelaqueuequeuetest.

UnpauseQueueMember()

InversedePauseQueueMember()
exten => 516, 1, UnpauseQueueMember(queue-test, SIP/717)
LetlphoneSIP/717estremisdanslaqueuequeuetest.

RemoveQueueMember()

Permetunmembredtresupprimdunefiledattente
exten => 514, 1, RemoveQueueMember(queue-test, SIP/717)
LetlphoneSIP/717estsupprimdelaqueuequeuetest.

- 4-

ENI Editions - All rigths reserved - educ hafa

Lesoutilsdemonitoring
Ilexisteplusieursoutilspermettantdemonitorerlesfilesdattenteetainsidtablirdesstatistiques.

1.UtilisationdelaCLI
CLI > show queue hotline-sav

2.QueueMetricshttp://queuemetrics.com/
QueueMetrics est un analyseur de logs de file dattente qui fonctionne en temps rel et permet entre autres de
fournirdesinformationsessentiellescommelenombredappelspris,lenombredappelsperdus,lesagentsenligne,
lenombredappelsdanslesfiles...
Ce produit commercial ncessite lacquisition de licence et le mode de tarification est li au nombre dagents par
serveur.Jusqudeuxagents,leproduitestlibredutilisation.
LadernireversiondeloutilQueueMetrics1.6.0.1datedemars2010.

a.Installation
QueueMetricsestuneapplicationJavaetncessitelinstallationdunserveurdetypeApacheTomcatouJetty.
InstallationsurCentOS
SurunedistributionbasedeRPMLinux,linstallationpeutsefairedefaonautomatique:
# wget -P /etc/yum.repos.d http://yum.loway.ch/loway.repo
# yum install queuemetrics
# cd /usr/local/queuemetrics/webapps/queuemetrics-1.6.0.1/WEB-INF/README
# ./installDb.sh (Ce script permet de crer la base MySQL
QueueMetrics et ses 10 tables)
Laccs lapplication se fait via lurl
http://localmachine:8080/queuemetrics
Pour un accs en visualisation, saisir le login demouser et le mot
de passe demo
Pour un accs en administration, saisir le login demoadmin et le mot
de passe demo ( changer par la suite)
InstallationsurDebian
Tlchargement
# cd /usr/src/
# wget http://queuemetrics.com/download/QueueMetrics-1.6.0.1-trial.tar.gz
# wget http://mirrors.uol.com.br/pub/mysql/Downloads/ConnectorJ/mysql-connector-java-5.0.5.tar.gz
ConfigurationdesdptsDebian
# vi etc/apt/sources.list
Ajouter les lignes suivantes :
deb http://ftp.hk.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.hk.debian.org/debian/ lenny main contrib non-free
# apt-get update
InstallationdeJava
# apt-get install sun-java5-jdk

ENI Editions - All rigths reserved - educ hafa

- 1-

# update-alternatives --config java


Il ny a quun programme fournissant java (/usr/lib/jvm/java-1.5.0sun/jre/bin/java).
# update-alternatives --config javac
Il ny a quun programme fournissant javac (/usr/lib/jvm/java-1.5.0sun/bin/javac).
# export JAVA_HOME="/usr/lib/jvm/java-1.5.0-sun"
When you run:
# java -version
java version "1.5.0_17"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_17-b04)
Java HotSpot(TM) Client VM (build 1.5.0_17-b04, mixed mode, sharing)
InstallationdeTomcat
# apt-get install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps
# vi /etc/ init.d/tomcat5.5
Modifier la ligne :
TOMCAT5_SECURITY=yes par no
ConfigurationdelabaseMySQLetcrationdelabasededonnesQueuemetrics
Mysql> CREATE DATABASE queuemetrics;
Query OK, 1 row affected (0.00 sec)
Ajout utilisateur queuemetrics avec droits daccs
Mysql> GRANT ALL PRIVILEGES ON queuemetrics.* TO queuemetrics@
localhost IDENTIFIED BY javadude;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
Mysql> quit
InstallationdeQueuemetrics
# cd /var/lib/tomcat5.5/webapps
# tar -xvzf /usr/src/QueueMetrics-1.6.0.1-trial.tar.gz
# mv queuemetrics-1.6.0.1 queuemetrics
InstallationduconnecteurjavaMySQL
# cd /usr/src/
# tar xvzf /download/mysql-connector-java-5.0.0.tar.gz
# cp /usr/src/mysql-connector-java-5.0.5/mysql-connector-java-5.0.5bin.jar /var/lib/tomcat5.5/webapps/queuemetrics/WEB-INF/lib/
lissuedelinstallation,ilestconseillderedmarrerleserveurparlacommandesuivante:
# init 6
Laccsauproduitseffectuepartirdunnavigateur,accderlurl:
http//localhost:8180/queuemetrics
Lesidentifiantspardfautsont:

Login:demoadmin.

Password:demo.

Lorsdelapremireutilisation,ilestpossibledercuprerlesinformationssurlaconfigurationduserveurAsterisk,
enslectionnantSetupWizarddelarubriqueEditQueueMetricssettings.Ilseraainsipossibledercuprer
lesinformationsdesfichierssuivants:

- 2-

/etc/asterisk/agents.conf

/etc/asterisk/queues.conf

ENI Editions - All rigths reserved - educ hafa

/etc/asterisk/users.conf.

b.Contenufonctionnel
Loutildisposedeplusde150informationsquantitatives(totaux,moyenne,pourcentage)portantessentiellement
surlespointssuivants:

Appelstotaux

Appelsrpondus

Appelsperdus

Distributiondesappels

Agents

Dtaildesappels

Dtailsdesappelsperdus

Analyseducallcenterentempsrel.

ENI Editions - All rigths reserved - educ hafa

- 3-

Exemple:interfaceQueueMetrics

- 4-

ENI Editions - All rigths reserved - educ hafa

Exemple:Analysedesappelsrpondus

Exermpledappelsnonrpondusetcausesdedconnexion

ENI Editions - All rigths reserved - educ hafa

- 5-

3.AutresoutilsdemonitoringOpenSource
a.QUEUETIP
QueueTip est galement un outil de monitoring et de reporting des files dattente prsentes sur un serveur
Asterisk.IlncessitelespaquetsRubyonRailspourfonctionner.
Rfrence:http://queuetip.rubyforge.org/

b.OrderlyStats
Le produit est un logiciel de statistiques pour centre dappels il est mme utilis par Digium pour monitorer
lactivit de son propre callcenter. Il est dclin en deux modes : ldition server edition que nous pouvons
installer en local sur notre propre serveur Asterisk ou alors ldition modemanag dans lequel le produit est
accessibleviaInternet.
Rfrence:http://www.orderlyq.com/asteriskcallcenterstatistics.html

c.FlashOperatorPanel(FOP)
FOP est le panneau daffichage temps rel permettant de disposer, en mode web, de ltat de lensemble des
communicationsencourssurlesystme:

Lesextensions(postetlphoniqueousoftphone)utilises

Lesconfrencesencours

LesQueuesmonopolises

Leslignesexternesoccupes

Il est galement possible dintervenir sur les communications en cours, notamment de raccrocher un canal, de
transfrerunappelviaundrag&drop,effectuerunclicktodialdepuisunepageweb,agirsurlesparticipantsdune
confrence.
FOPfonctionneenmodeClient/Server.LeclientFlashseconnecteauserveurFOP(op_server.pl)vialeport
TCP 4445. Le serveur FOP se connecte lAsterisk Manager sur le port TCP 5038, permettant ainsi au
serveurFOPdejouerunrledeproxyentreleclientFOPetleserveurAsterisk.
Rfrence:http://www.asternic.org

- 6-

ENI Editions - All rigths reserved - educ hafa


Attention bien respecter la lgislation franaise avant dinstaller ce type doutil qui permet de rendre
visiblecertainesinformationsconfidentielles.

InstallationdeFOPsurDebian
Aupralable,FOPncessitededisposerdumodulePerlsurleserveurAsterisksurlequelilserainstall.
TELECHARGEMENT
# cd /usr/src/
# wget http://www.asternic.org/files/op_panel-0.30.tar.gz
# tar zxvf op_panel-0.30.tar.gz
CREATION DIRECTORY DACCES WEB
# mkdir /var/www/htm/panel/
COPIE DES SOURCES HTTP
# cp -r /usr/src/op_panel-0.30/flash/ /var/www/html/panel/
CREATION DIRECTORY DE CONFIGURATION
# mkdir /etc/op-panel
# cp /usr/src/op_panel /*.cfg /etc/op-panel/

COPIE FICHIER EXECUTABLE


# cp op_server.pl /usr/sbin
# cp init/op_panel_debian.sh /etc/init.d/op-panel
update-rc.d op-panel defaults
update-rc.d: warning: /etc/init.d/op-panel missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
Adding system startup for /etc/init.d/op-panel ...
/etc/rc0.d/K20op-panel -> ../init.d/op-panel
/etc/rc1.d/K20op-panel -> ../init.d/op-panel
/etc/rc6.d/K20op-panel -> ../init.d/op-panel
/etc/rc2.d/S20op-panel -> ../init.d/op-panel
/etc/rc3.d/S20op-panel -> ../init.d/op-panel
/etc/rc4.d/S20op-panel -> ../init.d/op-panel
/etc/rc5.d/S20op-panel -> ../init.d/op-panel
CREATION DIRECTORY DE LOGS
# mkdir /var/log/op-panel

ENI Editions - All rigths reserved - educ hafa

- 7-

EDITION DU FICHIER DE DEMARRAGE


# vi /etc/init.d/op-panel
Modification emplacement fichier executable
DAEMON=/usr/sbin/op_server.pl
Modification emplacements fichiers de configurations et logs
OPTIONS="-d -p $PIDFILE -c /etc/op-panel -l /var/log/op-panel"
ConfigurationdeFOP
AsteriskManager
AfindepouvoirutiliserFlashOperatorPanel,ilestncessairedajouterunnouvelutilisateurdansAsteriskManager.
# vi /etc/asterisk/manager.conf
Ajouter les lments suivants en fin de fichier
[oppanel]
secret =motdepasse
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.0.0.0
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user
LajoutdecetutilisateurncessiteleredmarrageduserviceAsterisk.
# /etc/init.d/asterisk restart

Lesfichiersdeconfiguration
LaconfigurationdeFlashOperatorPanelsappuiesurplusieursfichiers:

Op_server.cfg:fichierdeconfigurationgnraleduserveurFOP.

Op_style.cfg:fichierdeconfigurationdustyledepageaffiche.

Op_buttons.cfg:configurationdespostes(comptesSIP,Queues)Asterisk.

Fichierop_server.cfg
# vi /etc/op-panel/op_server.cfg
Modifier les paramtres suivants :
manager_host=127.0.0.1
manager_user=oppanel (au lieu de user)
manager_secret=motdepasse (renseigner le mot de passe dfini dans
le fichier /etc/asterisk/manager.conf)
flash_dir=/var/www/html/panel
poll_interval=60 (au lieu de 12000 - valeur exprim en secondes)
;parkexten=700 (paramtre commenter en ajoutant un ; en dbut de ligne)
;parktimeout=30 (paramtre commenter en ajoutant un ; en dbut de ligne)
language=fr (au lieu de en)
Fichierop_style.cfg
Lefichierop_style.cfgvanouspermettredepersonnaliserlapagevisibleparlesutilisateurs:

Tailledesboutons

Tailledesicnes.

# vi etc/op-panel/op_style.cfg
Dfinition des paramtres pour les boutons

- 8-

ENI Editions - All rigths reserved - educ hafa

btn_width=105 (au lieu de


btn_height=35 (au lieu de
btn_padding=2 (au lieu de
btn_line_width=1 (au lieu

246)
70)
4)
de 2)

label_font_size=10 (au lieu de 20)


label_margin_top=10 (au lieu de 20)
label_margin_left=19 (au lieu de 38)
clid_font_color=ff0000 (au lieu de 00dd00)
clid_font_size=9 (au lieu de 13)
clid_margin_top=1 (au lieu de 0)
clid_margin_left=3 (au lieu de 25)
timer_font_size=9 (au lieu de 13)
timer_margin_top=24 (au lieu de 48)
timer_margin_left=3 (au lieu de 6)
led_scale=45 (au lieu de 90)
led_margin_top=17 (au lieu de 34)
led_margin_left=10 (au lieu de 20)
arrow_margin_top=24 (au lieu de 10)
arrow_margin_left=95 (au lieu de 15)
Dfinition de la taille des icnes
icon1_margin_top=22 (au lieu de 43)
icon1_margin_left=-17 (au lieu de 34)
icon1_scale=8 (au lieu de 17)
icon2_margin_top=23 (au lieu de 46)
icon2_margin_left=-14 (au lieu de 29)
icon2_scale=7 (au lieu de 14)
icon3_margin_top=17 (au lieu de 34)
icon3_margin_left=-18 (au lieu de 36)
icon3_scale=10 (au lieu de 20)
icon4_margin_top=16 (au lieu de 33)
icon4_margin_left=-17 (au lieu de 34)
icon4_scale=8 (au lieu de 16)
icon5_margin_top=16 (au lieu de 32)
icon5_margin_left=-16 (au lieu de 33)
icon5_scale=8 (au lieu de 16)
icon6_margin_top=16 (au lieu de 32)
icon6_margin_left=-16 (au lieu de 33)
icon6_scale=8 (au lieu de 16)
Dfinition de la barre de statuts
show_clid_info=6 (au lieu de 0)
show_status=0 (au lieu de 4)
Fichierop_buttons.cfg
Lefichierop_buttons.cfgvanouspermettrededfinirleslmentssuivants:

Boutons(PostesUtilisateurs,PostesOprateursdestandard,Queues)

Titres

ArrirePlans.

Concernantlapositiondesboutons,lapageestdiviseenxlignesetycolonnes(dpendantdeladfinitiondela
tailledesboutons).
ENI Editions - All rigths reserved - educ hafa

- 9-

LapagedeFOPpeuttreschmatiseparletableausuivant:
N1

N7

N13

N19

N25

N31

N37

N43

N49

N55

N2

N8

N14

N20

N26

N32

N38

N44

N50

N56

N3

N9

N15

N21

N27

N33

N39

N45

N51

N57

N4

N10

N16

N22

N28

N34

N40

N46

N52

N58

N5

N11

N17

N23

N29

N35

N41

N47

N53

N59

N6

N12

N18

N24

N30

N36

N42

N48

N54

N60

LagestiondelapageFOPpeuttredfiniedelamaniresuivante:
ZonedeTitre
ZonerservePostesutilisateurs

Zonerserve

Zonerserve

PostesStandard

Queue(s)

Dfinitiondunbouton
[SIP/198765]
Position=25 (Position du bouton sur lcran)
Label="Poste Compta" (nom affich sur le bouton)
Extension=198765
Privacy=true (La valeur true signifie que le numro appel/appelant
ne sera pas affich)
Context=default
DfinitionduboutonQueue
[QUEUE/198000]
Position=122
Label="Queue Technique"
Extension=-1
DfinitiondelaZonedeTitres
[LEGEND]
x=300
y=40
text= IPBX AGENCE
font_size=22
font_color=000000
font_family=Arial
use_embed_fonts=1
DfinitionsdelArrirePlan
[rectangle]
x=-1
y=35
width=860
height=555
line_width=3
#line_color=1010ff
#fade_color1=10ff10
#fade_color2=10ff00
rnd_border=2
alpha=10
layer=top
DmarragedeFOP
- 10 -

ENI Editions - All rigths reserved - educ hafa

# chmod +x /usr/bin/op_server.pl
# ./op_server.pl

ENI Editions - All rigths reserved - educ hafa

- 11 -

Outilspriphriquestiers
Nousavonsvu,aucoursdeschapitresprcdents,toutunensembledefonctionnalitsduserveurAsterisktoutfait
satisfaisantes pour bien dmarrer un site en production. Nous allons aborder dans ce chapitre deux technologies
permettantdefairederellesconomies :lvasiondesfluxdetypeGSMavecunepasserelledetypeQuescom(ilen
existebeaucoupdautres)etlagestiondesfaxavecleserveurHylafax.

ENI Editions - All rigths reserved - educ hafa

- 1-

PasserelleGSMQuescom
1.Gnralits
Quescom(http://www.quescom.com)estunfabricantdepasserellesGSM/VoIP/FAX.
Autrement dit, le botier possde, dun ct, une connexion LAN RJ45 de base et, de lautre, des connecteurs GSM
permettantdeplacerdespucesSIMoprateur.
Tout lintrt de la maquette est de concentrer les flux tlphoniques (en provenance du rseau interne) vers les
mobiles,viacettepasserelleetnonvialaccsT2classique.
Maispourquoidonc ?Essentiellementpourquatreraisons :

LescotsdescommunicationsdescartesSIMsontmoindrespuisquelescommunicationssersumentalors
tre des communications de mobiles vers mobiles alors que dans le cas classique, il sagit de
communications fixes vers mobiles. Et il nest pas rare de pouvoir prtendre conomiser 50% sur les
communicationsversmobiles.
Lagestioncentralisedesappelsverslesmobilesavecjournaldesappelspasss.
La mise en uvre dun vritable trunk GSM permettant de dlester le serveur Asterisk du traitement des
appelsversmobiles.
Lasimplicitdemiseen uvreetdutilisation.

Quescomproposeplusieursproduitsdontceuxci :

Quescom312,4accsGSM.

Quescom412,8accsGSM.

Quescom41212accsGSM.

titredinformation,lesprixdecespasserellesvariententre4keet12ke,prixpublics.
Aupralabledetoutachatdecetypedepasserelle,ilfauteffectueruneanalysefinedesfacturestlcomet
tenterdeproduireunROI.

2.InterfacesQuescom
Cidessous, nous proposons une copie des principaux crans utiliss pour la gestion des appels GSM entre un
serveurAsterisketunepasserelleQuescom4SIM :

Accueilprincipal.

Crationduserveurdappelsexterne(Asterisk).

ParamtrageduserveurAsterisketlienavecledialplan.

LienentrelaQuescometlesportsdecommunication.

CrationdesservicesQuescom/AsterisketAsterisk/Quescom.

ParamtrageduserviceVoixsuIP.

ENI Editions - All rigths reserved - educ hafa

- 1-

tatduparcdeSIM.

ParamtrageduprofildeVoIP.

Accueilprincipal
Laccssefaitviauneinterfacewebhttp://IP_passerelle:8000

Crationduserveurdappelsexterne(Asterisk)

ParamtrageduserveurAsterisketlienavecledialplan
UneextensionSIPestncessairepourfairelelienentreAsterisketlapasserelle.

- 2-

ENI Editions - All rigths reserved - educ hafa


LienentrelaQuescometlesportsdecommunication

CrationdesservicesQuescom/AsterisketAsterisk/Quescom

ENI Editions - All rigths reserved - educ hafa

- 3-


ParamtrageduserviceVoixsurIP

tatduparcdeSIM

- 4-

ENI Editions - All rigths reserved - educ hafa


ParamtrageduprofildeVoIP

La passerelle Quescom est relativement simple configurer condition de bien comprendre les concepts
toutsefaitenmodeWeb(casleplussimple).

Il est possible que les appels sortants GSM ne fonctionnent pas la premire fois en raison dune non
reconnaissance ou dun dysfonctionnement de la SIM. Il faut alors parfois sortir les SIM de leurs slots et
effectuerunepermutation.

La passerelle est quipe en standard dune antenne GSM (un cble dune longue courte). En fonction de
lemplacementdelasallemachine,ilpeuttreopportundinstalleruncbledantennedune longueur plus
importante(20mtres)afindobtenirunbonsignalGSM.

3.DialogueentrelapasserelleQuescometleserveurAsterisk
IlestncessairequelapasserellepuissesenregistrerentantqueclientSIPauprsduserveurAsterisk celasefait
viauneextension(la150099dansnotreexemple)crerdanslefichiersip.confoudanslabasededonnesMySQL
lecaschant.
ConfigurationduplandenumrotationAsterisk
SupposonsquelesappelsverslesmobilessoientgrsdanslecontexteGSMetquelapasserelleQuescomaitpour
adresseIP192.168.1.253.
[GSM]
exten => _00[6-7]XXXXXXXX,1,Answer()
exten => _00[6-7]XXXXXXXX,n,Macro(appel_gsm,${EXTEN})
exten => _00[6-7]XXXXXXXX,n,Macro(appel_sortant,${EXTEN})

ENI Editions - All rigths reserved - educ hafa

- 5-

exten => _00[6-7]XXXXXXXX,n,Hangup()


[macro-appel_gsm]
exten => s,1,Answer()
exten => s,n,Dial(SIP/192.168.1.253/${MACRO_EXTEN},,of)
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-BUSY,1,hangup()
exten => s-CHANUNAVAIL,1,MacroExit()
exten => s-CONGESTION,1,MacroExit()
exten => s-NOANSWER,1,hangup()
exten => s-ANSWER,1,hangup()
exten => s-CANCEL,1,hangup()
Lesoprateursnesontpasfavorableslutilisation dunetellepasserellecarcelaconstitueunepertenon
ngligeabledeleurtraficmobile.Ilsvontsouventproposerunealternativeafindeconserverletraficfixevers
mobilessurlesliensclassiquesT2,enproposantunetarificationavantageuse.Lefaitdexpliquersonoprateur
mobilelavolontdinstallerunepasserellevapermettreaumoinsdentamerdesngociationstarifairesforcment
intressantes.

- 6-

ENI Editions - All rigths reserved - educ hafa

VisualDialplan
Mme si nous prfrons de loin crer manuellement le plan de numrotation du serveur Asterisk, il existe des outils
graphiques permettant de crer, de valider et de dployer un dialplan. Parmi ceuxl, nous pouvons citer le produit
VisualDialpandelasocitApstel(http://www.apstel.com).
VisualDialplanexisteendeuxversions :

Standard (prix de 69,99 $) permettant de couvrir les fonctions classiques dAsterisk (dialplan, dialout, IVR,
voicemail,meetme,moh,voicerecording).
Professionnelle (prix de 149,99 $) permettant une intgration avec des logiciels tiers, la gestion des files
dattente,lagestiondelafacturation

Lorsdelinstallation,ilestpossibledeconnecterloutilVisualDialplanavecunserveurAsterisk :

Maisilnestpaspossibledercuprerundialplanexistantpartirduserveur.Donc,attentionbienveiller
effectuerdessauvegardesaupralable.

VisualDialplanpermetde maquetter unplandenumrotation,deletesteretdeledployersurleserveur


cible.

ENI Editions - All rigths reserved - educ hafa

- 1-

ExempledecrationducontextIncoming

- 2-

ENI Editions - All rigths reserved - educ hafa


Extensions.confaprsdploiement
# more extensions.conf
; Generated by Visual Dialplan Standard.
; Creation date: 2010-06-26 17:04:11.665
; Created from: C:\Program Files\Apstel\Visual Dialplan
Standard\samples\Plain A
sterisk\02_simple_dialplan.vdp

[general]
static=yes
writeprotect=no
priorityjumping=no
autofallthrough=yes
clearglobalvars=no
[globals]

[incoming]
exten
exten
exten
exten
exten
exten
exten
exten
exten
exten
exten
exten
exten
exten
exten
exten

=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>

s,1,Answer()
s,n(lbl_incoming_0),Background(enter-ext-of-person)
s,n,WaitExten(10)
s,n,Hangup()
i,1,Playback(pbx-invalid)
i,n,Goto(s,lbl_incoming_0)
t,1,Playback(pbx-goodbye)
t,n,Hangup()
100,1,Dial(SIP/john,10)
100,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?lbl_incoming_1:)
100,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?lbl_incoming_1:)
100,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?lbl_incoming_2:)
100,n(lbl_incoming_1),VoiceMail(john,su)
100,n(lbl_incoming_3),Hangup()
100,n(lbl_incoming_2),VoiceMail(john,sb)
100,n,Goto(lbl_incoming_3)

ENI Editions - All rigths reserved - educ hafa

- 3-

- 4-

ENI Editions - All rigths reserved - educ hafa

FaxavecHylafax
1.Gnralits
Hylafax (http://www.hylafax.org) est une solution libre en mode client/serveur permettant denvoyeretderecevoir
des fax via un rseau IP. Le point fort dHylafax, par rapport des solutions propritaires qui sappuient sur des
cartes modems physiques, est la gestion de modems virtuels sur le serveur de fax. Tout utilisateur IP peut donc
envoyerdesfaxauserveurHylafaxquilesrouteverslesdestinatairesgrcecesmodemsvirtuels.Adieudoncles
batteries de modems physiques ! Egalement, tout utilisateur peut recevoir des fax laide de ce systme (cette
gestiontantplusdlicateenraisonduroutagefax/sda/mails).
Nousparlonsdetroisfonctionnalitsessentielles :

Mailtofax :envoidefaxpartirdunemail

Lutilisateur envoie un fax partir de son client de messagerie, en prcisant le destinataire du fax sous la forme
<user>@<fax_number>.fax. Le corps du message et les pices jointes ventuelles seront achemins en fax au
destinataire.Lesformatsdespicesjointessontdes.pdf,.tiffou.postcript.

Printtofax:envoidunfaxversuneimprimantevirtuelle

LesfaxsdestinationdunutilisateurdistantsontenvoysviaunclientdenvoidefaxinstallenlocalsurunPC.Les
documents (tout format) sont imprims directement vers une imprimante virtuelle de fax connecte au serveur
Hylafax (ladresse IP de ce serveur est demande lors de la configuration de loutil). Il est demand dans ce cas
explicitementlenumrodufaxdudestinatairelorsdelimpression.NousprconisonslutilisationdeWinprintHylafax
1.0.
Source :http://winprinthylafax.sourceforge.net/

Faxtomail :rceptiondefaxdansunemail

Touslesfaxentrantsarrivent,pardfaut,unutilisateurnommfaxmastermaisenfonctiondelaconfiguration,il
esttoutfaitpossiblederouterlesfaxversunautreutilisateur.

Hylafaxpeutpermettredviterdacheterdesmachinesdefaxphysiques.

2.InstallationduserveurHylafaxsousDebian
Installationdeslibrairiespwlib,openh323etT38modem
La mise en uvre dun fax sur IP repose sur la ncessit de disposer de modems virtuels et non de modems
physiques. Il faut donc utiliser une application spcifique appele T38modem qui fournit une interface entre des
modems virtuels et une application de VoIP. T38modem ncessite de disposer de deux bibliothques : pwlib et
openh323.
NousproposonsuneinstallationvialutilitaireCVS(ConcurrentVersionSystem).
# apt-get install cvs
# cd ~
# cvs -d:pserver:anonymous@t38modem.cvs.sourceforge.net:/cvsroot/t38modem
login
Logging in to :pserver:anonymous@t38modem.cvs.sourceforge.net:2401/
cvsroot/t38modem
CVS password: (appuyer sur Enter)
# cvs -z3 -d:pserver:anonymous@t38modem.cvs.sourceforge.net:/cvsroot/
t38modem co -P -r RELEASED t38modem
# cvs -z3 -d:pserver:anonymous@openh323.cvs.sourceforge.net:/cvsroot/
openh323 co -P openh323
# cvs -z3 -d:pserver:anonymous@openh323.cvs.sourceforge.net:/cvsroot/
openh323 co -P ptlib_unix

ENI Editions - All rigths reserved - educ hafa

- 1-

Installationdesoutilsdeparsingindispensables
# apt-get install flex bison build-essential

Installationdelabibliothquepwlib
#
#
#
#

cd ~/pwlib
./configure --prefix /usr
make
make install

Installationdelabibliothqueopenh323
#
#
#
#

cd ~/openh323
./configure --prefix /usr
make
make install

InstallationdeT38modem
cd ~/t38modem
export OPENH323DIR=/usr/share/openh323
export PWLIBDIR=/usr/lib/pwlib
make NO_PBOOLEAN=1 USE_UNIX98_PTY=1 opt
make NO_PBOOLEAN=1 USE_UNIX98_PTY=1 install
NousutilisonsloptionUSE_UNIX98_PTY=1danslacompilationdeH323.
InstallationduserveurdefaxHylafax
# apt-get install hylafax-server cu minicom hylafax-client

ScriptdedmarragedeT38modem
#!/bin/sh
# Check for missing binaries
t38modem_BIN=/usr/local/bin/t38modem
test -x $t38modem_BIN || { echo "$t38modem_BIN not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi; }
PIDFILE="/var/run/t38modem.pid"
# Load the rc.status script for this service.
. /lib/lsb/init-functions
case "$1" in
start)
echo -e "Starting t38modem "
## Start daemon with smetartproc(8). If this fails
## the return value is set appropriately by startproc.
echo "$ARGS" > /tmp/t38modem_start.txt
start-stop-daemon --start --background --name t38modem --pid
$PIDFILE --startas $t38modem_BIN
log_end_msg $?
;;
stop)
echo -e "Shutting down t38modem "
## Stop daemon with killproc(8) and if this fails
## killproc sets the return value according to LSB.
start-stop-daemon -K -q --exec $t38modem_BIN
log_end_msg $?
;;
restart)
## Stop the service and regardless of whether it was
## running or not, start it again.
$0 stop

- 2-

ENI Editions - All rigths reserved - educ hafa

$0 start
;;
*)
## If no parameters are given, print which are avaiable.
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
Esac
Crationdesoptionsdumodemvirtuel
# t38modem --trace --output /var/log/t38modem.log --ptty
+/dev/ttyx0, +/dev/ttyx1, +/dev/ttyx2, +/dev/ttyx3,
+/dev/ttyx4, +/dev/ttyx5, +/dev/ttyx6, +/dev/ttyx7, +/dev/ttyx8
Cettecommandepermetdenregistrerlaconfigurationdansle homedirectorydelutilisateurcourant(casderoot
dans~/.pwlib_config/.ini).
Dsormais, nous pouvons dmarrer le(s) modem(s) avec le script dinitialisation de t38 modem via la
commande/etc/init.d/t38modemstart/stop.
ParamtragedHylafax
# faxsetup
Lacommandefaxsetuppermetdeffectuer,defaoninteractive,leparamtrageduserveurHylafax.Cescriptstocke
lesinformationsdansdeuxfichierssous/etc/hylafax :

setup.cache

setup.modem.

DclarationdesmodemsvirtuelsdansHylafax
# cp ~/t38modem/HylaFAX/config.ttyx /etc/hylafax/config.ttyx
# vi /etc/hylafax/config.ttyx
#
# HylaFAX configuration for a T38FAX Pseudo Modem
#
SessionTracing: 0x2FFF
RingsBeforeAnswer: 1
ModemType: Class1 # use class 1 interface
ModemFlowControl: rtscts # default
ModemRate: 19200
ModemRevQueryCmd: AT+FREV?
#
# AT#CID=10 enables ANI/DNIS reporting between the
# first and second RINGs in the form:
#
# RING
# NMBR = <calling number>
# NDID = <called number>
# RING
#
ModemResetCmds: "AT#CID=10" # enable ANI/DNIS reporting
RingsBeforeAnswer: 3 # collect info between two RINGs
#QualifyCID: etc/cid # CID access control list file
CIDNumber: "NMBR = " # pattern string for calling number
CIDName: "NDID = " # pattern string for called number
#
# T.38 dial modifiers
#
# F - enable T.38 mode request after dialing
# V - disable T.38 mode request after dialing (remote host should do it)

ENI Editions - All rigths reserved - educ hafa

- 3-

#
# calling/called number dial modifiers
#
# L - reset and begin of calling number
# D - continue of called number
#
#ModemDialCmd: ATDF%s # user can override F by dial V
#ModemDialCmd: ATDV%s # user can override V by dial F
#ModemDialCmd: ATD%sF # user cant override F
#ModemDialCmd: ATD%sV # user cant override V
#ModemDialCmd: ATD%sVL # user cant override V or calling number
Crationdes config.ttyx dechaquemodemvirtuel
# ln -s /etc/hylafax/config.ttyx /etc/hylafax/config.ttyx0
# ln -s /etc/hylafax/config.ttyx /etc/hylafax/config.ttyx1
...
# /etc/init.d/hylafax restart
ConfigurationdesmailssurleserveurHylafax
# apt-get install sendmail-bin
# apt-get install sendmail
#vi /etc/mail/sendmail.cd
modify :
# "Smart" relay host (may be null)
DSmonrelais.mondomaine.com
Cest le serveur relais de mail monrelais.mondomaine.com qui sera alors utilis dans cet exemple. Hylafax enverra
alorstouslesfaxversceserveurdemails.
TestdenvoidefaxdepuisleserveurHylafaxenmodeconsole
# sendfax -n -D -d 150601 /tmp/allo2.pdf
# sendfax -m -n -D -d 0383202020 /tmp/allo2.pdf
Danscetexemple,nousenvoyonsledocument allo2.pdf enfaxdeuxtypesdedestinataires :

Unnumropriv150601(casduneextensioninternedAsterisk).

Unnumropublic0383202020(casduneSDA).

Affichagedustatutdesfilesdattente
faxstat -r

Ne pas hsiter utiliser loutil Webmin qui dispose dun module Hylafax pour ladministration de premier
niveauduserveurdefax.

3.Partiecliente
Bien videmment, lutilisation dun serveur de fax doit se faire via un client logiciel. Il en existe un certain nombre
parmilesquels,nouspouvonsciter :

- 4-

WHFC(WindowsHylaFaxClient),http://whfc.ulieckhardt.de/

WinprintHylafax,http://winprinthylafax.sourceforge.net/

Autresproduits :http://hylafax.sourceforge.net/howto/faxing.php

ENI Editions - All rigths reserved - educ hafa

UnesolutiondenvoidefaxenmodewebpeutgalementtredveloppeenPhp.

ENI Editions - All rigths reserved - educ hafa

- 5-

HylafaxAsteriskCisco
1.Fonctionnalitsrecherches
PartonsduprincipequuneSDAdunutilisateurpeuttrelafoisunelignetlphoniqueetunelignedefax.Pour
mettrecedispositifen uvre,ilestncessairedavoircinqlmentsdanslarchitecture :

UnserveurdetlphonieAsterisk

UnserveurdefaxHylafax

UnserveurdemailPostfix/Zimbra

UnrouteurVoIPdetypeCiscopermettantde trier lesappelsvoixdesappelsfaxetdelesrouterversle


bonserveur
Uneounligne(s)physique(s)detypeT2.

CestlerouteurCiscoquivadtecter,parcoutedumessagelectriquedelaporteuse,larrivedunfaxetlenvoi
auserveurdefaxvialeprotocoleT38.LeserveurdefaxgredesmodemsfaxvirtuelsT38modemquireoiventces
fax.

2.Schmadarchitecture

ENI Editions - All rigths reserved - educ hafa

- 1-

3.ConfigurationdunepasserelleVoIPCisco2801
Il est ncessaire dinstaller une application tierce sur le routeur, permettant de dtecter larrive dun fax :
DM_FullT38_2.1_app_fax_detect.2.1.2.2.tcl, tlcharger sur le site de Cisco (http://www.cisco.com/pcgi
bin/tablebuild.pl/tclware)aprsauthentificationavecunlogin/password.
ConfigurationsurlerouteurCisco28XX
application
service T38_fax_detect_DM flash:DM_FullT38_2.1_app_fax_detect.2.1.2.2.tcl
paramspace french language fr
param mode listen-first
param account-id-method any
param prompt flash:ringback.wav
param voice-dtmf 1
param fax-dtmf 2
!
AppeldelapplicationpourlesappelsRTC
dial-peer voice 2 pots
trunkgroup trunkT2
description appels rtc
preference 1
service t38_fax_detect_dm
destination-pattern T
progress_ind alert enable 8
progress_ind progress enable 8
progress_ind connect enable 8
incoming called-number 2...
no digit-strip
direct-inward-dial
Siunfaxestdtectsurlaporteuse,un5estajoutdevantlenumro
dialpeer 52
dial-peer voice 21 voip
description appels voip vers Hylafax
destination-pattern 52...
session target ipv4:192.168.1.222
dtmf-relay h245-signal
codec g711ulaw
fax rate 14400
fax protocol t38 ls-redundancy 0 hs-redundancy 0 fallback cisco
no vad

Dansnotreexemple,leserveurdefaxdisposedeladresseIP192.168.1.222.

4.ConfigurationdufaxtomailavecFaxDispatch
LorsquenousrecevonsunfaxsuruneSDA,notrerouteurCISCOaiguillelefaxsurleserveurHylafaxmaisnousne
savons pas vraiment sur quelle bote de messagerie il faut le router. Nous allons utiliser, pour cela, une table de
correspondancenSDA/emailquenousstockeronsdansunebaseMySQL.
CettebaseeststockesurleserveurAsterisketcontientunetablefaxmailosontfaiteslescorrespondances.
IlfautdclarerlutilisateurhylafaxenlecturesurlatablefaxmailduserveurAsterisk(192.168.1.100).
# apt-get install mysql-client
# vi /etc/hylafax/FaxDispatch
##
## Default FaxDispatch file - routes all inbound faxes to FaxMaster as PDF
##
## Consult the faxrcvd(8C) man page for more information
##
#!/bin/sh

- 2-

ENI Editions - All rigths reserved - educ hafa

#
FILETYPE=pdf; # in PDF format
#On recupere lemail associe a la sda dans la base mysql asterisk
#${CALLID1} num appelant 383102030
#${CALLID2} num dest 52002
sdaclean=`echo ${CALLID2#*5}`;
routmail=`echo "use asterisk;select email_device from faxmail where
sda=$sdaclean;" | mysql -h 192.168.1.100 -uhylafax -p*** | grep @`;
SENDTO=$routmail;
#SENDTO=FaxMaster;

ENI Editions - All rigths reserved - educ hafa

- 3-

LiensavecZimbra,SugarCRM
DautresapplicationsessentiellespeuventtrecouplesauserveurAsterisk,notamment :
LeserveurdemessagerieZimbra
laide dun programme spcifique (Zimlet Asterisk) sur le serveur Zimbra, il est possible deffectuer un appel
tlphoniquedepuislewebmailZimbra,eneffectuantundraganddropducontactversleserveurAsterisk,matrialis
souslaformeduneicnesurlewebmail.
Ce principe est dcrit dans le livre Zimbra, messagerie collaborative Open Source , Sbastien DEON, Editions ENI
danslacollectionEpsilon.
LeserveurdeGEDAlfresco
Parrebond,ZimbrapeutcommuniqueravecAlfrescopourstockerdesmails,picesjointesdanslaGED.Ilestpossible
de dvelopper un service permettant depuis Alfresco, et notamment un document, dappeler directement un
destinatairedontlenomoulenumrodetlphoneapparatdansledocument.
Source :http://www.voicerd.com/VoiceRD_integration_modules_alfresco.php
LeCRMSugarCRM
SugarCRM est une solution de Gestion de la Relation Client qui existe en version commerciale mais aussi en version
OpenSource.CommetouteapplicationdeCRM,ilestindispensabledepouvoirycouplerleserveurdetlphoniede
manirepouvoireffectuerdeuxchosestrssimples(entreautres) :

AppelerautomatiquementunclientdepuislaficheclientdeSugarCRM

AfficherautomatiquementlafichedunclientdansSugerCRMlorsdelappeldececlient.

DetrsnombreuxmodulespermettentSugarCRMdesinterfaceraveclextrieur :

Webconfrence

Ged

Messagerie

Calendrier

ERP

Annuaires

Asterisk

Lideestsimple :partirdeloutildeCRMquigrelarelationclient(maisaussitouttypederelation),
il est possible denrichir le systme lorsquun appel est reu ou mis. Combien de fois utilisonsnous
une feuille vierge ou un postit pour noter des informations lors dune conversation tlphonique ?
Souventnestcepas ?Etquedeviennentcesinformationssiellesnesontpasassociesuncontact,
unprojet,unetcheouunesocit ?

EncequiconcerneAsterisk,nouspouvonsciterlesmodulessuivants :

Liz,interfacedegestiondesappelsentrantsetsortants,deslogsdappels,destransfertsdappelset,parvoie
deconsquence,administrationdesappelsAsteriskdansSugarCRM.LogdetouslesappelsdansSugarCRM.
Source :http://www.sugarforge.org/projects/liz/

Kinamu / abcona Open Asterisk Connector, module permettant deffectuer un clictodial depuis les contacts,
comptes de Sugar CRM vers Asterisk. Le module YAAI (Yet Another Asterisk Integration) ncessite le

ENI Editions - All rigths reserved - educ hafa

- 1-

paramtragedunlienentrelemoduleetlAMI.
Source :http://www.sugarforge.org/projects/yaai

Asterisk SugarDirector, module permettant dafficher la page du contact de lappelant (callerID), directement
dansSugarCRM.
Source :http://www.sugarforge.org/projects/sugardirector

AsteriskVoiceRDIntegration,permettantdelancerunappeldepuisSugarCRM,denregistrerdesnotessurdes
appels
Source :http://www.voicerd.com/VoiceRD_integration_modules.php

InstallationdeSugarCRMsurleserveurDebian
# cd /usr/src
# wget http://www.sugarforge/org/frs/download.php/7016/SugarCE-5.5.4.zip
# unzip SugarCE*
# mkdir /var/www/crm
# cd SugarCE-Full-5.5.4
# mv * /var/www/crm
# chown -R www-data:www-data /var/www/crm
# mysql -u root -p
Myqsl>
CREATE DATABASE sugarcrm;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON sugarcrm.* TO
sugarcrm@localhost IDENTIFIED BY sugarpasswd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON sugarcrm.* TO
sugarcrm@localhost.localdomain IDENTIFIED BY sugarpasswd;
FLUSH PRIVILEGES;
QUIT;
# /etc/init.d/apache2 restart
AccslinterfacedinstallationdeSugarCRM
http://localhost/crm

- 2-

ENI Editions - All rigths reserved - educ hafa


Procduredinstallation

Choisirlinstallationenlanguefranaise.

Accepterlalicence.

Choisiruneinstallationstandard(pourlesnouveauxutilisateursdeSugarCRM).

Choisirletypedebasededonnes :MySQL(MySQLodetected).

Configurerlabasededonnes.

ENI Editions - All rigths reserved - educ hafa

- 3-

SaisirlemotdepassepourladministrateurSugar.
Renseignerlesparamtragesdesvariableslocales(formatdedatepardfaut,formatdelheure par dfaut,
devisepardfaut).

Sitoutestcorrect,uncrandersumaffichelesinformationssuivantes :
Configurationdelabasededonnes
Nomdelabasededonnes

sugarcrm(vapascrer)

Utilisateuradmindelabasededonnes

sugarcrm

RemplirlabasededonnesavecdesdonnesdeDmo?

Oui

Supprimerlestables

Oui

ParamtragesdesvariablesLocales

- 4-

Formatdedatepardfaut

23122010

Formatdelheurepardfaut

23:00

Devisepardfaut

Euro

ENI Editions - All rigths reserved - educ hafa

Symboledeladevise

Codedeladevise(ISO4217)

EUR

Chiffressignificatifs

Sparateurdesmilliers

Sparateurdcimal

DroitsSystme
Utilisateurdelabasededonnes

sugarcrm

Motdepassedebasededonnes

(cach)123456789

NomdelutilisateuradmindeSugar

Admin

MotdepasseAdmindeSugar

(cach)sugar

EnvironnementSystme
VersionPHP

5.2.61+lenny8

ParsageduXML

OK

ModuleMBStrings

OK

EcrituredanslefichierdeconfigdeSugarCRM(config.php)

OK

Ecriturepossibledanslerpertoireutilisateur

OK

Ecriturepossibledanslessousrpertoiresdesmodulesetlesfichiers

OK

Ecriturepossibledanslessousrpertoiresdedonnes

OK

Ecriturepossibledanslessousrpertoiresdecache

OK

LimiteMmoirePHP>=

OK(128M)

ModuleZLIBCompression

OK

IMAPModule

OK

LibrairiecURL

OK

Tailledesfichiersdupload

OK

nOTE:Votrefichierdeconfigurationphp(php.ini)estsituici:

/etc/php5/apache2/php.ini

InstallationdeSugar(boutonInstaller)
Laconnexionseffectuelaideduloginadmin :

ENI Editions - All rigths reserved - educ hafa

- 5-


CasdelinstallationdeLiz(AdministrationdesappelsAsteriskdansSugarCRM)
Packagesncessaires
Au pralable, il faut effectuer linstallation des packages suivants : perl, libsoapliteperl,libasteriskagiperl, libossp
uuidperl,laidedelacommande aptgetinstall .
ScriptAGI
Il est ncessaire de placer le fichier cid.agi dans le dossier /var/lib/asterisk/cgibin et de lui donner les droits
dexcution(chmod+x) :lefichierpeuttretlchargladressesuivante :
(http://dl.sugarforge.org/liz/liz/LizCallerIDLookupv0.91/cid.agi).
ConfigurationdansAsterisk
IlfautcreruncompteSugarCRMdanslefichierextensions.conf.
[globals]
SUGAR_HOST=http://localhost/SugarCRM
SUGAR_USER=username_sugar
SUGAR_PASS=password_sugar
Appelduscript
Lescriptcid.agiestappeldansledialplanparlacommande:
Exten => s, n, AGI(cid.agi)

Casdesappelsentrants
Lorsquunappelentrantseprsente,ilfautlancerlouverturedelafiche contact dansSugarCRMetfairesonnerle
tlphoneappel.
[incoming]
exten => _X.,1, Set(SUGAREXTENSION=${EXTEN})
exten => _X.,n,AGI(cid.agi)
exten => _X.,n,Dial(SIP/${EXTEN},,t)
exten => _X.,n,Hangup

- 6-

ENI Editions - All rigths reserved - educ hafa

Introduction
Lobjectif de cette annexe est de prsenter un plan de numrotation dune architecture de PME. Les deux fichiers
extensions.confetextensions_macro.confncessairessontprsentsetcomments.
Lescommentairessontprcdsducaractreetpermettentdapporteruncommentaireaudialplan.

ENI Editions - All rigths reserved - educ hafa

- 1-

FichierExtensions.conf
1.Contexte[general]
[general]
static=yes
writeprotect=no
autofalltrough=yes
clearglobalvars=no
proirityjumping=no
; les fichiers externes extensions_supervision.conf et
extensions_macro.conf sont inclus dans le dial plan
#include extensions_supervision.conf
#include extensions_macro.conf

2.Contexte[CONTEXT_BASIC]
Le contexte [CONTEXT_BASIC] est le contexte par dfaut dclar dans la dfinition des clients SIP de la table
clients_sipdelabasededonnesMySQLasterisk_db.
[CONTEXT_BASIC]
include => CONTEXT_SUPERVISION
include => CONTEXT_INTERNAL
include => CONTEXT_CONTROLE_MESSAGERIE
include => CONTEXT_CONTROL_FORWARD
include => CONTEXT_AGENCE_1
include => CONTEXT_AGENCE_2
include => CONTEXT_NATIONAL
include => CONTEXT_GSM
include => CONTEXT_MONACO
include => CONTEXT_BELGIQUE
include => CONTEXT_MESSAGES
include => CONTEXT_QUEUES
include => CONTEXT_TRUNK
include => CONTEXT_INTERCEPTION
include => CONTEXT_NUMEROS_ABREGES
include => CONTEXT_NUMEROS_BOX
include => CONTEXT_NUMEROS_URGENCES
include => CONTEXT_NUMEROS_VERTS
include => CONTEXT_NUMEROS_SURTAXES

3.Contexte[CONTEXT_MANAGERS]
Lecontexte[CONTEXT_MANAGERS]estdestinauxresponsablesdeservice.
[CONTEXT_MANAGERS]
include => CONTEXT_BASIC
include => CONTEXT_NUMEROS_SURTAXES_RESTREINTS
Ilinclut[CONTEXT_BASIC]et[CONTEXT_NUMEROS_SURTAXES_RESTREINTS]quisontprsentsciaprs.

4.Contexte[CONTEXT_CODIR]
Lecontexte[CONTEXT_CODIR]estdestinauxpostestlphoniquesdesmembresduComitdeDirection.
[CONTEXT_CODIR]
include => CONTEXT_MANAGERS
include => CONTEXT_INTERNATIONAL

ENI Editions - All rigths reserved - educ hafa

- 1-

Ilinclut[CONTEXT_MANAGERS]et[CONTEXT_INTERNATIONAL]quisontprsentsciaprs.

5.Contexte[CONTEXT_INCOMING]
Lecontexte[CONTEXT_INCOMING]estlecontextequiatdclardanslefichierdeconfiguration/etc/zaptel.conf.
Touslesappelsenprovenancedelextrieurysontgrs.
Chaque SDA est dfinie sur ses quatre derniers chiffres (choix de loprateur qui prsente les numros). Chaque
appelversuneSDAdclenchelafonctionMacro().
[CONTEXT_INCOMING]
exten => 5750,1,Macro(appel_sda,${EXTEN})
exten => 5751,1,Macro(appel_sda,${EXTEN})
exten => 5752,1,Macro(appel_sda,${EXTEN})
exten => 5753,1,Macro(appel_sda,${EXTEN})
exten => 5754,1,Macro(appel_sda,${EXTEN})
exten => 5755,1,Macro(appel_sda,${EXTEN})
exten => 5756,1,Macro(appel_sda,${EXTEN})
exten => 5757,1,Macro(appel_sda,${EXTEN})
exten => 5758,1,Macro(appel_sda,${EXTEN})
exten => 5759,1,Macro(appel_sda,${EXTEN})
exten => 5780,1,Macro(appel_sda,${EXTEN})
exten => 5781,1,Macro(appel_sda,${EXTEN})
exten => 5782,1,Macro(appel_sda,${EXTEN})
exten => 5783,1,Macro(appel_sda,${EXTEN})
exten => 5784,1,Macro(appel_sda,${EXTEN})
exten => 5785,1,Macro(appel_sda,${EXTEN})
exten => 5786,1,Macro(appel_sda,${EXTEN})
exten => 5787,1,Macro(appel_sda,${EXTEN})
exten => 5788,1,Macro(appel_sda,${EXTEN})
exten => 5789,1,Macro(appel_sda,${EXTEN})
exten => 5790,1,Macro(appel_sda,${EXTEN})
exten => 5791,1,Macro(appel_entrant_queue,${EXTEN})
exten => 5792,1,Macro(appel_entrant_queue,${EXTEN})
exten => 5793,1,Macro(fax,${EXTEN})
exten => 5794,1,Macro(appel_sda,${EXTEN})
exten => 5795,1,Macro(appel_entrant_queue,${EXTEN})
exten => 5796,1,Macro(appel_sda,${EXTEN})
exten => 5797,1,Macro(appel_sda,${EXTEN})
exten => 5798,1,Macro(appel_sda,${EXTEN})
exten => 5799,1,Macro(appel_entrant_queue_alc,${EXTEN})
exten => 1800,1,Macro(appel_entrant_queue,${EXTEN})
exten => 1840,1,Macro(appel_sda,${EXTEN})
exten => 1841,1,Macro(appel_sda,${EXTEN})
exten => 1842,1,Macro(appel_sda,${EXTEN})
exten => 1843,1,Macro(appel_entrant_queue,${EXTEN})
exten => 1844,1,Macro(appel_sda,${EXTEN})
exten => 1845,1,Macro(appel_sda,${EXTEN})
exten => 1846,1,Macro(appel_sda,${EXTEN})
exten => 1847,1,Macro(appel_sda,${EXTEN})
exten => 1848,1,Macro(appel_sda,${EXTEN})
exten => 1849,1,Macro(appel_sda,${EXTEN})
exten => 1851,1,Macro(appel_sda,${EXTEN})
exten => 1852,1,Macro(appel_sda,${EXTEN})
exten => 1853,1,Macro(appel_sda,${EXTEN})
exten => 1854,1,Macro(appel_sda,${EXTEN})

6.Contexte[CONTEXT_INTERNAL]
Lecontexte[CONTEXT_INTERNAL]contienttouteslesapplicationsconcernantunappelinterne.
[CONTEXT_INTERNAL]
; Ouverture dun canal de communication
exten => _1XXX,1,Answer()

- 2-

ENI Editions - All rigths reserved - educ hafa

; Requte Sql "Select * from asteriskdb.numeros where num


like 1XXX. Le rsultat de la requte sera prcd de var_.
Ensuite, nous testons si le numro interne compos est prsent
dans la table asteriskdb.numeros
;Si Vrai, aller lextension numeropresent
;Si Faux, aller lextension numeroabsent
exten => _1XXX,n,Realtime(numero_info, num, ${EXTEN}, var_)
exten => _1XXX,n,GotoIf($[test${var_num} !=
test]?numeropresent:numeroabsent)
; extension numeroabsent "le numro compos est inconnu",
; le fichier audio num-not-in-db.gsm (numro inconnu
dans notre base
; de donnes) est diffus, puis le canal
de communication est ferm.
exten => _1XXX,n(numeroabsent),playback(num-not-in-db)
exten => _1XXX,n,hangup()
; extension numeropresent, affectation de la valeur type
(issue de la requte prcdente) la variable TYPE_DESTINATAIRE.
exten => _1XXX,n(numeropresent),
Set(TYPE_DESTINATAIRE=${var_type})
exten => _1XXX,n,GotoIf($[${TYPE_DESTINATAIRE}=POSTE]?
appelposte:appelqueue)
; Ensuite, le contenu de la variable TYPE_DESTINATAIRE est test
; Si POSTE, aller lextension appelposte
; Si QUEUE, aller lextension appelqueue
; extension nomme appelposte, requte SQL du type Select *.....
Affectation des variables CFIM (Renvois Imediat : Call Forward
Immediate) et CFDND (Fonctions Ne pas Dranger : Call Forward
Do Not Distrub).
Ensuite est-ce que le poste est en CFIM ?
Si Vrai, execution de la macro cfimediat, puis fermeture du
canal de communication.
; Si Faux, est-ce que le poste est en CFDND,
; Si Vrai, lappel est envoy sur le voicemail INDISPONIBLE du
; destinataire puis fermeture du canal de communication.
; Si Faux, excution de la macro appel_poste_interne puis
; fermeture du canal de communication.
exten => _1XXX,n(appelposte),Realtime(device_info,
num,${EXTEN},var_)
exten => _1XXX,n,Set(CFIM=${var_cfim_int})
exten => _1XXX,n,Set(CFDND=${var_cfdnd_int})
exten => _1XXX,n,Gotoif($[${CFIM}=0]?STEP:CFIM)
exten => _1XXX,n,Macro(cfimediat,${EXTEN},${CFIM})
exten => _1XXX,n,Hangup()
exten => _1XXX,n(STEP),Gotoif($[${CFDND}=0]?NEXT:CFDND)
exten => _1XXX,n,VoiceMail(u${EXTEN}@default)
exten => _1XXX,n,Hangup()
exten => _1XXX,n(NEXT),Macro(appel_poste_interne,${EXTEN})
exten => _1XXX,n,Hangup()
; Extension appelqueue, le poste appel est une queue. Execution
de la macro appel_queue_interne puis fermeture du canal
de communication.
exten => _1XXX,n(appelqueue),Macro(appel_queue_interne,${EXTEN})
exten => _1XXX,n,Hangup()

7.Contexte[AGENCE_1]
Le contexte [AGENCE_1] contient lensemble des procdures lies un appel interne dun poste de lagence

ENI Editions - All rigths reserved - educ hafa

- 3-

AGENCE_1(2XXX).Cecontexteestsimilaireaucontexteprcdent.
[CONTEXT_AGENCE_1]
; ouverture dun Canal de communication
; requte SQL du type Select * from...
; test si le numro interne compos est stock dans la table
asterisk.device
; Si Vrai, se rendre lextension nomme numok
; Si Faux, se rendre lextension nomme erreur
; diffusion du message num-not-indb.gsm et raccrochage du canal
de communication
Extension nomme numok, on teste le contenu de la variable
TYPE_DESTINATAIRE.
Si POSTE, se rendre lextension nomme appelposte
Si QUEUE, se rendre lextension nomme internequeue
exten => _2XXX,1,Answer()
exten => _2XXX,n,Realtime(device_info,num,${EXTEN},var_)
exten => _2XXX,n,GotoIf($[test${var_num} != test]?numok:erreur)
exten => _2XXX,n(erreur),playback(num-not-in-db)
exten => _2XXX,n,hangup()
exten => _2XXX,n(numok),Set(TYPE_DESTINATAIRE=${var_type})
exten => _2XXX,n,GotoIf($[${TYPE_DESTINATAIRE}=POSTE]?appelposte:
internequeue)
Extension nomme appelposte, requte SQL du type Select *.....
Affectation de variables CFIM (Renvois Imediat) et CFDND
(Fonctions Ne pas Dranger).
Ensuite test si le poste est en CFIM,
Si Vrai, excution de la macro cfimediat, puis fermeture du canal
de communication.
Si Faux, test si le poste est en CFDND,
Si Vrai, envoi de lappel sur le voicemail INDISPONIBLE du
destinataire puis fermeture le canal de communication.
Si Faux, execution de la macro appel_poste_interne puis
fermeture du canal de communication.
exten => _2XXX,n(appel_poste),Realtime(device_info,num,
${EXTEN},var_)
exten => _2XXX,n,Set(CFIM=${var_cfim_int})
exten => _2XXX,n,Set(CFDND=${var_cfdnd_int})
exten => _2XXX,n,Gotoif($[${CFIM}=0]?STEP:CFIM)
exten => _2XXX,n(CFIM),Macro(cfimediat,${EXTEN},${CFIM})
exten => _2XXX,n,Hangup()
exten => _2XXX,n(STEP),Gotoif($[${CFDND}=0 ]?NEXT:CFDND)
exten => _2XXX,n(CFDND),VoiceMail(u${EXTEN}@default)
exten => _2XXX,n,Hangup()
exten => _2XXX,n(NEXT),Macro(appel_poste_interne,${EXTEN})
exten => _2XXX,n,Hangup()
Extension nomme internequeue, le poste appel est une queue.
On excute la macro appel_queue_interne puis fermeture du
canal de communication
exten => _2XXX,n(internequeue),Macro(appel_queue_interne,
${EXTEN})
exten => _2XXX,n,Hangup()

8.ContexteAGENCE_2[CONTEXT_AGENCE_2]
Ce contexte correspond lagence AGENCE_2 qui a pour plan de numrotation 3XXX. Il est identique au contexte
AGENCE_1.

9.Contexte[CONTEXT_NATIONAL]
Lecontexte[CONTEXT_NATIONAL]traitelensembledesappelscommenantpar01,02,03,04ou05.

- 4-

ENI Editions - All rigths reserved - educ hafa

[CONTEXT_NATIONAL]
; ouverture dun canal de communication. Excution de la macro
appel_sortant auquel est pass en argument le numro compos
puis fermeture du canal de communication.
exten => _00[1-5]XXXXXXXX,1,Answer()
exten => _00[1-5]XXXXXXXX,n,Macro(appel_sortant,${EXTEN})
exten => _00[1-5]XXXXXXXX,n,Hangup()

10.Contexte[CONTEXT_BOX]
Lecontexte[CONTEXT_BOX]traitelensembledesappelsdestinationdesnumrosattribusauxproduitsdetype
FreeBox,LiveBox...
[CONTEXT_BOX]
Le principe est le mme que pour le contexte [CONTEXT_INTERNAL].
Ouverture dun canal de communication. Excution de la macro
appel_sortant auquel est pass en argument le numro compos
puis fermeture du canal de communication.
exten => _009XXXXXXXX,1,Answer()
exten => _009XXXXXXXX,n,Macro(appel_sortant,${EXTEN})
exten => _009XXXXXXXX,n,Hangup()
exten => _00870XXXXXX,1,Answer()
exten => _00870XXXXXX,n,Macro(appel_sortant,${EXTEN})
exten => _00870XXXXXX,n,Hangup()
exten => _00871XXXXXX,1,Answer()
exten => _00871XXXXXX,n,Macro(appel_sortant,${EXTEN})
exten => _00871XXXXXX,n,Hangup()
exten => _00873XXXXXX,1,Answer()
exten => _00873XXXXXX,n,Macro(appel_sortant,${EXTEN})
exten => _00873XXXXXX,n,Hangup()
exten => _00874XXXXXX,1,Answer()
exten => _00874XXXXXX,n,Macro(appel_sortant,${EXTEN})
exten => _00874XXXXXX,n,Hangup()
exten => _00875XXXXXX,1,Answer()
exten => _00875XXXXXX,n,Macro(appel_sortant,${EXTEN})
exten => _00875XXXXXX,n,Hangup()
exten => _00876XXXXXX,1,Answer()
exten => _00876XXXXXX,n,Macro(appel_sortant,${EXTEN})
exten => _00876XXXXXX,n,Hangup()
exten => _00877XXXXXX,1,Answer()
exten => _00877XXXXXX,n,Macro(appel_sortant,${EXTEN})
exten => _00877XXXXXX,n,Hangup()
exten => _00878XXXXXX,1,Answer()
exten => _00878XXXXXX,n,Macro(appel_sortant,${EXTEN})
exten => _00878XXXXXX,n,Hangup()
exten => _00879XXXXXX,1,Answer()
exten => _00879XXXXXX,n,Macro(appel_sortant,${EXTEN})
exten => _00879XXXXXX,n,Hangup()

11.Contexte[CONTEXT_NUMEROS_ABREGES]
Le contexte [CONTEXT_NUMEROS_ABREGES] traite lensemble des appels mis via la numrotation abrgs. Les
numrosabrgssontstocksdanslatableasterisk.abrgsdeMySql.
[CONTEXT_NUMEROS_ABREGES]
ENI Editions - All rigths reserved - educ hafa

- 5-

; Mme principe que pour le contexte [CONTEXT_INTERNAL] :


; ouverture dun canal de communication
; Excution de la macro appel_abreges auquel est pass en argument
; le numro compos puis fermeture du canal de communication
exten => _8XXXXX,1,Answer()
exten => _8XXXXX,n,Macro(appel_abrege,${EXTEN})
exten => _8XXXXX,n,Hangup()

12.Contexte[CONTEXT_GSM]
Le contexte [CONTEXT_GSM] traite lensemble des appels destination des numros de tlphones mobiles
commenantpar06.
[CONTEXT_GSM]
; Mme principe que pour le contexte [CONTEXT_INTERNAL] :
ouverture dun canal de communication.
; Excution de la macro appel_sortant auquel est pass en
argument le numro compos puis fermeture du canal
de communication.
exten => _006XXXXXXXX,1,Answer()
exten => _006XXXXXXXX,n,Macro(appel_sortant,${EXTEN})
exten => _006XXXXXXXX,n,Hangup()

13.Contexte[CONTEXT_MONACO]
Lecontexte[CONTEXT_MONACO]traitelensembledesappelsdestinationdelaprincipautdeMonaco.
Cecontexteestaccessibletous,dufaitquelaPMEcomptedesclientssurMONACO.
[CONTEXT_MONACO]
; Mme principe que pour le contexte [CONTEXT_INTERNAL]:
; Ouverture dun canal de communication. Execution de la macro
; appel_sortant auquel est pass en argument le numro
; compos puis fermeture du canal de communication.
exten => _000377X.,1,Answer()
exten => _000377X.,n,Macro(appel_sortant,${EXTEN})
exten => _000377X.,n,Hangup()

14.Contexte[CONTEXT_BELGIQUE]
Lecontexte[CONTEXT_BELGIQUE]traitelensembledesappelsdestinationdelaBelgique.
Cecontexteestaccessibletous,dufaitquelaPMEcomptedesfournisseursetclientssurlaBELGIQUE.
[CONTEXT_BELGIQUE]
; Mme principe que pour le contexte [CONTEXT_INTERNAL]:
; Ouverture dun canal de communication. Execution de la macro
; appel_sortant auquel est pass en argument le numro
; compos puis fermeture du canal de communication.
exten => _00032X.,1,Answer()
exten => _00032X.,n,Macro(appel_sortant,${EXTEN})
exten => _00032X.,n,Hangup()

15.Contexte[CONTEXT_INTERNATIONAL]
Lecontexte[CONTEXT_INTERNATIONAL]traitelensembledesappelsdestinationdelinternational.
Cecontexteestaccessibleuniquementaupostedpendantducontexte[CONTEXT_CODIR].
[CONTEXT_INTERNATIONAL]

- 6-

ENI Editions - All rigths reserved - educ hafa

; Mme principe que pour le contexte [CONTEXT_INTERNAL]:


; Ouverture dun canal de communication. Execution de la macro
; appel_sortant auquel est pass en argument le numro
; compos puis fermeture du canal de communication.
exten => _000X.,1,Answer()
exten => _000X.,n,Macro(appel_sortant,${EXTEN})
exten => _000X.,n,Hangup()

16.Contexte[CONTEXT_URGENCY]
Lecontexte[CONTEXT_URGENCY]traitelensembledesappelsdURGENCE:Pompiers,Police...
Cecontexteestaccessibletouslesutilisateurs.
[CONTEXT_URGENCY]
; Mme principe que pour le contexte [CONTEXT_INTERNAL]:
; Ouverture dun canal de communication. Execution de la macro
; appel_sortant auquel est pass en argument le numro
; compos puis fermeture du canal de communication.
exten => _01X,1,Answer()
exten => _01X,n,Macro(appel_sortant,${EXTEN})
exten => _01X,n,Hangup()
exten => _0112,1,Answer()
exten => _0112,n,Macro(appel_sortant,${EXTEN})
exten => _0112,n,Hangup()

17.Contexte[CONTEXT_VERT]
Lecontexte[CONTEXT_VERT]traitelensembledesappelsditsGratuits.
Cecontexteestaccessibletouslesutilisateurs.
[CONTEXT_VERT]
; Mme principe que pour le contexte [CONTEXT_INTERNAL]:
; Ouverture dun canal de communication. Execution de la macro
; appel_sortant auquel est pass en argument le numro
; compos puis fermeture du canal de communication.
exten => _010XX,1,Answer()
exten => _010XX,n,Macro(appel_sortant,${EXTEN})
exten => _010XX,n,Hangup()
exten => _00800.,1,Answer()
exten => _00800.,n,Macro(appel_sortant,${EXTEN})
exten => _00800.,n,Hangup()
exten => _00805.,1,Answer()
exten => _00805.,n,Macro(appel_sortant,${EXTEN})
exten => _00805.,n,Hangup()

18.Contexte[CONTEXT_SURTAXERESTREINT]
Lecontexte[CONTEXT_SURTAXERESTREINT]traitelensembledesappelssurtaxssansrestrictions.
Cecontexteestrservauxutilisateursdescontextes[CONTEXTE_MANAGERS]et[CONTEXT_CODIR].
[CONTEXT_SURTAXE-RESTREINT]
; Mme principe que pour le contexte [CONTEXT_INTERNAL]:
; Ouverture dun canal de communication. Execution de la macro
; appel_sortant auquel est pass en argument le numro
; compos puis fermeture du canal de communication.
exten => _03XXX,1,Answer()

ENI Editions - All rigths reserved - educ hafa

- 7-

exten => _03XXX,n,Macro(appel_sortant,${EXTEN})


exten => _03XXX,n,Hangup()
exten => _00801.,1,Answer()
exten => _00801.,n,Macro(appel_sortant,${EXTEN})
exten => _00801.,n,Hangup()
exten => _00803.,1,Answer()
exten => _00803.,n,Macro(appel_sortant,${EXTEN})
exten => _00803.,n,Hangup()
exten => _00810.,1,Answer()
exten => _00810.,n,Macro(appel_sortant,${EXTEN})
exten => _00810.,n,Hangup()
exten => _00820.,1,Answer()
exten => _00820.,n,Macro(appel_sortant,${EXTEN})
exten => _00820.,n,Hangup()
exten => _00825.,1,Answer()
exten => _00825.,n,Macro(appel_sortant,${EXTEN})
exten => _00825.,n,Hangup()
exten => _00836.,1,Answer()
exten => _00836.,n,Macro(appel_sortant,${EXTEN})
exten => _00836.,n,Hangup()
exten => _0089.,1,Answer()
exten => _0089.,n,Macro(appel_sortant,${EXTEN})
exten => _0089.,n,Hangup()
exten => _0118.,1,Answer()
exten => _0118.,n,Macro(appel_sortant,${EXTEN})
exten => _0118.,n,Hangup()

19.Contexte[CONTEXT_SURTAXE]
Lecontexte[CONTEXT_SURTAXE]traitelensembledesappelssurtaxsavecrestrictions.
Cecontexteestaccessibletouslesutilisateurs.Lesnumrosautorisssontstocksdanslatableasterisk.surtaxe
deMySql.
[CONTEXT_SURTAXE]
; Mme principe que pour le contexte [CONTEXT_INTERNAL]:
; Ouverture dun canal de communication. Execution de la macro
; appel_sortant auquel est pass en argument le numro
; compos puis fermeture du canal de communication.
exten => _008XXXXXXXX,1,Answer()
exten => _008XXXXXXXX,n,Macro(appel_surtaxe,${EXTEN})
exten => _008XXXXXXXX,n,Hangup()

20.Contexte[CONTEXT_QUEUE]
Le contexte [CONTEXT_QUEUE] englobe les procdures de connexions et dconnexions des membres actifs des
queues.Cecontexteestaccessibletouslesutilisateurs.
Rgles:

- 8-

*11XXXpermetdajouterunmembrelaqueueXXXX.

*01XXXpermetdedconnecterunmembredelaqueueXXXX.

ENI Editions - All rigths reserved - educ hafa

[CONTEXT_QUEUE]
; Ouverture dun canal de communication. Excution de la
macro inqueue auquel est pass en argument le numro
de la queue do lon ajoute le membre (le poste qui
a compos *11XXX), puis fermeture du canal de communication.
exten => _*11XXX,1,Answer()
exten => _*11XXX,n,Macro(inqueue,${EXTEN})
exten => _*11XXX,n,Hangup()
; Ouverture dun canal de communication. Excution de la macro
outqueue auquel est pass en argument le numro
de la queue do lon dconnecte le membre (le poste qui
a compos *01XXX), puis fermeture du canal de communication.
exten => _*01XXX,1,Answer()
exten => _*01XXX,n,Macro(outqueue,${EXTEN})
exten => _*01XXX,n,Hangup()

21.Contexte[CONTEXT_TRUNK]
Lecontexte[CONTEXT_TRUNK]traitelensembledesappelsdestinationdeserveursAsteriskoudautrestypesde
serveursSIPdistants.
[CONTEXT_TRUNK]
; En composant 5XX, prsentation du numro compos au
serveur distant (192.168.1.100) via le protocole IAX2.
exten => _5.,1,Dial(IAX2/siege:mypassword@192.168.1.100/${EXTEN})
; En composant un numro commenant par 6, lappel est dirig
vers un serveur SIP via le protocole SIP.
exten => _6XXXX,1,Answer()
exten => _6XXXX,n,Dial(SIP/192.168.45.100/${EXTEN:1})
exten => _6XXXX,n,Hangup()

22.Contexte[CONTEXT_CONTROLEMESSAGERIE]
Le contexte [CONTEXT_CONTROLEMESSAGERIE] englobe les procdures de connexion au service voicemail pour la
consultationdesmessagesvocaux.Cecontexteestaccessibletouslesutilisateurs.
Deuxoptionssontaccessibles:

*98permetdeconsultersesmessagesdepuisnimportequelpostedurseau

*99permetdeconsultersesmessagesuniquementdepuislepostedestinatairedesmessages.

[CONTEXT_CONTROLE_MESSAGERIE]
; Explication : ouverture dun canal de communication
; Attente d1 seconde, puis excution de lapplication voicemail
sans option. De ce fait, il sera demand lutilisateur de
saisir son numro de poste, puis son mot de passe de messagerie.
; Puis fermeture du canal de communication.
exten => _*98,1,Answer()
exten => _*98,n,Wait(1)
exten => _*98,n,VoiceMailMain()
exten => _*98,n,Hangup()
; Explication : ouverture dun canal de communication
; Attente d1 seconde, puis excution de lapplication voicemail
avec en option ${CALLERIDNUM}@default. Avec cette option,
lutilisateur ne devra saisir que son mot de passe.
Puis fermeture du canal de communication.
exten => _*99,1,Answer()

ENI Editions - All rigths reserved - educ hafa

- 9-

exten => _*99,n,Wait(1)


exten => _*99,n,VoiceMailMain(${CALLERIDNUM}@default)
exten => _*99,n,Hangup()

23.Contexte[CONTEXT_CONTROLFORWARD]
Le contexte [CONTEXT_CONTROLFORWARD] englobe les procdures de gestion des renvois sur Non Rponse,
Occupation,ImmdiatoulafonctionNePasDranger.Cecontexteestaccessibletouslesutilisateurs.
Rgles:

*8XXXX:Grelesrenvoispourlesappelsenprovenancedespostesinternes.

*9XXXX:Grelesrenvoispourlesappelsexternes(valableuniquementpourlestitulairesdeSDA).

[CONTEXT_CONTROL-FORWARD]
*80XXXX permet de programmer un renvoi sur non reponse
pour les appels internes vers un autre poste du rseau.
; Explication : ouverture dun canal de communication.
; Attente de 0.5 secondes puis lancement dune requte SQL
du type " Update asterisk.device Set cfnr_int =numero_du
poste_de_renvoi where num = numro_de_l_appelant ".
; Puis diffusion lutilisateur dun message disant que
le renvoi sur non rponse est activ.
; Enfin, fermeture du canal de communication.
exten => _*80XXXX,1,Answer()
exten => _*80XXXX,n,Wait(0.5)
exten => _*80XXXX,n,RealTimeUpdate(device_info,num,
${CALLERIDNUM},cfnr_int,${EXTEN:3})
exten => _*80XXXX,n,Playback(call-fwd-no-ans)
exten => _*80XXXX,n,Playback(activated)
exten => _*80XXXX,n,Hangup()
; *81 permet dannuler un renvoi sur non reponse pour les appels
internes.
; Explication : ouverture dun canal de communication.
; Attente de 0.5 secondes puis lancement dune requte
SQL du type " Update asterisk.device Set cfnr_int= 0 where
number = numro_de_l_appelant ".
; Puis diffusion lutilisateur dun message disant que
le renvoi sur non rponse est dsactiv.
; Enfin, fermeture du canal de communication.
exten => _*81,1,Answer()
exten => _*81,n,Wait(0.5)
exten => _*81,n,RealTimeUpdate(device_info,num,
${CALLERIDNUM},cfnr_int,0)
exten => _*81,n,Playback(call-fwd-no-ans)
exten => _*81,n,Playback(de-activated)
exten => _*81,n,Hangup()
;*82XXXX permet de programmer un renvoi sur occupation
pour les appels internes vers un autre poste du rseau.
; Explication : Mme Principe que pour lextension *80,
seul le champs mettre jour de la requte change
ainsi que le message diffus lappelant.
exten => _*82XXXX,1,Answer()
exten => _*82XXXX,n,Wait(0.5)
exten => _*82XXXXXX,n,RealTimeUpdate(device_info,num,
${CALLERIDNUM},cfbus_int,${EXTEN:3})
exten => _*82XXXX,n,Playback(call-fwd-on-busy)
exten => _*82XXXX,n,Playback(activated)
exten => _*82XXXX,n,Hangup()
; *83 permet dannuler un renvoi sur occupation pour les appels
internes vers un autre poste du rseau.
; Explication: Mme Principe que pour lextension
*81, seul le champs mettre jour de la requte change
- 10 -

ENI Editions - All rigths reserved - educ hafa

ainsi que le message diffus lappelant.


exten => _*83,1,Answer()
exten => _*83,n,Wait(0.5)
exten => _*83,n,RealTimeUpdate(device_info,num,
${CALLERIDNUM},cfbus_int,0)
exten => _*83,n,Playback(call-fwd-on-busy)
exten => _*83,n,Playback(de-activated)
exten => _*83,n,Hangup()
; *84XXXXXX permet de programmer un renvoi immdiat
pour tous les appels internes.
; Explication : Mme Principe que pour lextension *80,
seul le champs mettre jour de la requte
change ainsi que le message diffus lappelant.
exten => _*84XXXX,1,Answer()
exten => _*84XXXX,n,Wait(0.5)
exten => _*84XXXXXX,n,RealTimeUpdate(device_info,num,
${CALLERIDNUM},cfim_int,${EXTEN:3})
exten => _*84XXXX,n,Playback(call-fwd-unconditional)
exten => _*84XXXX,n,Playback(activated)
exten => _*84XXXX,n,Wait(5)
exten => _*84XXXX,n,Hangup()
; *85 permet dannuler un renvoi immdiat pour les appels internes.
; Explication : Mme Principe que pour lextension *81, seul le
champs mettre jour de la requte change ainsi que le message
diffus lappelant.
exten => _*85,1,Answer()
exten => _*85,n,Wait(0.5)
exten => _*85,n,RealTimeUpdate(device_info,num,
${CALLERIDNUM},cfim_int,0)
exten => _*85,n,Playback(call-fwd-unconditional)
exten => _*85,n,Playback(de-activated)
exten => _*85,n,Hangup()
; *86 permet de programmer la fonction Ne Pas Deranger
pour tous les appels internes.
; Les appels seront transmis au voicemail Unavailable du poste.
; Explication: ouverture dun canal de communication.
; Attente de 0.5 secondes puis lancement dune requte SQL du type
" Update asterisk.device Set cfdnd_int = 1 where number =
numro_de_l_appelant ".
; Puis diffusion lutilisateur dun message disant que le renvoi
indisponibilit est activ.
; Enfin, fermeture du canal de communication.
exten => _*86,1,Answer()
exten => _*86,n,RealTimeUpdate(device_info,num,
${CALLERIDNUM},cfdnd_int,1)
exten => _*86,n,Playback(call-forward)
exten => _*86,n,Playback(unavailable)
exten => _*86,n,Playback(activated)
exten => _*86,n,Hangup()
; *87 permet dannuler la fonction Ne Pas Deranger pour
les appels internes.
; Explication : ouverture dun canal de communication.
; attente de 0.5 secondes puis lancement dune requte SQL du type
" Update asterisk.device Set cfdnd_int= 0 where number =
numro_de_l_appelant ".
; Puis diffusion lutilisateur dun message disant que le renvoi
indisponibilit est dsactiv.
; Enfin, fermeture du canal de communication.
exten => _*87,1,Answer()
exten => _*87,n,RealTimeUpdate(device_info,num,
${CALLERIDNUM},cfdnd_int,0)
exten => _*87,n,Playback(call-forward)
exten => _*87,n,Playback(unavailable)
exten => _*87,n,Playback(de-activated)
exten => _*87,n,Hangup()

ENI Editions - All rigths reserved - educ hafa

- 11 -

; *90XXXX permet de programmer un renvoi sur non rponse


pour les appels externes vers un autre poste du rseau.
; Explication : ouverture dun canal de communication.
; Attente de 0.5 secondes puis lancement dune requte SQL du type
" Update asterisk.device Set cfnr_int =numero_du poste_de_renvoi
where number = numro_de_l_appelant ".
; Puis diffusion lutilisateur dun message disant que
le renvoi sur non rponse est activ.
; Enfin, fermeture du canal de communication.
exten => _*90XXXX,1,Answer()
exten => _*90XXXX,n,Wait(0.5)
exten => _*90XXXX,n,RealTimeUpdate(device_info,num,
${CALLERIDNUM},cfnr_ext,${EXTEN:3})
exten => _*90XXXX,n,Playback(call-fwd-no-ans)
exten => _*90XXXX,n,Playback(activated)
exten => _*90XXXX,n,Hangup()
; *91 permet dannuler un renvoi sur non rponse pour
les appels externes.
; Explication : ouverture dun canal de communication.
; Attente de 0.5 secondes puis lancement dune requte SQL
du type " Update asterisk.device Set cfnr_ext= 0 where number =
numro_de_l_appelant ".
; Puis diffusion lutilisateur dun message disant que
le renvoi sur non rponse est dsactiv.
Enfin, fermeture du canal de communication.
exten => _*91,1,Answer()
exten => _*91,n,Wait(0.5)
exten => _*91,n,RealTimeUpdate(device_info,num,${CALLERIDNUM},cfnr_ext,0)
exten => _*91,n,Playback(call-fwd-no-ans)
exten => _*91,n,Playback(de-activated)
exten => _*91,n,Hangup()
; *92XXXX permet de programmer un renvoi sur occupation
pour les appels externes vers un autre poste du rseau.
; Explication : ouverture dun canal de communication.
; Attente de 0.5 secondes puis lancement dune requte SQL du type
" Update asterisk.device Set cfbus_ext = numero_du poste_de_renvoi
where number = numro_de_l_appelant ".
; Puis diffusion lutilisateur dun message disant que
le renvoi sur occupation est activ.
; Enfin, fermeture du canal de communication.
exten => _*92XXXX,1,Answer()
exten => _*92XXXX,n,Wait(0.5)
exten => _*82XXXXXX,n,RealTimeUpdate(device_info,
num,${CALLERIDNUM},cfbus_int,${EXTEN:3})
exten => _*92XXXX,n,Playback(call-fwd-on-busy)
exten => _*92XXXX,n,Playback(activated)
exten => _*92XXXX,n,Hangup()
; *93 permet dannuler un renvoi sur occupation pour les appels
externes.
; Explication : ouverture dun canal de communication.
; Attente de 0.5 secondes puis lancement dune requte SQL du type
" Update asterisk.device Set cfbus_ext= 0 where number =
numro_de_l_appelant ".
; Puis diffusion lutilisateur dun message disant que
le renvoi sur occupation est dsactiv.
; Enfin, fermeture du canal de communication.
exten => _*93,1,Answer()
exten => _*93,n,Wait(0.5)
exten => _*93,n,RealTimeUpdate(device_info,num,
${CALLERIDNUM},cfbus_ext,0)
exten => _*93,n,Playback(call-fwd-on-busy)
exten => _*93,n,Playback(de-activated)
exten => _*93,n,Hangup()
; *94XXXX permet de programmer un renvoi immdiat
pour tous les appels internes.

- 12 -

ENI Editions - All rigths reserved - educ hafa

; Explication : ouverture dun canal de communication.


; On attend 0.5 secondes puis on effectue une requte SQL
du type " Update asterisk.device Set cfim_ext = numero_du
poste_de_renvoi where number = numro_de_l_appelant ".
; Puis diffusion lutilisateur dun message disant que
le renvoi immdiat est activ.
; Enfin, fermeture du canal de communication.
exten => _*94XXXX,1,Answer()
exten => _*94XXXX,n,Wait(0.5)
exten => _*94XXXXXX,n,RealTimeUpdate(device_info,num,
${CALLERIDNUM},cfim_ext,${EXTEN:3})
exten => _*94XXXX,n,Playback(call-fwd-unconditional)
exten => _*94XXXX,n,Playback(activated)
exten => _*94XXXX,n,Wait(5)
exten => _*94XXXX,n,Hangup()
*95 permet dannuler un renvoi immdiat pour les appels externes.
; Explication : ouverture dun canal de communication.
; Attente de 0.5 secondes puis lancement dune requte SQL
du type " Update asterisk.device Set cfim_ext = 0 where number =
numro_de_l_appelant ".
; Puis, diffusion lutilisateur dun message disant que
le renvoi immdiat est dsactiv.
; Enfin, fermeture du canal de communication.
exten => _*95,1,Answer()
exten => _*95,n,Wait(0.5)
exten => _*95,n,RealTimeUpdate(device_info,num,
${CALLERIDNUM},cfim_ext,0)
exten => _*95,n,Playback(call-fwd-unconditional)
exten => _*95,n,Playback(de-activated)
exten => _*95,n,Hangup()
; *96 permet de programmer la fonction Ne Pas Deranger
pour tous les appels externes.
; Les appels seront transmis au voicemail Unavailable du poste.
; Explication : ouverture dun canal de communication.
; Attente de 0.5secondes puis lancement dune requte SQL
du type " Update asterisk.device Set cfdnd_ext = 1 where number =
numro_de_l_appelant ".
; Puis, diffusion lutilisateur dun message disant que
le renvoi pour indisponibilit est activ.
; Enfin, fermeture du canal de communication.
exten => _*96,1,Answer()
exten => _*96,n,RealTimeUpdate(device_info,num,
${CALLERIDNUM},cfdnd_ext,1)
exten => _*96,n,Playback(call-forward)
exten => _*96,n,Playback(unavailable)
exten => _*96,n,Playback(activated)
exten => _*96,n,Hangup()
; *97 permet dannuler la fonction Ne Pas Deranger pour
les appels externes.
; Explication : ouverture dun canal de communication.
; Attente de 0.5 secondes puis lancement dune requte SQL
du type " Update asterisk.device Set cfdnd_ext= 0 where number =
numro_de_l_appelant ".
;Puis, diffusion lutilisateur dun message disant que
le renvoi pour indisponibilit est dsactiv.
; Enfin, fermeture du canal de communication.
exten => _*97,1,Answer()
exten => _*97,n,RealTimeUpdate(device_info,num,${CALLERIDNUM},cfdnd_ext,0)
exten => _*97,n,Playback(call-forward)
exten => _*97,n,Playback(unavailable)
exten => _*97,n,Playback(de-activated)
exten => _*97,n,Hangup()

ENI Editions - All rigths reserved - educ hafa

- 13 -

24.Contexte[CONTEXT_MESSAGE]
Lecontexte[CONTEXT_MESSAGE]permetdenregistrerunmessage.Cemessageseraensuitediffusenlieuetplace
du traditionnel voicemail. Le message enregistr est surtout utilis lorsque quil ny a plus aucun membre dans les
queues.Cecontexteestaccessibletouslesutilisateurs.
Rgle:*2suividunumrodeposteoffrelapossibilitdenregistrerunmessagepourleposteXXXX
[CONTEXT_MESSAGE]
; Explication : ouverture dun canal de communication.
; Diffusion lutilisateur dun message linvitant enregistrer
son message aprs la tonalit.
; Excution de lapplication Record avec en option le nom
du fichier sauvegarder.
; Enfin, fermeture du canal de communication.
exten => _*2XXXXXX,1,Answer()
exten => _*2XXXXXX,n,Playback(pls-rcrd-name-at-tone)
exten => _*2XXXXXX,n,Record(/var/lib/asterisk/sounds/
message_${EXTEN:2}.gsm)
exten => _*2XXXXXX,n,HangUp()

25.Contexte[CONTEXT_fromtrunk]
Lecontexte[CONTEXT_fromtrunk]estlecontextepardfautdesserveursasteriskdistants.
Onyinclutlescontextes[CONTEXTE_INTERNAL],[CONTEXT_AGENCE_1]et[CONTEXT_AGENCE2].
Ceci signifie quun utilisateur dun serveur distant pourra contacter toutes les extensions gres par les contextes
[INTERNES],[AGENCE_1]et[AGENCE_2].
[CONTEXT_from-trunk]
include => CONTEXT_INTERNAL
include => CONTEXT_AGENCE_1
include => CONTEXT_AGENCE_2

- 14 -

ENI Editions - All rigths reserved - educ hafa

Extensions_macro.conf
1.appel_sda
La macro appel_sda est utilise par le contexte [context_incoming] et est appele chaque fois quun appel se
prsentesuruneSDAaffecteuncompteSIP.
[macro-appel_sda]
;***********************
;Explication:
;On ouvre un canal de communication
;Requte du Type Sql " select * from... "
;Affectation de la variable DEST_CFDND =
champ cfdnd_ext issu de la requte.
;Affectation de la variable DEST_CFIM =
champ cfim_ext issu de la requte.
;On vrifie que le poste titulaire de la SDA nest pas en renvoi
immdiat (CFIM) ou en fonction " Ne pas Dranger " (CFDND)
exten
exten
exten
exten

=>
=>
=>
=>

s,1,Answer()
s,n,Realtime(device_info,sda,${MACRO_EXTEN},var_)
s,n,set(DEST_CFDND=${var_cfdnd_ext})
s,n,set(DEST_CFIM=${var_cfim_ext})

;***********************
;Explication:
;On teste si le poste est en CFDND
;[ Si Vrai, se rendre lextension nomme next.
;[ Si Faux, se rendre lextension nomme cfdnd-sda
(fonction Ne pas Dranger active sur le poste).
;Extension nomme next.
;On teste si le poste en CFIM.
[ Si Vrai, se rendre lextension nomme sda-ok.
[ Si Faux, se rendre lextension nome cfim-sda (renvoi
immdiat active sur le poste).
exten => s,n,GotoIf($[${DEST_CFDND} =0]?next:cfdnd-sda)
exten => s,n(next),GotoIf($[${DEST_CFIM} =0]?sda-ok:cfim-sda)
exten => s,n(sda-ok),Realtime(device_info,sda,
${MACRO_EXTEN},var_)
exten => s,n,set(DEVICE_DESTINATAIRE=${var_number})
exten => s,n,set(DESTINATAIRE=${var_cid_name})
;***********************
;Extension nomme sda-ok.
;Explication:
;Requte du Type Sql " select * from... "
;Affectation de la variable DEVICE_DESTINATAIRE = champ number
issu de la requte.
;Affectation de la variable DESTINATAIRE =
champ cid_name issu de la requte.
;Requte du Type Sql " select * from... "
;Test pour voir si le numro appelant est dans la table
asterisk.abreges
;[ Si Vrai, se rendre lextension nomme know.
;[ Si Faux, se rendre lextension nomme unknow.
exten => s,n(sda-ok),Realtime(device_info,sda,
${MACRO_EXTEN},var_)
exten => s,n,set(DEVICE_DESTINATAIRE=${var_number})
exten => s,n,set(DESTINATAIRE=${var_cid_name})
exten => s,n,Realtime(abreges,numero,0${CALLERIDNUM},var_)
exten => s,n,GotoIf($[test${var_num_abr} != test]?know:unknow)
;***********************
;Extension nomme know. Le numro de lappelant est prsent
ENI Editions - All rigths reserved - educ hafa

- 1-

dans la table asterisk.abreges


;Explication:
;Affectation variable CALLERIDNUM = champ num_abreg
issu de la requte.
;Affectation variable CALLERIDNAME = champ affichage
issu de la requte.
;Se rendre lextension nomme appel.
;Extension nomme unknow. Le numro de lappelant est inconnu
dans la table asterisk.abreges
;Explication:
;Test pour vrifier si lappelant prsente son numro.
;[ Si Vrai, se rendre lextension nomme num-presente.
;[ Si Faux, se rendre lextension nomme num-non-presente.
;Extension nomme num-presente. Lappelant prsente son numro.
;Explication:
Affectation variable CALLERIDNUM = 00numero_presente
;en ajoutant 00 au numro prsent, on permet lutilisateur de pouvoir rappeler son correspondant le cas chant (le
premier 0 correspond la sortie du rseau, le deuxime
correspond au 0 de France Tlcom).
;Affectation variable CALLERIDNAME = Exterieur.
;Exterieur saffichera sur les postes, les utilisateurs
sauront que cest un appel externe.
;Se rendre lextension nomme appel.
;Extension nomme num-non-presente. Lappelant ne prsente
pas son numro.
;Explication:
;Affectation variable CALLERIDNUM = Numero-Absent.
;Affectation variable CALLERIDNAME = Exterieur.
;C Exterieur saffichera sur les postes, les utilisateurs
sauront que cest un appel externe.
;Se rendre lextension nomme appel.
exten => s,n(know),Set(CALLERID(Number)=${var_num_abr})
exten => s,n,Set(CALLERID(name)=${var_affichage})
exten => s,n,goto(appel)
exten => s,n(unknow),GotoIf($[test${CALLERIDNUM} !=
test]?num-presente:num-non-presente)
exten => s,n(num-presente),Set(CALLERID(Number)=00${CALLERIDNUM})
exten => s,n,Set(CALLERID(name)=Exterieur)
exten => s,n,goto(appel)
exten => s,n(num-non-presente),Set(CALLERID(Number)=
Numero-Absent)
exten => s,n,Set(CALLERID(name)=Exterieur)
exten => s,n,goto(appel)
;***********************
;Extension nomme appel.
;Explication:
;Requte du Type Sql " select * from... "
;Affectation variable DEST_TECHNOLOGY = champ technology
issu de la requte.
;en stockant le type de client (Sip, Iax...)
dans la base, nous ne limitons pas notre dialplan
au seul client sip.
;Affectation variable DEST_DEVICE = champ number
issu de la requte.
;Affectation variable DEST_MOH_PREDECROCHE =
champ moh_predecroche issu de la requte.
;correspond la musique de predecroche qui sera diffuse
lappelant.
;Affectation variable DEST_MOH_ATTENTE =
champ moh_attente issu de la requte.
;correspond la musique dattente qui sera ventuellement
diffuse lappelant.
;Dfinition de la musique dattente pour le canal.

- 2-

ENI Editions - All rigths reserved - educ hafa

;Appel du destinataire en fonction des variables pralablement


initialises, on laisse le poste distant sonner pendant 25
secondes (5 sonneries).
;Suivant le status de lappel, se rendre lextension
nomme correspondante.
;On ferme le canal de communication.
exten => s,n(appel),realtime(device_info,sda,${MACRO_EXTEN},var_)
exten => s,n,set(DEST_TECHNOLOGY=${var_technology})
exten => s,n,set(DEST_DEVICE=${var_number})
exten => s,n,set(DEST_MOH_PREDECROCHE=${var_moh_predecroche})
exten => s,n,set(DEST_MOH_ATTENTE=${var_moh_attente})
exten => s,n,SetMusicOnHold(${DEST_MOH_ATTENTE})
exten => s,n,Dial(${DEST_TECHNOLOGY}/${DEST_DEVICE},
25,m(${DEST_MOH_PREDECROCHE}),r)
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s,n,Hangup()
;***********************
;Extension nomme cfdnd-sda. Le poste destinataire a activ
la fonction " Ne Pas Dranger ".
;Explication:
;Requte du Type Sql " select * from... "
;Test pour voir si le numro appelant est dans la table
asterisk.abreges
;[ Si Vrai, se rendre lextension nomme cfdnd-sda-know.
;[ Si Faux, se rendre lextension nomme cfdnd-sda-unknow.
;Extension nomme cfdnd-sda-know.
;Le numro de lappelant est prsent dans la table
asterisk.abreges
;Affectation variable CALLERIDNUM = champ num_abrege
issu de la requte.
;Affectation variable CALLERIDNAME = champ affichage
issu de la requte.
;Se rendre lextension nomme cfdnd-sda-suite.
;Extension nomme cfdnd-sda-unknow.
;Le numro de lappelant est inconnu dans la table
asterisk.abreges
;Explication:
;Affectation variable CALLERIDNUM = 00numero_prsent
;Affectation variable CALLERIDNAME = Exterieur.
;Se rendre lextension nomme cfdnd-sda-suite.
;Extension nomme cfdnd-sda-suite.
;Explication:
;Requte du Type Sql " select * from... "
;Appel de lapplication Voicemail avec message Unavailable
du poste destinataire.
;On ferme le canal de communication.
exten => s,n(cfdnd-sda),Realtime(abreges,numero,
0${CALLERIDNUM},var_)
exten => s,n,GotoIf($[test${var_num_abr} !=
test]?cfdnd-sda-know:cfdnd-sda-unknow)
exten => s,n(cfdnd-sda-know),Set(CALLERID(Number)=${var_num_abr})
exten => s,n,Set(CALLERID(name)=${var_affichage})
exten => s,n,goto(cfdnd-sda-suite)
exten => s,n(cfdnd-sda-unknow),Set(CALLERID(Number)=
00${CALLERIDNUM})
exten => s,n,Set(CALLERID(name)=Exterieur)
exten => s,n,goto(cfdnd-sda-suite)
exten => s,n(cfdnd-sda-suite),Realtime(device_info,
sda,${MACRO_EXTEN},var_)
exten => s,n,VoiceMail(u${var_number}@default)
exten => s,n,Hangup()
;***********************
;Extension nomme cfim-sda. Le poste destinataire a activ

ENI Editions - All rigths reserved - educ hafa

- 3-

le renvoi immdiat vers un autre poste du rseau.


;Explication:
;Requte du Type Sql " select * from... "
;Affectation variable CFIM_DEST = champ cfim_ext issu
de la requte
;Requte du Type Sql " select * from... "
;Affectation variable CFIM_TYPE = champ type issu de la requte
;Test pour vrifier si le poste destinataire du renvoi
est un poste.
;[ Si Vrai, se rendre lextension nomme cfim-sda-poste.
;[ Si Faux, se rendre lextension nomme cfim-sda-queue.
exten => s,n(cfim-sda),Realtime(device_info,sda,
${MACRO_EXTEN},var_)
exten => s,n,Set(CFIM_DEST=${var_cfim_ext})
exten => s,n,Realtime(device_info,number,${CFIM_DEST},var_)
exten => s,n,Set(CFIM_TYPE=${var_type})
exten => s,n,GotoIf($[${CFIM_TYPE} =
POSTE]?cfim-sda-poste:cfim-sda-queue)
;***********************
;Extension nomme cfim-sda-poste. Le poste destinataire
est un poste
;Explication:
;Requte du Type Sql " select * from... "
;Test pour voir si le numro appelant est dans la table
asterisk.abreges
;[ Si Vrai, se rendre lextension nomme cfim-sda-poste-know.
;[ Si Faux, se rendre lextension nomme cfim-sda-poste-unknow.
;Extension nomme cfim-sda-poste-know. Le numro de lappelant
est prsent dans la table asterisk.abreges
;Affectation variable CALLERIDNUM = champ num_abr
issu de la requte.
;Affectation variable CALLERIDNAME = champ affichage issu
de la requte.
;Se rendre lextension nomme cfim-sda-poste-suite.
;Extension nomme cfim-sda-poste-unknow. Le numro de lappelant
est inconnu dans la table asterisk.abreges
;Explication:
;Affectation variable CALLERIDNUM = 00numero_prsent
;Affectation variable CALLERIDNAME = Exterieur.
;Se rendre lextension nomme cfim-sda-poste-suite.
;Extension nomme cfim-sda-poste-suite.
;Explication:
;Requte du Type Sql " select * from... "
;Affectation variable CFIM_DEST_TECHNO =
champ type issu de la requte.
;Requte du Type Sql " select * from... "
;Affectation variable DEST_DEVICE = champ number issu
de la requte.
;Affectation DEST_MOH_PREDECROCHE = champ moh_predecroche
issu de la requte.
;Affectation DEST_MOH_ATTENTE = champ moh_attente issu
de la requte.
;Definition de la musique dattente pour le canal.
;Le but est de transfrer lappel vers un autre poste du
rseau tout en gardant les musiques du poste titulaire de la SDA.
;Appel du destinataire en fonction des variables pralablement
initialises, on laisse le poste distant sonner pendant
25 secondes (5 sonneries).
;Si le poste de renvoi na pas rpondu dans les 25 secondes,
on transfre lappel vers le voicemail du poste initiateur
du renvoi.

- 4-

ENI Editions - All rigths reserved - educ hafa

;On ferme le canal de communication.


exten => s,n(cfim-sda-poste),Realtime(abreges,numero,
0${CALLERIDNUM},var_)
exten => s,n,GotoIf($[test${var_num_abr} != test]?cfim-sda-poste-know:
cfim-sda-poste-unknow)
exten => s,n(cfim-sda-poste-know),Set(CALLERID(Number)=
${var_num_abr})
exten => s,n,Set(CALLERID(name)=${var_affichage})
exten => s,n,goto(cfim-sda-poste-suite)
exten => s,n(cfim-sda-poste-unknow),Set(CALLERID
(Number)=00${CALLERIDNUM})
exten => s,n,Set(CALLERID(name)=Exterieur)
exten => s,n,goto(cfim-sda-poste-suite)
exten => s,n(cfim-sda-poste-suite),Realtime(device_info,
number,${CFIM_DEST},var_)
exten => s,n,Set(CFIM_DEST_TECHNO=${var_technology})
exten => s,n,Realtime(device_info,sda,${MACRO_EXTEN},var_)
exten => s,n,Set(DEST_DEVICE=${var_number})
exten => s,n,Set(DEST_MOH_PREDECROCHE=${var_moh_predecroche})
exten => s,n,set(DEST_MOH_ATTENTE=${var_moh_attente})
exten => s,n,setMusicOnHold(${DEST_MOH_ATTENTE})
exten => s,n,Dial(${CFIM_DEST_TECHNO}/${CFIM_DEST},
25,m(${DEST_MOH_PREDECROCHE}),r)
exten => s,n,VoiceMail(u${DEST_DEVICE}@default)
exten => s,n,hangup()

;***********************
;Extension nomme cfim-sda-queue. Le poste destinataire
est une queue
;Explication:
;Requte du Type Sql " select * from... "
;Test pour voir si le numro appelant est dans la table
asterisk.abreges
;[ Si Vrai, se rendre lextension nomme cfim-sda-queue-know.
;[ Si Faux, se rendre lextension nomme cfim-sda-queue-unknow.
;Extension nomme cfim-sda-queue-know. Le numro de lappelant
est prsent dans la table asterisk.abreges
;Affectation variable CALLERIDNUM = champ num_abr issu
de la requte.
;Affectation variable CALLERIDNAME = champ affichage
issu de la requte.
;Se rendre lextension nomme cfim-sda-queue-suite.
;Extension nomme cfim-sda-queue-unknow. Le numro de lappelant
est inconnu dans la table asterisk.abreges
;Explication:
;Affectation variable CALLERIDNUM = 00numero_prsent
;Affectation variable CALLERIDNAME = Exterieur.
;Se rendre lextension nomme cfim-sda-queue-suite.
;Extension nomme cfim-sda-queue-suite.
;Explication:
;Requte du Type Sql " select * from... "
;Affectation variable CFIM_QUEUE_MESSAGE= champ message
issu de la requte.
;Application QUEUE.
;Si pas dagents Actifs dans la Queue, on logue lappel.
;Test pour vrifier si le type de message pour la queue est
enregistreur
;[ Si Vrai, se rendre lextension nomme cfim-queue-record.
;[ Si Faux, se rendre lextension nomme cfim-queue-mesg.
;Extension nomme cfim-sda-queue-record.
;Transfert de lappel au voicemail associ la queue.
;On ferme le canal de communication.

ENI Editions - All rigths reserved - educ hafa

- 5-

;Extension nomme cfim-sda-queue-mesg.


;Diffusion lappelant du message enregistr pour la queue.
;On ferme le canal de communication.
exten => s,n(cfim-sda-queue),Realtime(abreges,numero,
0${CALLERIDNUM},var_)
exten => s,n,GotoIf($[test${var_num_abr} !=
test]?cfim-sda-queue-know:cfim-sda-queue-unknow)
exten => s,n(cfim-sda-queue-know),Set(CALLERID(Number)=
${var_num_abr})
exten => s,n,Set(CALLERID(name)=${var_affichage})
exten => s,n,goto(cfim-sda-queue-suite)
exten => s,n(cfim-sda-queue-unknow),Set(CALLERID(Number)=
00${CALLERIDNUM})
exten => s,n,Set(CALLERID(name)=Exterieur)
exten => s,n,goto(cfim-sda-queue-suite)
exten => s,n(cfim-sda-queue-suite),Realtime(device_info,number,
${DEST_CFIM},var_)
exten => s,n,Set(CFIM_QUEUE_MESSAGE=${var_message})
exten => s,n,Queue(${DEST_CFIM},t)
exten => s,n,System( echo "${EPOCH}|
${UNIQUEID}|${DEST_CFIM}|NONE|
EXITWITHTIMEOUT|1" > /var/log/asterisk/queue_log )
exten => s,n,GotoIf($[${CFIM_QUEUE_MESSAGE} =enregistreur]?
cfim_queue_record:cfim_queue_mesg)
exten => s,n(cfim_queue_record),Voicemail(u${DEST_CFIM}@default)
exten => s,n,hangup()
exten => s,n(cfim_queue_mesg),Playback(/var/lib/asterisk/
sounds/message_${DEST_CFIM})
exten => s,n,hangup()
;***********************
;S-BUSY : Le poste destinataire est dj en Ligne, on vrifie
si un renvoi sur Occupation est programm, sinon on transfre
lappel au voicemail Busy du destinataire.
;Explication:
;Requte du Type Sql " select * from... "
;Test pour voir si un renvoi sur Occupation est programm
;[ Si Vrai, se rendre lextension nomme cfbus-sda.
;[ Si Faux, se rendre lextension nomme cfbus-sda-no.
;Extension nomme cfbus-sda. Un renvoi sur Occupation est
programme
;Explication:
;Affectation variable CFBUS-SDA-DEST =
champ cfbus_ext issu de la requte.
;Requte du Type Sql " select * from... "
;Affectation variable CFBUS-SDA-TECHNO = champ technology
issu de la requte.
;Requte du Type Sql " select * from... "
;Affectation variable DEST-DEVICE = champ number issu
de la requte.
;Affectation variable DEST-MOH-PREDECROCHE =
champ moh_predecroche issu de la requte.
;Affectation variable DEST-MOH-ATTENTE =
champ moh_attente issu de la requte.
;Dfinition de la musique dattente pour le canal.
;Le but est de transfrer lappel vers un autre poste
du rseau tout en gardant les musiques du poste titulaire
de la SDA.
;Appel du destinataire en fonction des variables pralablement
initialises, on laisse le poste distant sonner pendant
25 secondes (5 sonneries).
;Si le poste de renvoi na pas rpondu dans les 25 secondes,
on transfre lappel vers le voicemail du poste initiateur
du renvoi.
;On ferme le canal de communication.
;Extension nomme

- 6-

cfbus-sda-no. Aucun renvoi sur Occupation

ENI Editions - All rigths reserved - educ hafa

de programme.
;Explication:
;Appel du Voicemail Busy du poste destinataire
;On ferme le canal de communication.
exten => s-BUSY,1,Realtime(device_info,sda,${MACRO_EXTEN},var_)
exten => s-BUSY,n,GotoIf($[test${var_cfbus_ext} != test]?
cfbus-sda:cfbus-sda-no)
exten => s-BUSY,n(cfbus-sda),Set(CFBUS-SDA-DEST=${var_cfbus_ext})
exten => s-BUSY,n,Realtime(device_info,number,
${CFBUS-SDA-DEST},var_)
exten => s-BUSY,n,set(CFBUS-SDA-TECHNO=${var_technology})
exten => s-BUSY,n,Realtime(device_info,sda,${MACRO_EXTEN},var_)
exten => s-BUSY,n,Set(DEST-DEVICE=${var_number})
exten => s-BUSY,n,Set(DEST-MOH-PREDECROCHE=
${var_moh_predecroche})
exten => s-BUSY,n,set(DEST-MOH-ATTENTE=${var_moh_attente})
exten => s-BUSY,n,setMusicOnHold(${DEST-MOH-ATTENTE})
exten => s-BUSY,n,Dial(${CFBUS-SDA-TECHNO}/${CFBUS-SDA-DEST},
25,m(${DEST-MOH-PREDECROCHE}),r)
exten => s-BUSY,n,VoiceMail(b${DEST-DEVICE}@default)
exten => s-BUSY,n,hangup()
exten => s-BUSY,n(cfbus-sda-no),VoiceMail(b${DEST-DEVICE}
@default)
exten => s-BUSY,n,hangup()
;***********************
;S-NOANWSER : Le poste destinataire na pas rpondu dans le
dlai imparti, on vrifie si un renvoi sur Non Rponse est
programm, sinon on transfre lappel au voicemail Unavailable
du destinataire.
;Explication:
;Requte du Type Sql " select * from... "
;Test pour voir si un renvoi sur Occupation est programm
;[ Si Vrai, se rendre lextension nomme cfnr-sda.
;[ Si Faux, se rendre lextension nomme cfnr-sda-no.
;Extension nomme cfnr-sda. Un renvoi sur Non Reponse
est programm
;Explication:
;Affectation variable CFNR-SDA-DEST =
champ cfnr_ext issu de la requte.
;Requte du Type Sql " select * from... "
;Affectation variable CFNR-SDA-TECHNO =
champ technology issu de la requte.
;Requte du Type Sql " select * from... "
;Affectation variable DEST-DEVICE = champs number issu
de la requte.
;Affectation variable DEST-MOH-PREDECROCHE =
champ moh_predecroche issu de la requte.
;Affectation variable DEST-MOH-ATTENTE =
champ moh_attente issu de la requte.
;Dfinition de la musique dattente pour le canal.
;Le but est de transfrer lappel vers un autre poste du rseau
tout en gardant les musiques du poste titulaire de la SDA.
;Appel du destinataire en fonction des variables pralablement
initialises, on laisse le poste distant sonner pendant
25 secondes (5 sonneries).
;Si le poste de renvoi na pas rpondu dans les 25 secondes,
on transfre lappel vers le voicemail du poste initiateur
du renvoi.
;On ferme le canal de communication.
;Extension nomme cfnr-sda-no. Aucun renvoi sur Non Rponse
de programm
;Explication:
;Appel du Voicemail Unavailable du poste destinataire
;On ferme le canal de communication.

ENI Editions - All rigths reserved - educ hafa

- 7-

exten => s-NOANSWER,1,Realtime(device_info,sda,${MACRO_EXTEN},var_)


exten => s-NOANSWER,n,GotoIf($[${var_cfnr_ext} != 0]?cfnr-sda:cfnr-sda-no)
exten => s-NOANSWER,n(cfnr-sda),
Set(CFNR-SDA-DEST=${var_cfnr_ext})
exten => s-NOANSWER,n,Realtime(device_info,number,
${CFNR-SDA-DEST},var_)
exten => s-NOANSWER,n,set(CFNR-SDA-TECHNO=${var_technology})
exten => s-NOANSWER,n,Realtime(device_info,sda,${MACRO_EXTEN},var_)
exten => s-NOANSWER,n,
Set(DEST-DEVICE=${var_number})
exten => s-NOANSWER,n,Set(DEST-MOH-PREDECROCHE=
${var_moh_predecroche})
exten => s-NOANSWER,n,set(DEST-MOH-ATTENTE=${var_moh_attente})
exten => s-NOANSWER,n,setMusicOnHold(${DEST-MOH-ATTENTE})
exten => s-NOANSWER,n,Dial(${CFNR-SDA-TECHNO}/
${CFNR-SDA-DEST},25,m(${DEST-MOH-PREDECROCHE}),r)
exten => s-NOANSWER,n,VoiceMail(b${DEST-DEVICE}@default)
exten => s-NOANSWER,n,hangup()
exten => s-NOANSWER,n(cfnr-sda-no),Realtime(device_info,
sda,${MACRO_EXTEN},var_)
exten => s-NOANSWER,n,VoiceMail(u${var_number}@default)
exten => s-NOANSWER,n,hangup()

2.appel_entrant_queue
Lamacroappel_entrant_queueestutiliseparlecontexte[CONTEXT_INCOMING]etestappelechaquefoisquun
appelseprsentedestinationduneSDAaffecteunequeue(hormispourcelledelahotlinedelasemaine).
[macro-appel_entrant_queue]
;***********************
Explication:
On ouvre un canal de communication.
Requte du Type Sql " select * from... "
Test pour voir si le numro appelant est dans la table
asterisk.abreges
[ Si Vrai, se rendre lextension nomme queue-poste-know.
[ Si Faux, se rendre lextension nomme queue-poste-unknow.
exten => s,1,Answer()
exten => s,n,Realtime(abreges,numero,0${CALLERIDNUM},var_)
exten => s,n,GotoIf($[test${var_num_abr} != test]?
queue-poste-know:queue-poste-unknow)
;***********************
Extension nomme queue-poste-know. Le numro appelant est
stock dans la table asterisk.abreges
Explication:
Affectation variable CALLERIDNUM = champ num_abr issu
de la requte.
Affectation variable CALLERIDNAME = champ affichage issu
de la requte.
Se rendre lextension nomme queue-suite.
exten => s,n(queue-poste-know),Set(CALLERID(Number)=
${var_num_abr})
exten => s,n,Set(CALLERID(name)=${var_affichage})
exten => s,n,goto(queue-suite)
;***********************
Extension nomme queue-poste-unknow. Le numro appelant
est stock dans la table asterisk.abreges
Explication:
Test si lappelant prsente son numro
[ Si Vrai, se rendre lextension nomme num-presente.
[ Si Faux, se rendre lextension nomme num-non-presente.
Extension nomme num-presente, lappelant prsente son numro.
Explication:

- 8-

ENI Editions - All rigths reserved - educ hafa

Affectation variable CALLERIDNUM = 00+ numero de lappelant.


Affectation variable CALLERIDNAME = Exterieur.
Se rendre lextension nomme queue-suite.
Extension nomme num-non-presente, lappelant prsente
son numro.
Explication:
Affectation variable CALLERIDNUM = Numero-Absent.
Affectation variable CALLERIDNAME = Exterieur.
Se rendre lextension nomme queue-suite.
exten => s,n(queue-poste-unknow),GotoIf($[test${CALLERIDNUM} !=
test]?num-presente:num-non-presente)
exten => s,n(num-presente),Set(CALLERID(Number)=00${CALLERIDNUM})
exten => s,n,Set(CALLERID(name)=Exterieur)
exten => s,n,goto(queue-suite)
;***********************
Extension nomme queue-suite.
Explication:
Requte du Type Sql " select * from... "
Affectation variable QUEUE_DESTINATION = champ number issu
de la requte.
Affectation variable TYPE_MESSAGE = champ message issu
de la requte.
Application QUEUE
Si pas dagents Actifs dans la Queue, on logue lappel.
Test pour vrifier si le type de message pour la queue
est enregistreur
[ Si Vrai, se rendre lextension nomme enregistreur.
[ Si Faux, se rendre lextension nomme message.
Extension nomme enregistreur. Lappelant pourra laisser
un message sur rpondeur
Explication:
Appel transfert au voicemail Unavailable associe la queue.
On ferme le canal de communication.
Extension nomme message. Un simple message sera diffus
lappelant, pas denregistrement possible.
Explication:
Diffusion lappelant du message enregistr pour la queue.
On ferme le canal de communication.
exten => s,n(queue-suite),Realtime(device_info,sda,
${MACRO_EXTEN},var_)
exten => s,n,set(QUEUE_DESTINATION=${var_number})
exten => s,n,set(TYPE_MESSAGE=${var_message})
exten => s,n,Queue(${QUEUE_DESTINATION},t)
exten => s,n,System( echo "${EPOCH}|${UNIQUEID}|
${QUEUE_DESTINATION}|NONE|
EXITWITHTIMEOUT|1" > /var/log/asterisk/queue_log )
exten => s,n,GotoIf($[${TYPE_MESSAGE} =enregistreur]
?enregistreur:message)
exten => s,n(enregistreur),Voicemail(u${QUEUE_DESTINATION}
@default)
exten => s,n,Hangup()
exten => s,n(message),Playback(/var/lib/asterisk/sounds/
message_${QUEUE_DESTINATION})
exten => s,n,Hangup()

3.appel_entrant_queue_hotline
La macro appel_entrant_queue_hotline est utilise par le contexte [CONTEXT_INCOMING] et est appele chaque
foisquunappelseprsentedestinationdelaSDAXXXXXXXXXX.

ENI Editions - All rigths reserved - educ hafa

- 9-

[macro-appel_entrant_queue_hotline]
;***********************
Explication:
On ouvre un canal de communication.
Test pour que le jour et lheure ne soit pas un
samedi entre 8h30 et 17h00
[ Si Vrai, se rendre lextension nomme semaine.
[ Si Faux, se rendre lextension nomme samedi.
exten => s,1,Answer()
exten => s,n,set(HEURE=
${IFTIME(08:29-16:59,sat,*,*?FERME:OUVERT)})
exten => s,n,GotoIf($[${HEURE}=OUVERT]?semaine:samedi)
;***********************
Extension nomme semaine.
Explication:
Test pour voir si le numro appelant est dans la table
asterisk.abreges
[ Si Vrai, se rendre lextension nomme hotline-poste-know.
[ Si Faux, se rendre lextension nomme hotline-poste-unknow.
exten => s,n(semaine),Realtime(abreges,numero,
0${CALLERIDNUM},var_)
exten => s,n,GotoIf($[test${var_num_abr} != test]?
hotline-poste-know:hotline-poste-unknow)
;***********************
Extension nomme hotline-poste-know. Le numro appelant
est stock dans la table asterisk.abreges
Explication:
Affectation variable CALLERIDNUM = champ num_abr issu
de la requte.
Affectation variable CALLERIDNAME = champ affichage
issu de la requte.
Se rendre lextension nomme alc-suite.
exten => s,n(hotline-poste-know),Set(CALLERID(Number)=
${var_num_abr})
exten => s,n,Set(CALLERID(name)=${var_affichage})
exten => s,n,goto(hotline-suite)
;***********************
Extension nomme hotline-poste-unknow. Le numro appelant
nest pas stock dans la table asterisk.abreges
Explication:
Affectation variable CALLERIDNUM = 00+numero de lappelant.
Affectation variable CALLERIDNAME = Exterieur.
Se rendre lextension nomme hotline-suite.
exten => s,n(hotline-poste-unknow),Set(CALLERID(Number)=
00${CALLERIDNUM})
exten => s,n,Set(CALLERID(name)=Exterieur)
exten => s,n,goto(hotline-suite)
;***********************
Extension nomme hotline-suite.
Explication:
Requte du Type Sql " select * from... "
Affectation variable QUEUE_DESTINATION = champ number
issu de la requte.
Affectation variable TYPE_MESSAGE = champ message issu
de la requte.
Application QUEUE
Si pas dagents Actifs dans la Queue, on logue lappel.
Test pour vrifier si le type de message pour la queue
est enregistreur
- 10 -

ENI Editions - All rigths reserved - educ hafa

[ Si Vrai, se rendre lextension nomme enregistreur.


[ Si Faux, se rendre lextension nomme message.
Extension nomme enregistreur. Lappelant pourra laisser
un message sur rpondeur
Explication:
Appel transfr au voicemail Unavailable associe la queue.
On ferme le canal de communication.
Extension nomme message. Un simple message sera diffus
lappelant, pas denregistrement possible.
Explication:
Diffusion lappelant du message enregistr pour la queue.
On ferme le canal de communication.
exten => s,n(hotline-suite),Realtime(device_info,sda,
${MACRO_EXTEN},var_)
exten => s,n,set(QUEUE_DESTINATION=${var_number})
exten => s,n,set(TYPE_MESSAGE=${var_message})
exten => s,n,Queue(${QUEUE_DESTINATION},t)
exten => s,n,System( echo "${EPOCH}|${UNIQUEID}|
${QUEUE_DESTINATION}|NONE|EXITWITHTIMEOUT|1" > /var/log/asterisk/
queue_log )
exten => s,n,GotoIf($[${TYPE_MESSAGE} =
enregistreur]?enregistreur:message)
exten => s,n(enregistreur),Voicemail(u${QUEUE_DESTINATION}
@default)
exten => s,n,Hangup()
exten => s,n(message),Playback(/var/lib/asterisk/sounds/
message_${QUEUE_DESTINATION})
exten => s,n,Hangup()

4.appel_sortant
La macro appel_sortant est utilise par les contextes [CONTEXT_NATIONAL], [CONTEXT_GSM], [CONTEXT_BOX],
[CONTEXT_MONACO],
[CONTEXT_
BELGIQUE],
[CONTEXT_INTERNATIONAL],
[CONTEXT_URGENCY]
et
[CONTEXT_SURTAXERESTREINT].Commesonnomlindique,ellesertauxappelssortantsdurseau.
[macro-appel_sortant]
;***********************
Explication:
On ouvre un canal de communication.
Requte du Type Sql " select * from... "
Affectation variable NUM_PRESENTE= champ calleridnum
issu de la requte.
Test pour voir si le numro appelant doit tre prsent
[ Si Vrai, se rendre lextension nomme secret.
[ Si Faux, se rendre lextension nomme presentation.
Extension nomme secret. Le numro appelant ne sera pas prsent.
Explication:
On ouvre un canal de communication.
Affectation variable CALLERIDNUM = private.
Composition du numro Appel sur le groupe de canaux g1.
Suivant ltat du canal, se rendre lextension nomme
correspondante.
Extension nomme presentation. Le numro appelant sera prsent.
Explication:
On ouvre un canal de communication.
Affectation variable CALLERIDNUM = champs calleridnum
issu de la requte.
Composition du numro Appel sur le groupe de canaux g1.
Suivant ltat du canal, se rendre lextension nomme
correspondante.
On ferme le canal de communication.
exten => s,1,Answer()
exten => s,n,Realtime(device_info,number,${CALLERIDNUM},var_)

ENI Editions - All rigths reserved - educ hafa

- 11 -

exten
exten
exten
exten
exten
exten
exten
exten
exten
exten

=>
=>
=>
=>
=>
=>
=>
=>
=>
=>

s,n,set(NUM_PRESENTE=${var_calleridnum})
s,n,GotoIf($[${NUM_PRESENTE}= 0]?SECRET:PRESENTATION)
s,n(SECRET),Set(CALLERID(NUM)=<private>)
s,n,Dial(Zap/g1/${MACRO_EXTEN},,of)
s,n,Goto(s-${DIALSTATUS},1)
s,n,Hangup()
s,n(PRESENTATION),set(CALLERID(number)=${NUM_PRESENTE})
s,n,Dial(Zap/g1/${MACRO_EXTEN},,of)
s,n,Goto(s-${DIALSTATUS},1)
s,n,Hangup()

;***********************
s-BUSY, le canal est occupe.
Explication:
Recomposition du numro appel sur le groupe de canaux g2.
Suivant ltat du canal, se rendre lextension
nomme -DEBORD correspondante.
On ferme le canal de communication.
exten => s-BUSY,n,Dial(Zap/g2/${MACRO_EXTEN:1},,of)
exten => s-BUSY,n,Goto(s-${DIALSTATUS}-DEBORD,1)
exten => s-BUSY,n,Hangup()
;***********************
s-CHANUNAVAIL, le canal est indisponible.
Explication:
Recomposition du numro appel sur le groupe de canaux g2.
Suivant ltat du canal, se rendre lextension
nomme -DEBORD correspondante.
On ferme le canal de communication.
exten => s-CHANUNAVAIL,1,Dial(Zap/g2/${MACRO_EXTEN:1},,of)
exten => s-CHANUNAVAIL,n,Goto(s-${DIALSTATUS}-DEBORD,1)
exten => s-CHANUNAVAIL,n,Hangup()
;***********************
s-CONGESTION, le canal est satur.
Explication:
Recomposition du numro appel sur le groupe de canaux g2.
Suivant ltat du canal, se rendre lextension
nomme -DEBORD correspondante.
On ferme le canal de communication.
exten => s-CONGESTION,1,Dial(Zap/g2/${MACRO_EXTEN:1},,of)
exten => s-CONGESTION,n,Goto(s-${DIALSTATUS}-DEBORD,1)
exten => s-CONGESTION,n,Hangup()
;***********************
s-NOANSWER, le canal ne rpond pas.
Explication:
On ferme le canal de communication.
exten => s-NOANSWER,1,Hangup()
;***********************
s-ANSWER, le canal a rpondu.
Explication:
On ferme le canal de communication.
exten => s-ANSWER,1,Hangup()
;***********************
s-CANCEL, le canal a t annul.
Explication:
On ferme le canal de communication.
exten => s-CANCEL,1,Hangup()
;***********************

- 12 -

ENI Editions - All rigths reserved - educ hafa

s-BUSY-DEBORD, le canal est toujours occup.


Explication:
Diffusion de la tonalit occupe.
Dure de la diffusion 20 secondes.
Arrt de la diffusion.
On ferme le canal de communication.
exten
exten
exten
exten

=>
=>
=>
=>

s-BUSY-DEBORD,1,playtones(busy)
s-BUSY-DEBORD,n,wait(20)
s-BUSY-DEBORD,n,StopPlaytones()
s-BUSY-DEBORD,n,Hangup()

;***********************
s-CHANUNAVAIL-DEBORD, le canal est toujours indisponible.
Explication:
Diffusion de la tonalit congestion.
Dure de la diffusion 20 secondes.
Arrt de la diffusion.
On ferme le canal de communication.
exten
exten
exten
exten

=>
=>
=>
=>

s-CHANUNAVAIL-DEBORD,1,playtones(congestion)
s-CHANUNAVAIL-DEBORD,n,wait(20)
s-CHANUNAVAIL-DEBORD,n,StopPlaytones()
s-CHANUNAVAIL-DEBORD,n,Hangup()

;***********************
s-CONGESTION-DEBORD, le canal est toujours satur.
Explication:
Diffusion de la tonalit congestion.
Dure de la diffusion 20 secondes.
Arrt de la diffusion.
On ferme le canal de communication.
exten
exten
exten
exten

=>
=>
=>
=>

s-CONGESTION-DEBORD,1,playtones(congestion)
s-CONGESTION-DEBORD,n,wait(20)
s-CONGESTION-DEBORD,n,StopPlaytones()
s-CONGESTION-DEBORD,n,Hangup()

;***********************
s-NOANSWER-DEBORD, le canal ne rpond toujours pas.
Explication:
On ferme le canal de communication.
exten => s-NOANSWER-DEBORD,1,Hangup()
;***********************
s-ANSWER-DEBORD, le canal a rpondu.
Explication:
On ferme le canal de communication.
exten => s-ANSWER-DEBORD,1,Hangup()
;***********************
s-CANCEL-DEBORD, le canal a t annul.
Explication:
On ferme le canal de communication.
exten => s-CANCEL-DEBORD,1,Hangup()

5.appel_abreges
La macro appel_abreges est utilise par le contexte [CONTEXT_ABREGES]. Elle sert composer les appels
destinationdesnumrosabrgs.
[macro-appel_abrege]
;***********************
Explication:

ENI Editions - All rigths reserved - educ hafa

- 13 -

On ouvre un canal de communication.


Requte du Type Sql " select * from... "
Affectation variable NUM_PRESENTE= champ calleridnum
issu de la requte.
Requte du Type Sql " select * from... "
Affectation variable NUM_APPELE= champ num_abr issu
de la requte.
Test pour voir si le numro appelant doit tre prsent
[ Si Vrai, se rendre lextension nomme secret.
[ Si Faux, se rendre lextension nomme presentation.
Extension nomme secret. Le numro appelant ne sera pas prsent.
Explication:
On ouvre un canal de communication.
Affectation variable CALLERIDNUM = private.
Composition du numro Appel sur le groupe de canaux g1.
Suivant ltat du canal, se rendre lextension nomme
correspondante.
Extension nomme presentation. Le numro appelant sera prsent.
Explication:
On ouvre un canal de communication.
Affectation variable CALLERIDNUM = champ calleridnum
issu de la requte.
Composition du numro Appel sur le groupe de canaux g1.
Suivant ltat du canal, se rendre lextension nomme
correspondante.
On ferme le canal de communication.
exten
exten
exten
exten
exten
exten
exten
exten
exten
exten
exten
exten
exten
exten

=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>

s,1,Answer()
s,n,Realtime(device_info,number,${CALLERID(num)},var_)
s,n,Set(NUM_PRESENTE=${var_calleridnum})
s,n,Realtime(abreges,num_abr,${MACRO_EXTEN},var_)
s,n,set(NUM_APPELE=${var_numero})
s,n,GotoIf($[${NUM_PRESENTE}= 0]?SECRET:PRESENTATION)
s,n(SECRET),SetCallerPres(unavailable)
s,n,Dial(Zap/g1/0${NUM_APPELE})
s,n,Goto(s-${DIALSTATUS},1)
s,n,Hangup()
s,n(PRESENTATION),set(CALLERID(number)=${NUM_PRESENTE})
s,n,Dial(Zap/g1/0${NUM_APPELE})
s,n,Goto(s-${DIALSTATUS},1)
s,n,Hangup()

;***********************
s-BUSY, le canal est occup.
Explication:
Recomposition du numro appel sur le groupe de canaux g2.
Suivant ltat du canal, se rendre lextension nomme -DEBORD correspondante.
On ferme le canal de communication.
exten => s-BUSY,1,Dial(Zap/g2/${NUM_APPELE})
exten => s-BUSY,n,Goto(s-${DIALSTATUS}-DEBORD,1)
exten => s-BUSY,n,Hangup()
;***********************
s-CHANUNAVAIL, le canal est indisponible.
Explication:
Recomposition du numro appel sur le groupe de canaux g2.
Suivant ltat du canal, se rendre lextension
nomme -DEBORD correspondante.
On ferme le canal de communication.
exten => s-CHANUNAVAIL,1,Dial(Zap/g2/${NUM_APPELE})
exten => s-CHANUNAVAIL,n,Goto(s-${DIALSTATUS}-DEBORD,1)
exten => s-CHANUNAVAIL,n,Hangup()
;***********************

- 14 -

ENI Editions - All rigths reserved - educ hafa

s-CONGESTION, le canal est satur.


Explication:
Recomposition du numro appel sur le groupe de canaux g2.
Suivant ltat du canal, se rendre lextension nomme
-DEBORD correspondante.
On ferme le canal de communication.
exten => s-CONGESTION,1,Dial(Zap/g2/${NUM_APPELE})
exten => s-CONGESTION,n,Goto(s-${DIALSTATUS}-DEBORD,1)
exten => s-CONGESTION,n,Hangup()
;***********************
s-NOANSWER, le canal ne rpond pas.
Explication:
On ferme le canal de communication.
exten => s-NOANSWER,1,Hangup()
;***********************
s-ANSWER, le canal a rpondu.
Explication:
On ferme le canal de communication.
exten => s-ANSWER,1,Hangup()
;***********************
s-CANCEL, le canal a t annul.
Explication:
On ferme le canal de communication.
exten => s-CANCEL,1,Hangup()
;***********************
s-BUSY-DEBORD, le canal est toujours occup.
Explication:
Diffusion de la tonalit occupe.
Dure de la diffusion 20 secondes.
Arrt de la diffusion.
On ferme le canal de communication.
exten
exten
exten
exten

=>
=>
=>
=>

s-BUSY-DEBORD,1,playtones(busy)
s-BUSY-DEBORD,n,wait(20)
s-BUSY-DEBORD,n,StopPlaytones()
s-BUSY-DEBORD,n,Hangup()

;***********************
s-CHANUNAVAIL-DEBORD, le canal est toujours indisponible.
Explication:
Diffusion de la tonalit congestion.
Dure de la diffusion 20 secondes.
Arrt de la diffusion.
On ferme le canal de communication.
exten
exten
exten
exten

=>
=>
=>
=>

s-CHANUNAVAIL-DEBORD,1,playtones(congestion)
s-CHANUNAVAIL-DEBORD,n,wait(20)
s-CHANUNAVAIL-DEBORD,n,StopPlaytones()
s-CHANUNAVAIL-DEBORD,n,Hangup()

;***********************
s-CONGESTION-DEBORD, le canal est toujours satur.
Explication:
Diffusion de la tonalit congestion.
Dure de la diffusion 20 secondes.
Arrt de la diffusion.
On ferme le canal de communication.
exten
exten
exten
exten

=>
=>
=>
=>

s-CONGESTION-DEBORD,1,playtones(congestion)
s-CONGESTION-DEBORD,n,wait(20)
s-CONGESTION-DEBORD,n,StopPlaytones()
s-CONGESTION-DEBORD,n,Hangup()

ENI Editions - All rigths reserved - educ hafa

- 15 -

;***********************
s-NOANSWER-DEBORD, le canal ne rpond toujours pas.
Explication:
On ferme le canal de communication.
exten => s-NOANSWER-DEBORD,1,Hangup()
;***********************
s-ANSWER-DEBORD, le canal a rpondu.
Explication:
On ferme le canal de communication.
exten => s-ANSWER-DEBORD,1,Hangup()
;***********************
s-CANCEL-DEBORD, le canal a t annul.
Explication:
On ferme le canal de communication.
exten => s-CANCEL-DEBORD,1,Hangup()

6.appel_surtaxe
La macro appel_surtax est utilise par le contexte [CONTEXTE_SURTAXE]. Elle sert composer les appels
destinationdesnumrossurtaxs.
[macro-appel_surtaxe]
;***********************
Explication:
On ouvre un canal de communication.
Requte du Type Sql " select * from... "
Affectation variable NUM_APPELE=
champ num_surtaxe issu de la requte.
Test pour voir si le numro appel est prsent dans la table
asterisk.surtaxe.
[ Si Vrai, se rendre lextension nomme OK.
[ Si Faux, se rendre lextension nomme INTERDIT.
Extension nomme OK. Le numro compos existe dans la table
asterisk.abreges.
Explication:
Composition du numro Appel sur le groupe de canaux g1.
Suivant ltat du canal, se rendre lextension nomme
correspondante.
On ferme le canal de communication.
exten => s,1,Answer()
exten => s,n,Realtime(surtaxe,num_surtaxe,${MACRO_EXTEN:1)},var_)
exten => s,n,Set(NUM_APPELE=${var_num_surtaxe})
exten => s,n,GotoIf($[${NUM_APPELE}=
${MACRO_EXTEN:1)}]?OK:INTERDIT)
exten => s,n(OK),Dial(Zap/g1/0${NUM_APPELE})
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s,n,Hangup()
;***********************
Extension nomme INTERDIT. Le numro compos
nexiste pas dans la table asterisk.abreges.
Explication:
Diffusion lappelant du message "numrotation interdite ".
On ferme le canal de communication.
exten => s,n(INTERDIT),playback(not-auth-pstn)
exten => s,n,Hangup()
;***********************

- 16 -

ENI Editions - All rigths reserved - educ hafa

s-BUSY, Le canal est occup.


Explication:
Composition du numro appel sur le groupe de canaux g2.
Si le canal est toujours occup, diffusion de la tonalit
occupe.
Dure de la diffusion 20 secondes.
Arrt de la diffusion.
On ferme le canal de communication.
exten
exten
exten
exten
exten

=>
=>
=>
=>
=>

s-BUSY,1,Dial(Zap/g2/${NUM_APPELE})
s-BUSY,n,playtones(busy)
s-BUSY,n,wait(20)
s-BUSY,n,StopPlaytones()
s-BUSY,n,Hangup()

;***********************
s-CHANUNAVAIL, Le canal est indisponible.
Explication:
Composition du numro appel sur le groupe de canaux g2.
Si le canal est toujours indisponible, diffusion de la
tonalit congestion.
Dure de la diffusion 20 secondes.
Arrt de la diffusion.
On ferme le canal de communication.
exten
exten
exten
exten
exten

=>
=>
=>
=>
=>

s-CHANUNAVAIL,1,Dial(Zap/g2/${NUM_APPELE})
s-CHANUNAVAIL,n,playtones(congestion)
s-CHANUNAVAIL,n,wait(20)
s-CHANUNAVAIL,n,StopPlaytones()
s-CHANUNAVAIL,n,Hangup()

;***********************
s-CONGESTION, Le canal est satur.
Explication:
Composition du numro appel sur le groupe de canaux g2.
Si le canal est toujours satur, diffusion de la tonalit
congestion.
Dure de la diffusion 20 secondes.
Arrt de la diffusion.
On ferme le canal de communication.
exten
exten
exten
exten
exten

=>
=>
=>
=>
=>

s-CONGESTION,1,Dial(Zap/g2/${NUM_APPELE})
s-CONGESTION,n,playtones(congestion)
s-CONGESTION,n,wait(20)
s-CONGESTION,n,StopPlaytones()
s-CONGESTION,n,Hangup()

;***********************
s-NOANSWER, le canal ne rpond pas.
Explication:
On ferme le canal de communication.
exten => s-NOANSWER,1,Hangup()
;***********************
s-ANSWER, le canal a rpondu.
Explication:
On ferme le canal de communication.
exten => s-ANSWER,1,Hangup()
;***********************
s-CANCEL, le canal a t annul.
Explication:
On ferme le canal de communication.
exten => s-CANCEL,1,Hangup()

ENI Editions - All rigths reserved - educ hafa

- 17 -

7.inqueue
La macro inqueue est appele par le contexte [CONTEXT_QUEUE]. Elle sert aux agents pour la connexion aux
queues.
[macro-inqueue]
;***********************
Explication:
On ouvre un canal de communication.
Ajout en tant que membre de la queue, du poste ayant appel
la macro.
Loggue de lopration dans le fichier /var/log/asterisk/queue_log.
Diffusion du message "vous tes actuellement connect".
Fermeture du canal de communication
exten => s,1,Answer()
exten => s,n,AddQueueMember(${MACRO_EXTEN:2})
exten => s,n,System( echo "${EPOCH}|${UNIQUEID}
|NONE|${CALLERIDNUM}|AGENTLOGIN|-" > /var/log/asterisk/
queue_log )
exten => s,n,Playback(agent-loginok)
exten => s,n,Hangup()

8.outqueue
Lamacrooutqueueestappeleparlecontexte[CONTEXTE_QUEUE].Ellesertauxagentspoursedconnecterdes
queues.
[macro-outqueue]
;***********************
Explication:
On ouvre un canal de communication.
Suppression en tant que membre de la queue du poste ayant
appel la macro.
Loggue de lopration dans le fichier /var/log/asterisk/queue_log.
Diffusion du message "Vous tes actuellement dconnect".
fermeture du canal de communication.
exten => s,1,Answer()
exten => s,n,RemoveQueueMember(${MACRO_EXTEN:2})
exten => s,n,System( echo "${EPOCH}|${UNIQUEID}|NONE|${CALLERIDNUM}|AGENTLOGOFF|" > /var/log/asterisk/queue_log )
exten => s,n,Playback(agent-loggedoff)
exten => s,n,Hangup()

- 18 -

ENI Editions - All rigths reserved - educ hafa

Introduction
Cetteannexeprsentelalistedesapplicationsutilisablesdansleplandenumrotation.

ENI Editions - All rigths reserved - educ hafa

- 1-

UtilisationdelaCLI
LaconsoleAsteriskpermetdobtenirlalistedesapplicationsdisponiblessurlesystme.
asterisk1*CLI> core show applications
LasyntaxedechaqueapplicationestfourniegalementlaidedunecommandedelaCLI.
ExempledelasyntaxedelacommandeVoiceMail(Messagerievocale)():
asterisk1*CLI> show application VoiceMail
asterisk1*CLI>
-= Info about application VoiceMail =[Synopsis]
Leave a Voicemail message
[Description]
VoiceMail(mailbox[@context][&mailbox[@context]][...]
[|options])( ) : This application allows the calling
party to leave a message for the specified list of mailboxes. When multiple mailboxes are specified, the
greeting will be taken from the first mailbox specified.
Dialplan execution will stop if the specified mailbox does not exist.
The Voicemail application will exit if any of the following DTMF digits are received( ) :
0 - Jump to the o extension in the current dialplan
context.
* - Jump to the a extension in the current dialplan
context.
This application will set the following channel variable
upon completion( ) :
VMSTATUS - This indicates the status of the execution
of the VoiceMail application. The possible values
are( ) : SUCCESS | USEREXIT | FAILED
Options( ) :
b
- Play the busy greeting to the calling party.
g(#) - Use the specified amount of gain when recording the
voicemail message. The units are whole-number decibels (dB).
s
- Skip the playback of instructions for leaving a message
to the calling party.
u
- Play the unavailable greeting.
j
- Jump to priority n+101 if the mailbox is not found or some
other error occurs.

ENI Editions - All rigths reserved - educ hafa

- 1-

Significationdesapplications
Asterisk1.6proposepardfaut173applications.
AbsoluteTimeout():positionnementdeladuremaximaledunappel.
AddQueueMember():ajoutdynamiquedemembresdansunefiledattente.
ADSIProg():chargementdescriptADSI(AnalogDisplayServiceInterface)dansuntlphoneADSI.
AgentCallbackLogin():enregistrementdunagentdansunefiledattenteafinquilsoitrappel.
AgentLogin():enregistrementdunagent.
AgentMonitorOutgoing():enregistrementdesappelssortantsdunagent.
AGI():excutionduneapplicationAGI.
AlarmReceiver():rceptionetdcodagedesalarmesmisesparlestableauxdalarmes(effraction,incendie).
Answer():rponseuncanalquisonne.
AppendCDRUserField():affectationdunevaleurauchamputilisateurduCDR.
Authenticate():authentificationdelappelantparmotdepasse.
BackGround():lecturedunfichieraudioenattendantquelappelantcomposeunnumro.
BackgroundDetect():lecturedunfichieraudioavecdtectiondelavoix.
Busy():indicationaucanaldesonneroccup.
ChangeMonitor():changementdunomdufichierdemonitoringduncanal.
ChanIsAvail():vrificationdeladisponibilitduncanal.
CheckGroup():vrificationdunombredecanauxpourungroupe.
Congestion():indicationdeltatdencombrementduncanal.
ControlPlayback():lecturedunfichieraudioavecdesfonctionsdavancement(forward)ouderetourarrire(rewind).
Cut():affectationdunepartiedunevariableuneautrevariable.
DateTime():noncdeladatedansunformatpersonnalis.
DBdel():suppressiondunecldanslabasededonnesAsterisk.
DBdeltree():suppressiondunefamilledanslabasededonnesAsterisk.
DBget():recherchedunevaleurdunecldanslabasededonnesAsterisk.
DBput():enregistrementdunevaleurdanslabasededonnesAsterisk.
DeadAGI():excutiondunscriptAGIsuruncanalraccroch.
Dial():connexiondunappelsurlecanalcourant.
DigitTimeout():dfinitiondudlaimaximumentrelafrappedesnumros.
Directory():fournituredunrpertoiredesextensionsdebotesvocales.
DISA():autorisation,desutilisateurseffectuantdesappelsentrants,effectuerdesappelssortants(DirectInward
SystemAccess).
DumpChan():affichagedesinformationsconcernantuncanaldappel.
DUNDiLookup():recherchedunnumrodetlphoneaveclesystmeDUNDI.
EAGI():excutionduneapplicationEAGI.
Echo():retourdunchodufluxaudiolappelant.
EndWhile():findunebouclewhile.
EnumLookup():recherchedunnumrodetlphoneaveclesystmeENUM.
Eval():valuationdevariablesdansuneexpression.
Exec():excutionduneapplicationinterne.
ExecIf():excutionconditionnelleduneapplicationinterne.
Festival():noncduntextelutilisateur,laidedeloutildetraductioncrit/oralFestival.

ENI Editions - All rigths reserved - educ hafa

- 1-

Flash():envoiedunsignalflashsuruncanalZap.
ForkCDR():duplicationduCDR.
GetCPEID():rcuprationdelidentifiantCPEduntlphoneADSI.
GetGroupCount():obtentiondunombredepersonnesdansungroupedonn.
GetGroupMatchCount():obtentiondunombredepersonnesdanstouslesgroupescorrespondantaumotifdonn.
Goto():sautuneprioritparticulire,uneextensionouuncontexte.
GotoIf():sautuneprioritparticulire,uneextensionouuncontexte,defaonconditionnelle.
Hangup():raccrochageducanalencours.
HasNewVoicemail():sautlaprioritn+101siprsencedunnouveaumessagedanslabotevocale.
HasVoicemail()sautlaprioritn+101siprsencedunmessagedanslabotevocale.
IAX2Provision():provisiondunappareilIAXyavecundescriptifdonn.
ImportVar():importationdansunevariableduneautrevariableduncanaldonn.
LookupBlacklist():recherchedansuneblacklist(listenoire)dunometdunumrodunepersonneappelantedaprs
sonCaller.
LookupCIDName():recherchedelidentifiantdunepersonnedanslabasededonnesAstDB(CallerID).
Macro( ) : implmentation dune macro. Fonction conserve sous Asterisk 1.6 mais il est conseill dutiliser les
applicationsGosub()/Return().
MacroExit():sortieduneMacro.
MacroIf():implmentationdunemacroconditionnelle.
MailboxExists():sautverslaprioritn+101silabotevocaleexiste.
Math():traitementdefonctionsmathmatiques.
MD5():calculduchecksumMD5.
MD5Check():rechercheduchecksumMD5.
MeetMe():introductiondelappelantdansuneconfrence.
MeetMeAdmin():administrationduneconfrence.
MeetMeCount():comptelenombredeparticipantsduneconfrence.
Milliwatt():gnrationdunetonalitde1000Hz0dbm.
Monitor():surveillancedunfluxaudioducanalencours.
MP3Player():lecturedunfichierMP3.
MusicOnHold():lecturedunemusiquedattentedefaonindfinie.
MYSQL():faitrfrencediversesfonctionnalitsMySQL.
NBScat():lecturedunfluxNBSlocal(NetworkBroadcastSound).
NoCDR():dsactivationdesenregistrementsCDRpourlappelencours.
NoOp():nefaitrien.Utilisdesfinsdedbogage.
Park():miseenparcdelappelencours.
ParkAndAnnounce():miseenparcdelappelencoursetannoncelappelsurlecanaldonn.
ParkedCall():rponseunappelmisenparc.
PauseQueueMember():miseenpausedunmembredunefiledattente.
Pickup():supervisiondappel.
Playback():lecturedunfichier.
PlayTones():lecturedunelistedetonalits.
PrivacyManager():demandelappelantdentrerunnumrodetlphonesileCallerIDnestpasmis.
Progress():indicationdelavancementdunappel.
Queue():miseenfiledattentedelappelencours.

- 2-

ENI Editions - All rigths reserved - educ hafa

Random():sautconditionnelbassuruneprobabilitdonne.
Read():rcuprationdeschiffrestapsparlappelantetstockagedansunevariabledonne.
ReadFile():lecturedunfichierdonnenparamtre.
RealTime():recherchedinformationssurlesdonnesRealtime.
RealTimeUpdate():misejourdunedonneRealtime.
Record():enregistrementdunfichier.
RemoveQueueMember():suppressiondynamiquedemembresdunefiledattente.
ResetCDR():rinitialisationdelenregistrementCDR.
ResponseTimeout():positionnementdundlaimaximumavantderecevoirunerponsedelappelant.
RetryDial():lancementdunappeletnouvelessaisichec.
Return():retourduneroutinegosub.
Ringing():indicationdelatonalitdesonnerie.
RxFAX():rceptiondunFAXdansunfichier.
SayAlpha():noncelexpressiondonne.
SayDigits():noncelechiffredonn.
SayNumber():noncelenombredonn.
SayPhonetic():nonceenphontiquelexpressiondonne.
SayUnixTime():noncelheureetladatedansunformatspcifique.
SendDTMF():missiondetonalitsdechiffres.
SendImage():missiondunfichierimagesurlecanalencours.
SendText():missionduntextesurlecanalencours.
SendURL():demandelappareiltlphoniqueclientdalleruneURL(siceluicisupporteleHTML).
Set():affecteunedonneunevariable.
SetAccount():dfinitionducodedecomptabilitCDR.
SetAMAFlags():dfinitiondesflagsAMAdansleCDR.
SetCallerID():dfinitionduCallerID(identifiantdelappelant).
SetCallerPres():dfinitiondesindicateursdeprsentationduCallerID,remplacparCallerpres().
SetCDRUserField():dfinitionduchamputilisateurdansleCDR.
SetCIDName():dfinitiondunomdelappelantselonleCallerID.
SetCIDNum():dfinitiondunumrodelappelantselonleCallerID.
SetGlobalVar():affecteunedonneunevariableglobale.
SetGroup():affecteunedonneaugroupeducanalencours.
SetLanguage():dfinitiondulangageutilisparlecanalencours.
SetMusicOnHold( ) : dfinition de la classe par dfaut de la musique dattente, remplac par SetChannel(music
class=...).
SetRDNIS():dfinitiondunumroRDNIS(RedirectDialNumberIDService).
SetTransferCapability():dfinitiondelacapacitdetransfertISDN.
SetVar():affecteunedonneunevariable.
SIPAddHeader():ajoutdunentteSIPlappelsortant.
SIPDtmfMode():changementdudtmfmodepourunappelSIP.
SIPGetHeader():obtentiondelentteSIPpartirdunappelentrant.
SMS():communicationavecuncentredeservicedeSMSetavecdestlphonescompatibles.
SoftHangup():raccrochage(logiciel)duncanaldonn.
Sort():tridunelistedemotsclsetdevaleurs.

ENI Editions - All rigths reserved - educ hafa

- 3-

StartMusicOnHold():dmarragedelalecturedunemusiquedattente.
StopMonitor():arrtdelasurveillanceduncanal.
StopMusicOnHold():arrtdelalecturedunemusiquedattente.
StopPlayTones():arrtdelalecturedunelistedetonalits.
System():excutiondunecommandedusystmedexploitation.
Transfer():transfertdelappelantversuneextensiondistante.
TrySystem():essaidexcutiondunecommandedusystmedexploitation.
TxFAX():missiondunfichierFAX.
TXTCIDName():recherchedunomdelappelantdanslenregistrementTXT(DNS).
UnpauseQueueMember():sortiedumodepausedunmembredelafiledattente.
UserEvent():missiondunvnementlinterfacedelAsteriskManager.
Verbose():missionduntextesurlasortiedescommentaires(verboseoutput).
VMAuthenticate():authentificationdelappelantlaidedesmotsdepassdelaboteauxlettres.
VoiceMail():demandelappelantdelaisserunmessagedanslabotevocaledonne.
VoiceMailMain():entredanslesystmedebotevocale.
Wait():attentedunombredonn(enseconde).
WaitExten():attentedelafournitureduneextension.
WaitForRing():attentedurantlasonneriedunappel(laissesonnerunappel).
WaitForSilence():attenteduneduredesilence.
WaitMusicOnHold( ) : lecture dune musique dattente pendant le nombre donn (en seconde), remplac par
MusicOnHold().
While():dmarragedunebouclewhile.
Zapateller():gestiondunetonalitspcifique(SIT)envuedebloquerlesappelspublicitaires.
ZapBarge():couteduncanalZap.
ZapRAS():excutionduserveurdaccsdistantISDNdeZaptel.
ZapScan():scandescanauxZapenvuedelasurveillancedesappels.

- 4-

ENI Editions - All rigths reserved - educ hafa

Quelquesnouvellescommandesintroduitesparla1.6
Bridge():permetdeconnecterdeuxcanauxdansledialplan.
Originate():existedepuislaversion1.6.2dAsterisk.Permetdinitierunappelsortant.
Jack():kitdeconnexionJackaudio.PermetdeconnecteruncanalAsteriskuneentreouunesortieJack.
Mset():permetdeparamtrerplusieursvariablesenuneseulecommande(ex:Mset(param1=valeur1,param2=
valeur2...)).
ConfBridge():mmefonctionnalitqueMeetMe()maislaudioesttraiteeninternedansAsterisketnonparDAHDI
(ouZaptel).
MiniVM() : MiniVoiceMail est un nouveau systme de Voice Mail constitu de petites applications et fonctions
(MiniVMAccMess,MiniVMDelete,MiniVMGreet,MiniVMNotify,MiniVMRecord).
Source:http://www.voipinfo.org/wiki/index.php?page=Asterisk++documentation+of+application+commandes

ENI Editions - All rigths reserved - educ hafa

- 1-

Introduction
Comme tout systme logiciel, Asterisk a besoin dun certain nombre de fichiers de configuration pour son
fonctionnement.
Ilexisteplusdesoixantefichiersdeconfigurationquisetrouventtoussous/etc/asterisketsontcaractrissparun
suffixeen.conf.

ENI Editions - All rigths reserved - educ hafa

- 1-

Asterisk.conf
Lefichierdeconfigurationprincipalestasterisk.confilindiquetroistypesdinformations:

Emplacementdesrpertoiresdetravail[directories]

fichiersdeconfiguration

fichiersdelogs

fichiersdelibrairies

scripts

modules

programmeduserveur

spool(transfertdesdonnes).

Permissionsetproprits[files]

Comportementdesoptionsdedmarrage[options].

Cefichierestgnrdefaonautomatiquelorsdelinstallation dAsterisk(aprslelancementdelacommandemake
samples).
[directories]
astetcdir => /etc/asterisk
astmoddir => /usr/lib/asterisk/modules
astvarlibdir => /var/lib/asterisk
astagidir => /var/lib/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run/asterisk
astlogdir => /var/log/asterisk
; Changing the following lines may compromise your security.
;[files]
;astctlpermissions = 0660
;astctlowner = root
;astctlgroup = apache
;astctl = asterisk.ctl

ENI Editions - All rigths reserved - educ hafa

- 1-

Configurationdescanaux
1.agents.conf
Ce fichier permet la configuration des postes doprateurs de centre dappel : les agents. Voir le chapitre
Implmentation dun centre dappels. La section [general] permet de spcifier quun agent peut tre de type
persistant,cestdirestockdanslabasededonneslocaleAsterisk(AstDB)ettoujoursprsentmmeaprsun
redmarragedAsterisk.Lesagentssontdfinisdanslasection[agents].
[general]
;
; Define whether callbacklogins should be stored in astdb for
; persistence. Persistent logins will be reloaded after
; Asterisk restarts.
;
persistentagents=yes
;
; Agent configuration
;
;
[agents]
;
; Define autologoff times if appropriate. This is how long
; the phone has to ring with no answer before the agent is
; automatically logged off (in seconds)
;
;autologoff=15
;
; Define ackcall to require an acknowledgement by # when
; an agent logs in using agentcallbacklogin. Default is "no".
;
;ackcall=no
;
; Define wrapuptime. This is the minimum amount of time when
; after disconnecting before the caller can receive a new call
; note this is in milliseconds.
;
;wrapuptime=5000
;
; Define the default musiconhold for agents
; musiconhold => music_class
;
;musiconhold => default
;
; Define updatecdr. This is whether or not to change the source
; channel in the CDR record for this call to agent/agent_id so
; that we know which agent generates the call
;
;updatecdr=no
;
; Group memberships for agents (may change in mid-file)
;
;group=3
;group=1,2
;group=
;
; -------------------------; This section is devoted to recording agents calls
; The keywords are global to the chan_agent channel driver
;
; Enable recording calls addressed to agents. Its turned
off by default.
;recordagentcalls=yes
;
; The format to be used to record the calls: wav, gsm, wav49.
; By default its "wav".
ENI Editions - All rigths reserved - educ hafa

- 1-

;recordformat=gsm
;
; Insert into CDR userfield a name of the the created recording
; By default its turned off.
;createlink=yes
;
; The text to be added to the name of the recording. Allows
forming a url link.
;urlprefix=http://localhost/calls/
;
; The optional directory to save the conversations in.
The default is
; /var/spool/asterisk/monitor
;savecallsin=/var/calls
;
; An optional custom beep sound file to play to
always-connected agents.
;custom_beep=beep
;
; ---------------------;
; This section contains the agent definitions, in the form:
;
; agent => agentid,agentpassword,name
;
;agent => 1001,4321,Mark Spencer
;agent => 1002,4321,Will Meadows

2.iax.conf
CefichierconcernelaconfigurationdescanauxdetypeIAX.VoirlechapitreEntreprisemultisites.

3.mgcp.conf
CefichierconcernelaconfigurationdescanauxdetypeMGCP.LestlphonesdoiventsupportsMGCP.

4.sip.conf
CefichierconcernelaconfigurationdescanauxdetypeSIP.VoirlechapitreConceptionduplandenumrotation.

5.sip_notify.conf
Une fonctionnalit intressante dAsterisk est de pouvoir redmarrer distance des tlphones de type SIP en lui
faisant parvenir un message NOTIFY, dfini dans le fichier sip_notify.conf. Chaque message est propre chaque
constructeur.
[polycom-check-cfg]
Event=>check-sync
Content-Length=>0
; Untested
[sipura-check-cfg]
Event=>resync
Content-Length=>0
; Untested
[grandstream-check-cfg]
Event=>sys-control
; Untested
[cisco-check-cfg]
- 2-

ENI Editions - All rigths reserved - educ hafa

Event=>check-sync
Content-Length=>0
; Untested - from Snom docs
[reboot-snom]
Event=>reboot
Content-Length=>0

6.skinny.conf
Cefichierpermetlaconfigurationdescanauxutilissparleprotocoleskinnyetpermetdoncdutiliserdestlphones
CiscodetypeSCCP.

7.chan_dahdi.conf
CefichierpermetdeconfigurerdescanauxZapilsertlierAsteriskaveclepiloteZaptel.VoirlechapitreInstallation
dunserveurAsterisk.
[trunckgroups]
[channels]
switchtype=euroisdn
pridialplan=unknown
;prilocaldialplan=local
;internationalprefix=00
;nationalprefix=0
;usecallingpres=yes
;busydetect=no ; not need on pri
;callprogress=no
; was yes but wiki says experimatley could be produce hangups
;callwaitingcallerid=yes
; show callerid on callwaitingcalls
echotraining=yes
echocancel=yes
;echocancelwhenbridged=yes
faxdetect=both
;overlapdial=yes
;immediate=no
;callerid=asreceived
language=fr
;rxgain=0.0
;txgain=0.0
;threewaycalling=yes
;idecallerid=yes
;usecallingpres=yes
;callwaiting=no
;transfert=yes
;cancallforward=yes
;callreturn=yes
;callprogress=no
signalling=pri_cpe
musiconhold=default
context=incoming
group=1
channel => 1-15

ENI Editions - All rigths reserved - educ hafa

- 3-

Configurationduplandenumrotation
1.extensions.conf
Ce fichier est le c ur dAsterisk et contient le plan de numrotation. Voir les chapitres Conception du plan de
numrotationetAmliorationduplandenumrotationrelatifscesujet.

2.extensions.ael
CefichierfaitrfrenceAEL(AsteriskExtensionsLanguage)quiestunlangagedextensionlasyntaxeclassique
habituellequenouspouvonstrouverdansextensions.conf.
//
// Example AEL config file
//
macro std-exten-ael( ext , dev ) {
Dial(${dev}/${ext},20);
switch(${DIALSTATUS}) {
case BUSY:
Voicemail(b${ext});
break;
default:
Voicemail(u${ext});
};
catch a {
VoiceMailMain(${ext});
return;
};
};
context ael-demo {
s => {
Wait(1);
Answer();
TIMEOUT(digit)=5;
TIMEOUT(response)=10;
restart:
Background(demo-congrats);
instructions:
for (x=0; ${x} < 3; x=${x} + 1) {
Background(demo-instruct);
WaitExten();
};
};
2 => {
Background(demo-moreinfo);
goto s|instructions;
};
3 => {
LANGUAGE()=fr;
goto s|restart;
};
500 => {
Playback(demo-abouttotry);
Dial(IAX2/guest@misery.digium.com);
Playback(demo-nogo);
goto s|instructions;
};
600 => {
Playback(demo-echotest);
Echo();
Playback(demo-echodone);
goto s|instructions;
ENI Editions - All rigths reserved - educ hafa

- 1-

};
_1234 => &std-exten-ael(${EXTEN}, "IAX2");
# => {
Playback(demo-thanks);
Hangup();
};
t => jump #;
i => Playback(invalid);
};

3.features.conf
Cefichierfaitrfrenceauparcagedesappels(ourangement)ilcomprendlesinformationsprincipalessuivantes:

Numrodelextensioncomposerpourparquerlappel.

Numrodesextensionsolesappelssontparqus.

Contexteutilispourlesappelsparqus.

Dure(ensecondes)pendantlaquelleunappelpeuttreparqu.

Fichierdetypeaudiojoulappelantdontlappelestparqu.

; Sample Parking configuration


;
[general]
parkext => 700
parkpos => 701-720

context => parkedcalls


;parkingtime => 45

;transferdigittimeout => 3
;courtesytone = beep

;xfersound = beep
;xferfailsound = beeperr
;adsipark = yes
;findslot => next

;pickupexten = *8
;featuredigittimeout = 500

[featuremap]
;blindxfer => #1
;disconnect => *0
;automon => *1

- 2-

; What extension to dial to park


; What extensions to park
calls on. These needs to be
; numeric, as Asterisk starts
from the start position
; and increments with one
for the next parked call.
; Which context parked calls are in
; Number of seconds a call
can be parked for
; (default is 45 seconds)
; Number of seconds to wait between
digits when transfering a call
; Sound file to play to
the parked caller
; when someone dials a parked call
; to indicate an attended
transfer is complete
; to indicate a failed transfer
; if you want ADSI parking
announcements
; Continue to the next free
parking space.
; Defaults to first available
; Configure the pickup extension.
Default is *8
; Max time (ms) between digits for
; feature activation.
Default is 500

; Blind transfer
; Disconnect
; One Touch Record

ENI Editions - All rigths reserved - educ hafa

;atxfer => *2

; Attended transfer

[applicationmap]
; Note that the DYNAMIC_FEATURES channel variable must be
set to use the features
; defined here. The value of DYNAMIC_FEATURES should be
the names of the features
; to allow the channel to use separated by #. For example:
;
Set(DYNAMIC_FEATURES=myfeature1#myfeature2#myfeature3)
;
;testfeature => #9,callee,
Playback,tt-monkeys
;Play tt-monkeys to
;callee if #9 was pressed

4.extconfig.conf
Ce fichier est utilis pour la configuration des tables de base de donnes (MySQL par exemple) via le moteur
Realtime.VoirlechapitreAmliorationduplandenumrotation.
[settings]
sipusers => mysql,asterisk_rt,sip_table
sippeers => mysql,asterisk_rt,sip_table
iaxusers => mysql,asterisk_rt,iax_table
iaxpeers => mysql,asterisk_rt,iax_table
queues => mysql,asterisk_rt,queue_table
queue_members => mysql,asterisk_rt,queue_members_table
voicemail => mysql,asterisk_rt,voicemail_table
;extensions => mysql,asterisk_rt,extensions_table

ENI Editions - All rigths reserved - educ hafa

- 3-

Configurationdecommandesspcifiquesduplandenumrotation
1.festival.conf
CefichierpermetlaconfigurationdelapplicationFestival.VoirlechapitreApplicationsconnexes.
;
; Festival Configuration
;
[general]
;
; Host which runs the festival server (default : localhost);
;
host=localhost
;
; Port on host where the festival server runs (default : 1314)
;
port=1314
;
; Use cache (yes, no - defaults to no)
;
usecache=yes
;
; If usecache=yes, a directory to store waveform cache files.
; The cache is never cleared (yet), so you must
take care of cleaning it
; yourself (just delete any or all files from the cache).
; THIS DIRECTORY *MUST* EXIST and must be writable from
the asterisk process.
; Defaults to /tmp/
;
cachedir=/var/lib/asterisk/festivalcache/
;
; Festival command to send to the server.
; Defaults to: (tts_textasterisk "%s" file)(quit)\n
; %s is replaced by the desired text to say. The command MUST
end with a
; (quit) directive, or the cache handling mechanism will hang.
Do not
; forget the \n at the end.
;
festivalcommand=(tts_textasterisk "%s" file)(quit)\n
;
;

2.indications.conf
La dfinition des tonalits de sonnerie (liste de sons) est dfinie dans ce fichier il est possible de dfinir des
tonalitsparpays.LexemplecidessousnetraitequedestonalitsenFrance.
; indications.conf
; Configuration file for location specific tone indications
; used by the pbx_indications module.
;
; NOTE:
;
When adding countries to this file, please keep them
in alphabetical
;
order according to the 2-character country codes!
;
; The [general] category is for certain global variables.
; All other categories are interpreted as location specific
indications
;

ENI Editions - All rigths reserved - educ hafa

- 1-

;
[general]
country=us

; default location

; [example]
; description = string
;
The full name of your country, in English.
; alias = iso[,iso]*
;
List of other countries 2-letter iso codes,
which have the same
;
tone indications.
; ringcadence = num[,num]*
;
List of durations the physical bell rings.
; dial = tonelist
;
Set of tones to be played when one picks up the hook.
; busy = tonelist
;
Set of tones played when the receiving end is busy.
; congestion = tonelist
;
Set of tones played when there is some congestion
(on the network?)
; callwaiting = tonelist
;
Set of tones played when there is a call waiting
in the background.
; dialrecall = tonelist
;
Not well defined; many phone systems play a recall
dial tone after hook
;
flash.
; record = tonelist
;
Set of tones played when call recording is in progress.
; info = tonelist
;
Set of tones played with special information messages
(e.g., "number is
;
out of service")
; name = tonelist
;
Every other variable will be available as a shortcut
for the "PlayList" command
;
but will not be used automatically by Asterisk.
;
;
; The tonelist itself is defined by a comma-separated sequence
of elements.
; Each element consist of a frequency (f) with an optional
duration (in ms)
; attached to it (f/duration). The frequency component
may be a mixture of two
; frequencies (f1+f2) or a frequency modulated by another
frequency (f1+f2)
; The implicit modulation depth is fixed at 90%, though.
; If the list element starts with a !, that element is NOT
repeated,
; therefore, only if all elements start with !,
the tonelist is time-limited,
;
; concisely:
;
element = [!]freq[+|*freq2][/duration]
;
tonelist = element[,element]*
;
; Please note that SPACES ARE NOT ALLOWED in tone lists!
;
[fr]
description = France
; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
ringcadence = 1500,3500
; Dialtone can also be 440+330
dial = 440
busy = 440/500,0/500
ring = 440/1500,0/3500

- 2-

ENI Editions - All rigths reserved - educ hafa

; CONGESTION - not specified


congestion = 440/250,0/250
callwait = 440/300,0/10000
; DIALRECALL - not specified
dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/10
0,350+440
; RECORDTONE - not specified
record = 1400/500,0/15000
info = !950/330,!1400/330,!1800/330
stutter = !440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0
/100,!440/100,!0/100,!440/100,!0/100,440

3.meetme.conf
LesconfrencesMeetMepeuventtreconfiguresdemaniredynamiquevialapplicationDial()oustatiquelaide
dufichierdeconfigurationMeetme.conf.
VoirlechapitreAmliorationduplandenumrotation.
;
; Configuration file for MeetMe simple conference rooms for Asterisk of course.
;
; This configuration file is read every time you call app meetme()
[general]
;audiobuffers=32 ; The number of 20ms audio buffers to be used
; when feeding audio frames from non-Zap
channels
; into the conference; larger numbers will allow
; for the conference to de-jitter audio
that arrives
; at different timing than the conferences
timing
; source, but can also allow for latency in
hearing
; the audio from the speaker.
Minimum value is 2,
; maximum value is 32.
;
[rooms]
;
; Usage is conf => confno[,pin][,adminpin]
;
;conf => 1234
;conf => 2345,9938
conf => 600

4.musiconhold.conf
Cefichiercontienttouslesparamtresdeconfigurationdesmusiquesdattente,notammentlesclassesdemusique
dattenteetlemplacementdesfichiersdesmusiquesdattente.
; Music on Hold -- Sample Configuration
;
[default]
mode=files
directory=/var/lib/asterisk/mohmp3
; valid mode options:
; quietmp3
-- default
; mp3
-- loud
; mp3nb
-- unbuffered
; quietmp3nb
-- quiet unbuffered

ENI Editions - All rigths reserved - educ hafa

- 3-

; custom
-- run a custom application
; files
-- read files from a directory in any Asterisk
supported format
[beatles]
mode=files
;mode=quietmp3
directory=/var/lib/asterisk/mohmp3/beatles
[beethoven]
mode=quietmp3
directory=/var/lib/asterisk/mohmp3/beethoven
;[manual]
;mode=custom
; Note that with mode=custom, a directory is not required, such as when reading
; from a stream.
;directory=/var/lib/asterisk/mohmp3
;application=/usr/bin/mpg123 -q -r 8000 -f 8192 -b 2048 --mono -s
;[ulawstream]
;mode=custom
;application=/usr/bin/streamplayer 192.168.100.52 888
;format=ulaw
; mpg123 on Solaris does not always exit properly; madplay
may be a better
; choice
;[solaris]
;mode=custom
;directory=/var/lib/asterisk/mohmp3
;application=/site/sw/bin/madplay
-Q -o raw:- mono -R 8000 -a -12
;
;
; File-based (native) music on hold
;
; This plays files directly from the specified directory,
no external
; processes are required. Files are played in normal sorting order
; (same as a sorted directory listing), and no volume or other
; sound adjustments are available. If the file is available in
; the same format as the channels codec, then it will be played
; without transcoding (same as Playback would do in the dialplan).
; Files can be present in as many formats as you wish, and the
; best format will be chosen at playback time.
;
; NOTE:
; If you are not using "autoload" in modules.conf, then you
; must ensure that the format modules for any formats you wish
; to use are loaded _before_ res_musiconhold. If you do not do
; this, res_musiconhold will skip the files it is not able to
; understand when it loads.
;
;[native]
;mode=files
;directory=/var/lib/asterisk/moh-native
;
;[native-random]
;mode=files
;directory=/var/lib/asterisk/moh-native
;random=yes
; Play the files in a random order
[siege-attente]
mode=files
directory=/var/lib/asterisk/mohmp3/siege/attente

- 4-

ENI Editions - All rigths reserved - educ hafa

random=no
[siege-predecroche]
mode=files
directory=/var/lib/asterisk/mohmp3/siege/predecroche
random=no
[agence1-attente]
mode=files
directory=/var/lib/asterisk/mohmp3/agence1/attente
random=no
[agence2-predecroche]
mode=files
directory=/var/lib/asterisk/mohmp3/agence2/predecroche
random=no

5.queues.conf
Cefichierpermetlaconfigurationdesfilesdattentes(fonctiondecentredappels).
Unefiledattenteestdfinieentrecrochet([file_number1]parexemple).VoirlechapitreImplmentationduncentre
dappels.
[general]
;
; Global settings for call queues
;
; Persistent Members
;
Store each dynamic agent in each queue in the astdb so that
;
when asterisk is restarted, each agent will be automatically
;
readded into their recorded queues. Default is yes.
;
persistentmembers = yes
;
; Note that a timeout to fail out of a queue may be passed
as part of
; an application call from extensions.conf:
; Queue(queuename|[options]|[optionalurl]|[announceoverride]|
[timeout])
; example: Queue(dave|t|||45)
;[markq]
;
; A sample call queue
;
; Musiconhold sets which music applies for this particular
; call queue (configure classes in musiconhold.conf)
;
;musiconhold = default
;
; An announcement may be specified which is played for the
; member as soon as they answer a call, typically to indicate
to them which queue
; this call should be answered as, so that agents or members
who are
; listening to more than one queue can differentiated
how they should
; engage the customer
;
;announce = queue-markq
;
; A strategy may be specified. Valid strategies include:
;
; ringall - ring all available channels until one answers
(default)
; roundrobin - take turns ringing each available interface

ENI Editions - All rigths reserved - educ hafa

- 5-

; leastrecent - ring interface which was least recently


called by this queue
; fewestcalls - ring the one with fewest completed
calls from this queue
; random - ring random interface
; rrmemory - round robin with memory, remember
where we left off last ring pass
;
;strategy = ringall
;
; Second settings for service level (default 0)
; Used for service level statistics (calls answered within
service level time
; frame)
;servicelevel = 60
;
; A context may be specified, in which if the user types a SINGLE
; digit extension while they are in the queue, they will be
taken out
; of the queue and sent to that extension in this context.
;
;context = qoutcon
;
; How long do we let the phone ring before we consider this
a timeout...
;
;timeout = 15
;
; How long do we wait before trying all the members again?
;
;retry = 5
;
; Weight of queue - when compared to other queues, higher
weights get
; first shot at available channels when the same channel
is included in
; more than one queue.
;
;weight=0
;
; After a successful call, how long to wait before sending
a potentially
; free member another call (default is 0, or no delay)
;
;wrapuptime=15
;
; Maximum number of people waiting in the queue (0 for unlimited)
;
;maxlen = 0
;
;
; How often to announce queue position and/or estimated holdtime
to caller (0=off)
;
;announce-frequency = 90
;
;
; How often to make any periodic announcement
(see periodic-announce)
;
;periodic-announce-frequency=60
;
; Should we include estimated hold time in position
announcements?
; Either yes, no, or only once.
; Hold time will be announced as the estimated time,
; or "less than 2 minutes" when appropriate.
;
;announce-holdtime = yes|no|once

- 6-

ENI Editions - All rigths reserved - educ hafa

;
; Whats the rounding time for the seconds?
; If this is non-zero, then we announce the seconds
as well as the minutes
; rounded to this value.
;
; announce-round-seconds = 10
;
; Use these sound files in making position/holdtime
announcements. The
; defaults are as listed below change only if you
;
;
;queue-youarenext = queue-youarenext
;
now first in line.")
;queue-thereare = queue-thereare
;
;queue-callswaiting = queue-callswaiting
;
waiting.")
;queue-holdtime = queue-holdtime
;
est. holdtime is")
;queue-minutes = queue-minutes
;
;queue-seconds = queue-seconds
;

need to.

("You are
("There are")
("calls
("The current
("minutes.")
("seconds.")

;queue-thankyou = queue-thankyou
; ("Thank you
for your patience.")
;queue-lessthan = queue-less-than
; ("less than")
;queue-reporthold = queue-reporthold
; ("Hold time")
;periodic-announce = queue-periodic-announce
; ("All reps
busy / wait for next")
;
; Calls may be recorded using Asterisks monitor resource
; This can be enabled from within the Queue application,
starting recording
; when the call is actually picked up; thus, only successful
calls are
; recorded, and you are not recording while people are listening
to MOH.
; To enable monitoring, simply specify "monitor-format";
it will be disabled
; otherwise.
;
; You can specify the monitor filename with by calling
;
Set(MONITOR_FILENAME=foo)
; Otherwise it will use MONITOR_FILENAME=${UNIQUEID}
;
; monitor-format = gsm|wav|wav49
;
; If you wish to have the two files joined together
when the call ends, set this
; to yes.
;
; monitor-join = yes
;
; This setting controls whether callers can join
a queue with no members. There
; are three choices:
;
; yes
- callers can join a queue with no members or only unavailable members
; no
- callers cannot join a queue with no members
; strict - callers cannot join a queue with no members
or only unavailable
;
members
;
; joinempty = yes
;
; If you wish to remove callers from the queue when new callers
cannot join,
; set this setting to one of the same choices for joinempty

ENI Editions - All rigths reserved - educ hafa

- 7-

;
; leavewhenempty = yes
;
;
; If this is set to yes, the following manager events will be
generated:
; AgentCalled, AgentDump, AgentConnect, AgentComplete
; (may generate some extra manager events, but probably
ones you want)
;
; eventwhencalled = yes
;
; If this is set to no, the following manager events will
be generated:
; QueueMemberStatus
; (may generate a WHOLE LOT of extra manager events)
;
; eventmemberstatusoff = no
;
; If you wish to report the callers hold time to the member
before they are
; connected to the caller, set this to yes.
;
; reportholdtime = no
;
;
; If you wish to have a delay before the member is connected
to the caller (or
; before the member hears any announcement messages),
set this to the number of
; seconds to delay.
;
; memberdelay = 0
;
; If timeoutrestart is set to yes, then the timeout
for an agent to answer is
; reset if a BUSY or CONGESTION is received. This can be useful
if agents
; are able to cancel a call with reject or similar.
;
; timeoutrestart = no
;
; Each member of this call queue is listed on a separate line in
; the form technology/dialstring. "member" means a normal member
of a
; queue. An optional penalty may be specified after a comma,
such that
; entries with higher penalties are considered last.
;
;member => Zap/1
;member => Zap/2
;member => Agent/1001
;member => Agent/1002
;
; Note that using agent groups is probably not what you want. Strategies do
; not propagate down to the Agent system so if you want round
robin, least
; recent, etc, you should list all the agents in this file
individually and not
; use agent groups.
;
;member => Agent/@1
; Any agent in group 1
;member => Agent/:1,1 ; Any agent in group 1, wait for first
; available, but consider with penalty
[support-produit]
;strategy = leastrecent

- 8-

ENI Editions - All rigths reserved - educ hafa

strategy = ringall
;strategy = roundrobin
timeout = 10
retry = 15
wrapuptime=30
musiconhold = support
maxlen = 10
joinempty = yes
leavewhenempty = no
;announce = default
reportholdtime = yes
announce-frequency = 10
periodic-announce-frequency=10
announce-holdtime = yes
[5768]
wrapuptime=0
timeout=15
strategy=ringall
retry=5
queue-youarenext=
queue-thereare=
queue-thankyou=queue-thankyou
queue-callswaiting=
music=beatles
monitor-join=yes
monitor-format=
member=Local/754,0
maxlen=0
leavewhenempty=no
joinempty=Yes
context=
announce-holdtime=no
announce-frequency=0

6.voicemail.conf
Ce fichier indique les paramtres de configuration des botes vocales.Voir le chapitre Conception du plan de
numrotation.
[general]
#include vm_general.inc
#include vm_email.inc
;externnotify=/usr/local/bin/setperm
;language=fr
searchcontexts=yes

[zonemessage]
;france=Europe/Paris|vm-received q digits/at k
digits/hundred M hours
france=Europe/Paris|vm-received q k digits/hundred M hours

;[default]
;searchcontexts=yes
;#include vm_general.inc
;#include vm_email.inc
;language=fr
1000 => 3615,1000,lou@masociete.com,,attach=yes|saycid=no|
envelope=no|delete=no
1001 => 3615,1001,zoe@masociete.com,,attach=yes|saycid=no|
envelope=no|delete=no

ENI Editions - All rigths reserved - educ hafa

- 9-

1002 => 3615,1002,catherine@masociete.com,,attach=yes|


saycid=no|envelope=no|delete=no
;1004 => 3615,1004,solene@masociete.com,,attach=yes|saycid=no|
envelope=no|delete=no
;1005 => 3615,1005,margaux@masociete.com,,attach=yes|
saycid=no|envelope=no|delete=no
[agence1]
language=fr
include vm_general.inc
include vm_email.inc
2001 => 3615,2001,philippe@masociete.com,,attach=yes|saycid=no|en
velope=no|delete=no

- 10 -

ENI Editions - All rigths reserved - educ hafa

Autresfichiersdeconfiguration
1.codecs.conf
Ce fichier concerne certains paramtrages de codecs en vue dune amlioration des performances. Seul le codec
opensource speex (http://www.speex.org) peut tre paramtr. Un paramtre intressant pour les autres codecs
estlePacketLossConcealment(PLC)quipermetdedissimulerlapertedepaquets.
[speex]
; CBR encoding quality [0..10]
; used only when vbr = false
quality => 3
; codec complexity [0..10]
; tradeoff between cpu/quality
complexity => 2
; perceptual enhancement [true / false]
; improves clarity of decoded speech
enhancement => true
; voice activity detection [true / false]
; reduces bitrate when no voice detected, used only for CBR
; (implicit in VBR/ABR)
vad => true
; variable bit rate [true / false]
; uses bit rate proportionate to voice complexity
vbr => true
; available bit rate [bps, 0 = off]
; encoding quality modulated to match this target bit rate
; not recommended with dtx or pp_vad - may cause bandwidth spikes
abr => 0
; VBR encoding quality [0-10]
; floating-point values allowed
vbr_quality => 4
; discontinuous transmission [true / false]
; stops transmitting completely when silence is detected
; pp_vad is far more effective but more CPU intensive
dtx => false
; preprocessor configuration
; these options only affect Speex v1.1.8 or newer
; enable preprocessor [true / false]
; allows dsp functionality below but incurs CPU overhead
preprocess => false
; preproc voice activity detection [true / false]
; more advanced equivalent of DTX, based on voice frequencies
pp_vad => false
; preproc automatic gain control [true / false]
pp_agc => false
pp_agc_level => 8000
; preproc denoiser [true / false]
pp_denoise => false
; preproc dereverb [true / false]
pp_dereverb => false
pp_dereverb_decay => 0.4
pp_dereverb_level => 0.3
ENI Editions - All rigths reserved - educ hafa

- 1-

[plc]
; for all codecs which do not support native PLC
; this determines whether to perform generic PLC
; there is a minor performance penalty for this
genericplc => true

2.logger.conf
Cefichierpermetdindiquerlesparamtresrelatifsauxlogs,etnotammentlaverbositdelaCLI.Leslogssontsitus
dans/var/log/asterisk.
;
;
;
;
;
;
;
;

Logging Configuration
In this file, you configure logging to files or to
the syslog system.
"logger reload" at the CLI will reload configuration
of the logging system.

[general]
; Customize the display of debug message time stamps
; this example is the ISO 8601 date format (yyyy-mm-dd HH:MM:SS)
; see strftime(3) Linux manual for format specifiers
dateformat=%F %T
;
; This appends the hostname to the name of the log files.
;appendhostname = yes
;
; This determines whether or not we log queue events to a file
; (defaults to yes).
;queue_log = no
;
; This determines whether or not we log generic events to a file
; (defaults to yes).
;event_log = no
;
;
; For each file, specify what to log.
;
; For console logging, you set options at start of
; Asterisk with -v for verbose and -d for debug
; See asterisk -h for more information.
;
; Directory for log files is configures in asterisk.conf
; option astlogdir
;
[logfiles]
;
; Format is "filename" and then "levels" of debugging to be
included:
;
debug
;
notice
;
warning
;
error
;
verbose
;
dtmf
;
; Special filename "console" represents the system console
;
; We highly recommend that you DO NOT turn on debug mode
if you are simply
; running a production system. Debug mode turns on a LOT of
extra messages,
; most of which you are unlikely to understand without an
understanding of
- 2-

ENI Editions - All rigths reserved - educ hafa

; the underlying code. Do NOT report debug messages as code


issues, unless
; you have a specific issue that you are attempting to debug.
They are
; messages for just that debugging and do not rise to
the level of
; something that merit your attention as an Asterisk
administrator. Debug
; messages are also very verbose and can and do fill up
logfiles quickly;
; this is another reason not to have debug mode on a
production system unless
; you are in the process of debugging a specific issue.
;
;debug => debug
console => notice,warning,error
;console => notice,warning,error,debug
messages => notice,warning,error
;full => notice,warning,error,debug,verbose
;syslog keyword : This special keyword logs to syslog facility
;
;syslog.local0 => notice,warning,error
;

3.manager.conf
CefichierpermetdeconfigurerlAsteriskManager.VoirlechapitreApplicationsconnexes.
[general]
enabled=yes
port=5038
bindaddr=192.168.1.100
[user1]
secret=454545
read=system,call,log,verbose,command,agent,user
write=system,call,log,verbose,command,agent,user
;deny=0.0.0.0/0.0.0.0
permit=10.0.0.0/8
[manager]
secret=secret
read=system,call,log,verbose,command,agent,user
write=system,call,log,verbose,command,agent,user
[asterisk_user]
secret=3615
read=system,call,log,verbose,command,agent,user
write=system,call,log,verbose,command,agent,user
;deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.255

4.modules.conf
CefichierindiqueauserveurAsterisklesmoduleschargeraudmarrage.
Lesmodulessontsitusdans/usr/lib/asterisk/modulesetsontsuffixspar.so.
Il existe plusieurs types de modules : ressources (res_xxx.so), applications (app_xxx.so), enregistrements CDR
(cdr_xxx.so), canaux (chan_xxx.so), codecs (codec_xxx.so), formats (format_xxx.so), moteur Asterisk (pbx_xxx.so),
fonctionsautonomes(func_xxx.so),pontconfrence(bridge_xxx.so).
Le paramtre autoload = yes permet deffectuer un chargement automatique de tout fichier prsent dans le
rpertoiredesmodulesbienquecettemthodesoitlaplussimplegrer,ilestcependantpossibledexcluredes

ENI Editions - All rigths reserved - educ hafa

- 3-

moduleslaideduparamtreunload.
Ilestgalementpossibledutiliserautoload=noetdefaireappelauparamtreloadpourchaquemodulequenous
souhaitonscharger.
;
; Asterisk configuration file
;
; Module Loader configuration file
;
[modules]
autoload=yes
;
; Any modules that need to be loaded before the Asterisk
core has been
; initialized (just after the logger has been initialized)
can be loaded
; using preload. This will frequently be needed
if you wish to map all
; module configuration files into Realtime storage,
since the Realtime
; driver will need to be loaded before the modules
using those configuration
; files are initialized.
;
; An example of loading ODBC support would be:
;preload => res_odbc.so
;preload => res_config_odbc.so
;
; If you want, load the GTK console right away.
; Dont load the KDE console since
; its not as sophisticated right now.
;
noload => pbx_gtkconsole.so
;load => pbx_gtkconsole.so
noload => pbx_kdeconsole.so
;
; Intercom application is obsoleted by
; chan_oss. Dont load it.
;
noload => app_intercom.so
;
; The modem channel driver and its subdrivers are
; obsolete, dont load them.
;
noload => chan_modem.so
noload => chan_modem_aopen.so
noload => chan_modem_bestdata.so
noload => chan_modem_i4l.so
;
load => res_musiconhold.so
;
; Load either OSS or ALSA, not both
; By default, load OSS only (automatically) and do not load ALSA
;
noload => chan_alsa.so
;noload => chan_oss.so
;
; Module names listed in "global" section will have symbols globally
; exported to modules loaded after them.
;
;
[global]

5.res_odbc.conf
- 4-

ENI Editions - All rigths reserved - educ hafa

Ce fichier permet de dfinir les informations relatives laccs aux bases de donnes. Il fonctionne en
complmentaritaveclefichierextconfig.conf.
;;; odbc setup file
; ENV is a global set of environmental variables that will get set.
; Note that all environmental variables can be seen by all connections,
; so you cant have different values for different connections.
[ENV]
INFORMIXSERVER => my_special_database
INFORMIXDIR => /opt/informix
; All other sections are arbitrary names for database
connections.
[asterisk]
enabled => yes
dsn => asterisk
;username => myuser
;password => mypass
pre-connect => yes

[mysql2]
enabled => no
dsn => MySQL-asterisk
username => myuser
password => mypass
pre-connect => yes

6.rtp.conf
Ce fichier permet de configurer les ports RTP (Realtime Transport Protocol). Les ports RTP par dfaut utiliss par
Asterisksontcomprisentre10000et20000.
;
; RTP Configuration
;
[general]
;
; RTP start and RTP end configure start and end addresses
;
; Defaults are rtpstart=5000 and rtpend=31000
;
rtpstart=10000
rtpend=20000
;
; Whether to enable or disable UDP checksums on RTP traffic
;
;rtpchecksums=no
;
; The amount of time a DTMF digit with no end marker should be
; allowed to continue (in samples, 1/8000 of a second)
;
;dtmftimeout=3000

ENI Editions - All rigths reserved - educ hafa

- 5-

EnregistrementsCDR
1.cdr.conf
Cefichierpermetlenregistrementdesdtailsdunappeldansunebasededonns.
;
; Asterisk Call Detail Record engine configuration
;
; CDR is Call Detail Record, which provides logging services
via a variety of
; pluggable backend modules. Detailed call information
can be recorded to
; databases, files, etc. Useful for billing, fraud prevention,
compliance with
; Sarbanes-Oxley aka The Enron Act, QOS evaluations, and more.
;
[general]
; Define whether or not to use CDR logging. Setting
this to "no" will override
; any loading of backend CDR modules. Default is "yes".
;enable=yes
; Define the CDR batch mode, where instead of posting the CDR at the end of
; every call, the data will be stored in a buffer to help
alleviate load on the
; asterisk server. Default is "no".
;
; WARNING WARNING WARNING
; Use of batch mode may result in data loss after unsafe
asterisk termination
; ie. software crash, power failure, kill -9, etc.
; WARNING WARNING WARNING
;
;batch=no
; Define the maximum number of CDRs to accumulate in the buffer
before posting
; them to the backend engines. batch must be set
to yes. Default is 100.
;size=100
; Define the maximum time to accumulate CDRs in the buffer
before posting them
; to the backend engines. If this time limit is reached,
then it will post the
; records, regardless of the value defined for size.
batch must be set to
; yes. Note that time is in seconds. Default is 300
(5 minutes).
;time=300
; The CDR engine uses the internal asterisk scheduler to
determine when to post
; records. Posting can either occure inside
the scheduler thread, or a new
; thread can be spawned for the submission of every batch.
For small batches,
; it might be acceptable to just use the scheduler
thread, so set this to "yes".
; For large batches, say anything over size=10,
a new thread is recommended, so

ENI Editions - All rigths reserved - educ hafa

- 1-

; set this to "no".


;scheduleronly=no

Default is "no".

; When shutting down asterisk, you can block until


the CDRs are submitted. If
; you dont, then data will likely be lost. You can always
check the size of
; the CDR batch buffer with the CLI
"cdr statu"s command. To enable blocking on
; submission of CDR data during asterisk shutdown, set this to
"yes". Default
; is "yes".
;safeshutdown=yes

2.cdr_manager.conf
CefichierpermetdedfinirsilAsteriskManagerdoitgnrerounondesvnementsCDR.
;
; Asterisk Call Management CDR
;
[general]
enabled = yes

3.cdr_odbc.conf
LesenregistrementsCDRpeuventtrestocksdansunebasededonnesviaODBC.
;
; cdr_odbc.conf
;
;[global]
;dsn=MySQL-test
;username=username
;password=password
;loguniqueid=yes
;dispositionstring=yes
;table=cdr
;usegmtime=no

- 2-

;"cdr" is default table name


; set to "yes" to log in GMT

ENI Editions - All rigths reserved - educ hafa

Sites
http://www.voipinfo.org/wikiAsterisk
http://www.asterisk.org
http://www.asteriskfrance.net
http://www.asteriskdocs.org
http://www.asterisktutorials.com
http://www.asteriskguru.com
http://www.digium.com
Applicationiphone:AsteriskRef(listedesapplications,fonctions)pourversions1.2,1.4,1.6.0,1.6.1et1.6.2.

ENI Editions - All rigths reserved - educ hafa

- 1-

You might also like