Vous êtes sur la page 1sur 14

DIAL TECHNOLOGIES

Document pratique
Asterisk sous Debian

Rallis par :

MAACHI Yassine ZYANE Ayoub

01/07/2013

Sommaire
Remerciements: ...................................................................................................................................... 3 Introduction :........................................................................................................................................... 4 I-Installation d Asterisk : ......................................................................................................................... 4 1-Prparation linstallation : ............................................................................................................. 4 2-Installation :...................................................................................................................................... 4 II-Configuration dAsterisk :..................................................................................................................... 5 1-Cration des utilisateurs : ................................................................................................................ 6 2-Configuration du Dialplan : .............................................................................................................. 8 3-Teste de lappel : .............................................................................................................................. 9 III-Mettre en place un menu interactif (IVR) avec GoogleTTS :............................................................. 10 1-Un IVR : ........................................................................................................................................... 10 2-Installation de GoogleTTS : ............................................................................................................ 11 3-Les premiers mots dAsterisk : ....................................................................................................... 11 4-Mettre en place un IVR .................................................................................................................. 11 IV-Enregistrer la voix pour crer un IVR personnalis :......................................................................... 12 1-Enregistrement de voix : ................................................................................................................ 12 2-Cration de lIVR :........................................................................................................................... 12 V-Programmation et limitation des appels : ......................................................................................... 13 1-Appels automatiss vers les clients :.............................................................................................. 13 2-Limitations des appels : .................................................................................................................. 14 Conclusion : ........................................................................................................................................... 14 Bibliothque : ........................................................................................................................................ 14

Remerciements:
Tout dabord on tient remercier trs chaleureusement la socit DIALY qui nous a offert cette opportunit deffectuer notre stage au sein de son organisme, chose qui nous mne bien croire nos cadres suprieurs qui aident au dveloppement et au progrs de notre cher pays travers lencadrement des jeunes comptences des dirigeants du futur. On tient aussi remercier Mr. Zouheir LAKHDISSI le directeur de la socit pour son accueil trs chaleureux au sein de son quipe et pour avoir mis notre disposition tous les outils dont nous avions besoin pour le bon droulement de notre stage. On remercie trs chaleureusement aussi le corps administratif de lEcole Nationale des Sciences Appliques de Safi, et sans oublier dexprimer notre chre gratitude notre encadrant Mr. Abdellah ZYANE chef de la filire Rseaux et Tlcom lENSAs qui a mis notre disposition tout son savoir et son savoir-faire quil a accumul pendant des annes, et on le remercie aussi pour tout le temps prcieux quil nous a consacr.

Introduction :
Le prsent rapport a pour but dexpliquer les diffrents points concernant le projet de la CNSS intitul ALLO DAMANE qui a pour objectif principale de faciliter laccs linformation aux citoyens, en utilisant un serveur vocal interactive.

I-Installation d Asterisk :
Il y a deux faons dinstaller Asterisk sur une distribution base de Debian, la premire via le gestionnaire de paquet de Debian, la seconde en compilant directement la dernire version dAsterisk.

1-Prparation linstallation :
On commence par mettre jour notre distribution et installer les dpendances ncessaires la compilation dAsterisk.
apt-get update && apt-get upgrade apt-get install build-essential libxml2-dev libncurses5-dev linux-headers`uname -r` libsqlite3-dev libssl-dev

Puis on crer un dossier ou nous allons placer les sources dAsterisk dans /usr/src :
mkdir /usr/src/asterisk cd /usr/src/asterisk

2-Installation :
On tlcharge la version 10.7.0 dAsterisk et on linstalle :
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-10.7.0.tar.gz tar xvzf asterisk-10.7.0.tar.gz cd asterik-asterisk-10.7.0 ./configure make menuselect

La commande make menuselect va faire apparatre un cran qui va nous permettre de personnaliser notre installation dAsterisk. Nous allons en profiter pour installer les sons franais pour Asterisk au format -law. Dans Core Sound Package nous allons cocher la case CORE-SOUNDS-FR-ULAW avec la touche Espace puis appuyez sur Echap pour retourner lcran prcdent. Puis dans Music On Hold File Packages nous allons cocher MOH-OPSOUND-ULAW (et dcocher celui en WAV), appuyez sur Echap et enfin allez dans dans Extras Sound Packages et cochez EXTRA-SOUNDS-FR-ULAW.

Enfin nous allons appuyer sur Echap et une fois lcran principal une autre fois Echap et puis S pour sauvegarder les changements. Enfin on va taper les commandes suivantes pour terminer linstallation: Attention ! Pendant le make install il faut sassurer que notre serveur soit connect internet parce que celui ci va tlcharger les package de langue FR que nous avons slectionns.
make make install make samples make config

Aprs toutes ces commandes on peut lancer Asterisk laide de la commande suivant :
/etc/init.d/asterisk start

On peut vrifier le bon fonctionnement de notre serveur Asterisk avec la commande suivante qui sert afficher la console dAsterisk
asterisk cvvvvvvvvvvr

Si les lignes suivantes saffichent:


Asterisk 10.7.0, Copyright (C) 1999 - 2012 Digium, Inc. and others. Created by Mark Spencer 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 under certain conditions. Type 'core show license' for details. ====================================================================== == Parsing '/etc/asterisk/asterisk.conf': == Found == Parsing '/etc/asterisk/extconfig.conf': == Found Connected to Asterisk 10.7.0 currently running on Asterisk .......................

Cest que notre serveur Asterisk a dmarr et fonctionnel !

II-Configuration dAsterisk :
Pour configurer notre serveur Asterisk nous allons modifier les fichiers suivants:

Le fichier sip.conf : pour la configuration gnral dAsterisk Le fichier users.conf : pour la configuration des utilisateurs Le fichier extensions.conf : pour la configuration du Dialplan Ces fichiers se trouvent dans le dossier /etc/asterisk Nous allons commencer par diter le fichier sip.conf qui va nous permettre pour linstant de mettre les sons par dfauts en Franais. Rechercher la ligne :
;language=en

Et remplacer la par :
language=fr

A chaque fois quon modifie un fichier de conf il faut recharger ce fichier de configuration dans Asterisk. Dans la console dAsterisk il nous suffit de taper la commande : reload cette commande permet de recharger les fichiers de configurations dAsterik sans redmarrer le serveur.

1-Cration des utilisateurs :


La cration des utilisateurs se fait donc dans le fichier users.conf Voici un exemple de fichier users.conf avec deux utilisateurs Yassine MAACHI et Ayoub ZYANE avec comme numros respectifs le 6001 et le 6002.
[general] hasvoicemail = yes hassip = yes hasiax = yes callwaiting = yes threewaycalling = yes callwaitingcallerid = yes transfer = yes canpark = yes cancallforward = yes callreturn = yes callgroup = 1 pickupgroup = 1 nat = yes [6002] type=friend host=dynamic dtmfmode=rfc2833 disallow=all allow=ulaw fullname = Ayoub ZYANE username = azyane secret=secret context = work 6

[6001] type=friend host=dynamic dtmfmode=rfc2833 disallow=all allow=ulaw fullname = Yassine MAACHI username = ymaachi secret=secret context = work

Explication de ce que veut dire chaque ligne lors de la cration dun utilisateur: [6001] > Numro SIP type=friend > type dobjet SIP, friend = utilisateur host=dynamic > On peut se connecter a ce compte SIP a partir de nimporte quelle adresse IP dtmfmode=rfc2833 > type de rfc utilis disallow=all > Dsactivation de tous les codecs allow=ulaw > Activation du codec law fullname = Yassine MAACHI > Prnom et NOM de lutilisateur (ce qui sera afficher sur le tlphone lors dun appel) username = ymaachi > Nom dutilisateur secret=secret > Mot de passe du compte SIP context = work > Contexte (on verra a dans le fichier extensions.conf) Une fois le fichier users.conf enregistr on tape reload dans la console Asterisk, ensuite la commande sip show users. Les deux comptes utilisateurs que nous venons de crer devrait y apparaitre.
Asterisk*CLI> sip show users Username Secret Accountcode 6002 secret 6001 secret Def.Context work work ACL ForcerPort No Yes No Yes

On voit que quand mme crer un utilisateur est assez lourd, nous pouvons aussi utiliser des templates pour pouvoir crer des utilisateurs plus rapidement. Reprenons le fichier users.conf avec les mmes utilisateurs de crer mais cette fois-ci avec un Template:
[template](!) type=friend host=dynamic dtmfmode=rfc2833 disallow=all allow=ulaw context = work [6001](template) 7

fullname = Yassine MAACHI username = ymaachi secret=secret [6002](template) fullname = Ayoub ZYANE username = azyane secret=secret

Dans ce nouveau fichier de configuration nous avons cr un Template appel Template et ce Template est appel pour la cration des deux utilisateurs. Ce qui rduit la cration dun utilisateur quatre lignes au lieu de dix. Nos utilisateurs sont crer, mais ils nont pas encore la possibilit de sappeler. Nous allons maintenant diter le fichier extensions.conf qui permet de configurer le Dialplan.

2-Configuration du Dialplan :
Le Dialplan ou plan dappel est le fichier de configuration dAsterisk qui permet de configurer en gros: Que se passe-til si jappelle tel numros? Nous allons donc configurer Asterisk de tel sorte que lutilisateur 6001 puisse appeler le numro 6002. Voici donc pour exemple notre fichier extensions.conf
[general] static=yes writeprotect=no clearglobalvars=no [globals] CONSOLE=Console/dsp ; Console interface for demo IAXINFO=guest ; IAXtel username/password TRUNK=DAHDI/G2 ; Trunk interface TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0) [work] exten => _6XXX,1,Dial(SIP/${EXTEN},20) exten => _6XXX,2,Hangup()

Ce sont les trois dernires lignes qui vont nous intresser. Dans ces trois dernires lignes nous allons voir deux choses, les contextes et les extensions. [work] est le contexte cest une sorte de conteneur dans lequel les utilisateurs faisant partis de ce contexte pourrons communiquer entre eux. Lors de la cration de nos deux utilisateurs nous avons spcifi le contexte work. exten => : dclare lextension (on peut aussi simplement dire numros) _6XXX : Prend les extensions (ou numros) de 6000 a 6999 le _ permet dutiliser des regex
8

1 : Ordre de lextension Dial : application qui va tre utilis SIP: Protocol qui va tre utilis ${EXTEN} : variable de lextension compos, si on appelle le 6001 la variable ${EXTEN} prendra comme valeur 6001 20: temps dattente avant de passer a ltape suivante. Donc la ligne exten => _6XXX,1,Dial(SIP/${EXTEN},20) se traduit par: Quand on compose le numro (par exemple) 6001, on appelle le numro 6001 et si au bout de 20 secondes il ny a pas de rponses on passe la ligne du dessous. Dans le cas du numros 6001 la ligne devient comme ceci: exten=>6001,1,Dial(SIP/6001,20), mais lavantage de la ligne prcdente est quelle permet dappeler les numros de 6000 a 6999. La seconde ligne : exten => _6XXX,2,Hangup() permet de raccrocher si il ny a pas de rponses au bout des 20 secondes. Maintenant, on peut enregistrer notre fichier extensions.conf et faire un reload dans la console dAsterisk.

3-Teste de lappel :
Maintenant que nos deux utilisateurs sont cres et que nous avons configur les extensions du contexte work nous allons pourvoir effectuer un appel entre ces deux utilisateurs. On peut configurer un compte SIP partir de nimporte quel client SIP. Sous Windows et MacOSX on a X-LITE Sous Linux on a Ekiga Sous Android on a CSipSimple Dans ce test on a deux clients SIP. Un que nous allons configurer avec le compte de Yassine MAACHI et lautre avec le compte Ayoub ZYANE. Voici par exemple la configuration dun compte sous Ekiga sous Linux. Le Registar est ladresse IP ou hostname de notre serveur SIP

Figure 01 :Compte EKIGA des clients .

Test de lappelle :

Figure 02 :Appelle entrant du client 6001 .

III-Mettre en place un menu interactif (IVR) avec GoogleTTS :


1-Un IVR :
Un IVR (Interactive Voice Response) permet de guider les utilisateurs vers le service quils souhaitent joindre, on peut sen servir aussi pour simplement annoncer les horaires douvertures etc. La mise en place dun IVR va se faire en deux tapes, la premire il faut que nous apprenons Asterisk nous parler, la seconde est la cration de lIVR. Pour faire parler Asterisk, nous allons installer un moteur de synthse vocale (Text To Speech) et nous allons mettre en place celui de Google appel GoogleTTS.
10

2-Installation de GoogleTTS :
Tout dabord GoogleTTS besoins de quelques dpendances pour fonctionner:
apt-get install perl libwww-perl sox mpg123

Puis nous allons aller dans le dossier /var/lib/asterisk/agi-bin/ et y mettre le fichier googletts.agi qui est le script pour mettre en place la synthse vocale.
cd /var/lib/asterisk/agi-bin wget https://raw.github.com/zaf/asterisk-googletts/master/googletts.agi chmod +x googletts.agi

Et voila googletts est install, maintenant voyons comment le faire parler.

3-Les premiers mots dAsterisk :


La configuration des IVR se fait dans le fichier extensions.conf Ouvrez votre fichier extensions.conf et copiez les lignes suivantes la fin du fichier :
;Premier IVR

exten => 8000,1,Answer() exten => 8000,2,agi(googletts.agi,"Bienvenue chez Dialy Technologies !",fr) exten => 8000,3,Hangup()

Explications: exten => 8000,1,Answer() : On cre lextensions 8000 pour appeler lIVR et on utilise lapplication Answer() pour que a soit Asterisk qui rponde tant donn que ce nest pas un utilisateur que lon appele. exten => 8000,2,agi(googletts.agi, Bienvenue Dial technologies,fr) : Aprs avoir rpondu on utilise donc googletts pour dire la phrase suivante : Bienvenue Dial technologies, en spcifiant la langue de sortie (fr) exten => 8000,3,Hangup(): A la fin de la phrase Asterisk raccroche Maintenant faites un reload et appelez le 8000 partir de nimporte quel utilisateur pour entendre Asterisk parler.

4-Mettre en place un IVR


Maintenant nous allons mettre en place un vritable IVR qui va permettre dappeler nos utilisateurs Yassine et Ayoub.
;Second IVR ;Asterisk rpond exten => 8001,1,Answer() ;On met un timeout de 10 secondes pour le choix du destinatire exten => 8001,2,Set(TIMEOUT(response)=10) ;On annonce les diffrents choix exten => 8001,3,agi(googletts.agi,"Bienvenues chez DIALY Technologies",fr,any) exten => 8001,4,agi(googletts.agi,"Qui souhaitez vous joindre?",fr,any) exten => 8001,5,agi(googletts.agi,"Pour Yassine MAACHI tapez 1",fr,any) exten => 8001,6,agi(googletts.agi,"Pour Ayoub ZYANE tapez 2",fr,any)

11

exten => 8001,7,agi(googletts.agi,"Appuyez sur dise si vous souhaitez rcouter ce message",fr,any) ;On attend que l'utilisateur appuis sur une touche exten => 8001,8,WaitExten() ;Si l'utilisateur appuis sur 1 on va la priorit 1 du numro 6001 exten => 1,1,Goto(6001,1) ;Si l'utilisateur appuis sur 1 on va la priorit 1 du numro 6002 exten => 2,1,Goto(6002,1) ;Si l'utilisateur tape un numro compris entre 3 et 9 et # il retourne l'tape 3 de l'IVR exten => _[3-9#],1,Goto(8001,3) ;Si l'utilisateur ne fais rien il retourne l'tape 3 de l'IVR au bout de 10 secondes. exten => t,1,Goto(8001,3)

IV-Enregistrer la voix pour crer un IVR personnalis :


1-Enregistrement de voix :
Dans votre fichier extensions.conf dAsetrisk rajoutez les deux lignes suivantes dans votre contexte:
exten => _5XXX,1,Record(IVR-${EXTEN:1}:ulaw)

exten => _5XXX,2,Playback(IVR-${EXTEN:1})

Explication de ces lignes: La premire ligne cre une extension 5XXX qui permet dappeler les numros de 5000 5999. Si vous appelez par exemple le 5001, vous entendrez un BIP, aprs ce bip enregistrez votre message et terminez en appuyant sur #. Un fichier son au format ulaw sera alors cre dans le dossier /var/lib/asterisk/sounds avec comme nom IVR-001 (si vous appelez le 5002 le fichier sappellera IVR-002 etc..). La seconde ligne permet de jouer le son que vous venez denregistrer. Si vous souhaitez r-enregistrer un son rappelez juste le mme numro, lancien sera effac par la nouvelle version.

2-Cration de lIVR :
Nous avons vu dans la partie prcdente comment mettre en place un IVR avec googleTTS comme moteur de synthse vocale, nous allons donc crer le mme mais en jouant un son que nous allons enregistrer. Imaginons donc quon a un fichier son portant le nom IVR-001 avec le texte suivant: Bienvenus chez test.com! Qui souhaitez vous joindre?
12

Pour Yassine MAACHI tapez 1 Pour Ayoub ZYANE tapez 2 Appuyez sur dise si vous souhaitez rcouter ce message Voici donc comment se cre lIVR an jouant ce son:
;On cre un extension pour appeler l'IVR

exten => 8002,1,Goto(ivr-voice,s,1) ;Contexte ivr-voice [ivr-voice] exten => s,1,Answer() exten => s,2,Set(TIMEOUT(response)=10) exten => s,3,Background(IVR-001) exten => s,4,WaitExten() exten => 1,1,Goto(home,6001,1) exten => 2,1,Goto(home,6002,1) exten => _[3-9#],1,Goto(ivr-voice,s,3) exten => t,1,Goto(ivr-voice,s,3)

Comme lapplication Playback lapplication Background permet de jouer un son mais celle-ci permet aussi de donner lutilisateur la possibilit dappuyer sur une touche pendant que le son est jou.

V-Programmation et limitation des appels :


1-Appels automatiss vers les clients :
On cre un fichier 6001.call dans /var/spool/asterisk/tmp qui contient les paramtres suivants:
Channel: SIP/6001 ; le canal le protocole et le numro de l'utilisateur MaxRetries: 2 ; nombre d'essais maximale si l'utilisateur ne rpond pas RetryTime: 60 WaitTime: 30 Context: menu-general ; le contexte que le fichier 6001.call va excuter dans extension.conf Extension: s Priority: 1

Aprs la cration du fichier, on le dplace vers /var/spool/asterisk/outgoing/ une fois dans ce rpertoire l'appelle va tre lanc et le .call va tre supprim :
mv /var/spool/asterisk/tmp/6001.call /var/spool/asterisk/outgoing/

13

2-Limitations des appels :


Configuration de la limitation des appelles :
exten => 8000,1,Set(GROUP()=OUTBOUND_GROUP) exten => 8000,2,Noop(${GROUP_COUNT(OUTBOUND_GROUP)}) exten => 8000,3,GotoIf($[${GROUP_COUNT(OUTBOUND_GROUP)} > 8]?max) exten => 8000,4,Answer() exten => 8000,5,agi(googletts.agi,"Bienvenue Dialy Technologies 1",fr) exten => 8000,6,agi(googletts.agi,"Bienvenue Dialy Technologies 2",fr) exten => 8000,7,agi(googletts.agi,"Bienvenue Dialy Technologies 3",fr) exten => 8000,8,Hangup() exten => 8000,9(max),agi(googletts.agi,"Le service est occup veuillez appeler plu tard",fr) exten => 8000,10,Hangup()

Conclusion :
Ce projet sest rvl trs enrichissant dans la mesure o il a consist en une approche concrte du mtier dingnieur. En effet, la prise dinitiative, le respect des dlais et le travail en quipe seront des aspects essentiels de notre futur mtier. De plus, il nous a permis dappliquer nos connaissances sur la configuration des serveurs vocaux.

Bibliothque :
http://www.asterisk.org/ http://maniatux.fr/index.php?article14/configurer-un-serveur-asterisk http://doc.ubuntu-fr.org/asterisk http://jeyg.info/installation-et-configuration-dun-serveur-ipbx-asterisk/ http://leblogdupouaro.blogspot.com/2011/03/installation-et-configuration-dun.html https://wiki.asterisk.org/wiki/display/AST/Creating+a+Simple+IVR+Menu http://fr.slideshare.net/Agarik/scurit-asterisk-web http://www.siteduzero.com/forum/sujet/menu-vocal-sous-asterisk-96915 http://denisrosenkranz.com/tuto-asterisk-mettre-en-place-un-menu-interactif-ivr-avec-googletts/ http://www.fruitnotes.com/blogs/Limiting_Asterisk_calls_1101

14