Asterisk - Copie2

14
DIAL TECHNOLOGIES Document pratique Asterisk sous Debian 01/07/2013 Réallisé par : MAACHI Yassine ZYANE Ayoub

description

une mise en oeurve du serveur asterisk

Transcript of Asterisk - Copie2

DIAL TECHNOLOGIES

Document pratique Asterisk sous Debian

01/07/2013

Réallisé par :

MAACHI Yassine

ZYANE Ayoub

2

Sommaire

Remerciements: ...................................................................................................................................... 3

Introduction : ........................................................................................................................................... 4

I-Installation d’ Asterisk : ......................................................................................................................... 4

1-Préparation à l’installation : ............................................................................................................. 4

2-Installation : ...................................................................................................................................... 4

II-Configuration d’Asterisk : ..................................................................................................................... 5

1-Création des utilisateurs : ................................................................................................................ 6

2-Configuration du Dialplan : .............................................................................................................. 8

3-Teste de l’appel : .............................................................................................................................. 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 d’Asterisk : ....................................................................................................... 11

4-Mettre en place un IVR .................................................................................................................. 11

IV-Enregistrer la voix pour créer un IVR personnalisé : ......................................................................... 12

1-Enregistrement de voix : ................................................................................................................ 12

2-Création de l’IVR : ........................................................................................................................... 12

V-Programmation et limitation des appels : ......................................................................................... 13

1-Appels automatisés vers les clients :.............................................................................................. 13

2-Limitations des appels : .................................................................................................................. 14

Conclusion : ........................................................................................................................................... 14

Bibliothèque : ........................................................................................................................................ 14

3

Remerciements:

Tout d’abord on tient à remercier très chaleureusement la société DIALY qui nous a offert

cette opportunité d’effectuer notre stage au sein de son organisme, chose qui nous mène à

bien croire à nos cadres supérieurs qui aident au développement et au progrès de notre cher

pays à travers l’encadrement des jeunes compétences des dirigeants du futur.

On tient aussi à remercier Mr. Zouheir LAKHDISSI le directeur de la société pour son accueil

très chaleureux au sein de son équipe et pour avoir mis à notre disposition tous les outils dont

nous avions besoin pour le bon déroulement de notre stage.

On remercie très chaleureusement aussi le corps administratif de l’Ecole Nationale des

Sciences Appliquées de Safi, et sans oublier d’exprimer notre chère gratitude à notre

encadrant Mr. Abdellah ZYANE chef de la filière Réseaux et Télécom à l’ENSAs qui a mis à

notre disposition tout son savoir et son savoir-faire qu’il a accumulé pendant des années, et on

le remercie aussi pour tout le temps précieux qu’il nous a consacré.

4

Introduction :

Le présent rapport a pour but d’expliquer les différents points concernant le projet de la CNSS

intitulé ALLO DAMANE qui a pour objectif principale de faciliter l’accès à l’information aux

citoyens, en utilisant un serveur vocal interactive.

I-Installation d’ Asterisk :

Il y a deux façons d’installer Asterisk sur une distribution à base de Debian, la première via le

gestionnaire de paquet de Debian, la seconde en compilant directement la dernière

version d’Asterisk.

1-Préparation à l’installation :

On commence par mettre à jour notre distribution et installer les dépendances nécessaires à la

compilation d’Asterisk.

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 créer un dossier ou nous allons placer les sources d’Asterisk dans /usr/src :

mkdir /usr/src/asterisk

cd /usr/src/asterisk

2-Installation :

On télécharge la version 10.7.0 d’Asterisk et on l’installe :

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 apparaître un écran qui va nous permettre de

personnaliser notre installation d’Asterisk.

Nous allons en profiter pour installer les sons français 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 à l’écran précédent.

Puis dans Music On Hold File Packages nous allons cocher MOH-OPSOUND-ULAW (et

décocher celui en WAV), appuyez sur Echap et enfin allez dans dans Extras Sound

Packages et cochez EXTRA-SOUNDS-FR-ULAW.

5

Enfin nous allons appuyer sur Echap et une fois à l’écran principal une autre fois Echap et

puis S pour sauvegarder les changements.

Enfin on va taper les commandes suivantes pour terminer l’installation:

Attention ! Pendant le make install il faut s’assurer que notre serveur soit connecté à

internet parce que celui ci va télécharger les package de langue FR que nous avons

sélectionnés.

make make install make samples make config

Après toutes ces commandes on peut lancer Asterisk à l’aide de la commande suivant :

/etc/init.d/asterisk start

On peut vérifier le bon fonctionnement de notre serveur Asterisk avec la commande suivante

qui sert à afficher la console d’Asterisk

asterisk –cvvvvvvvvvvr

Si les lignes suivantes s’affichent:

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

C’est que notre serveur Asterisk a démarré et fonctionnel !

II-Configuration d’Asterisk :

Pour configurer notre serveur Asterisk nous allons modifier les fichiers suivants:

6

Le fichier sip.conf : pour la configuration général d’Asterisk

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 l’instant de

mettre les sons par défauts en Français.

Rechercher la ligne :

;language=en

Et remplacer la par :

language=fr

A chaque fois qu’on modifie un fichier de conf il faut recharger ce fichier de configuration

dans Asterisk.

Dans la console d’Asterisk il nous suffit de taper la commande : reload cette commande

permet de recharger les fichiers de configurations d’Asterik sans redémarrer le serveur.

1-Création des utilisateurs :

La création 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 numéros 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

7

[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 création d’un utilisateur:

[6001] –> Numéro SIP

type=friend –> type d’objet SIP, friend = utilisateur

host=dynamic –> On peut se connecter a ce compte SIP a partir de n’importe quelle adresse

IP

dtmfmode=rfc2833 –> type de rfc utilisé

disallow=all –> Désactivation de tous les codecs

allow=ulaw –> Activation du codec µlaw

fullname = Yassine MAACHI –> Prénom et NOM de l’utilisateur (ce qui sera afficher sur le

téléphone lors d’un appel)

username = ymaachi –> Nom d’utilisateur

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 créer devrait y apparaitre.

Asterisk*CLI> sip show users Username Secret Accountcode Def.Context ACL ForcerPort 6002 secret work No Yes 6001 secret work No Yes

On voit que quand même créer un utilisateur est assez lourd, nous pouvons aussi utiliser des

templates pour pouvoir créer des utilisateurs plus rapidement.

Reprenons le fichier users.conf avec les mêmes utilisateurs de créer mais cette fois-ci avec un

Template:

[template](!) type=friend host=dynamic dtmfmode=rfc2833 disallow=all allow=ulaw context = work [6001](template)

8

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 création des deux utilisateurs. Ce qui réduit la création d’un

utilisateur à quatre lignes au lieu de dix.

Nos utilisateurs sont créer, mais ils n’ont pas encore la possibilité de s’appeler.

Nous allons maintenant éditer le fichier extensions.conf qui permet de configurer le Dialplan.

2-Configuration du Dialplan :

Le Dialplan ou plan d’appel est le fichier de configuration d’Asterisk qui permet de

configurer en gros: « Que se passe-t’il si j’appelle tel numéros? »

Nous allons donc configurer Asterisk de tel sorte que l’utilisateur 6001 puisse appeler le

numéro 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 dernières lignes qui vont nous intéresser.

Dans ces trois dernières lignes nous allons voir deux choses, les contextes et les extensions.

[work] est le contexte c’est une sorte de conteneur dans lequel les utilisateurs faisant partis de

ce contexte pourrons communiquer entre eux.

Lors de la création de nos deux utilisateurs nous avons spécifié le contexte work.

exten => : déclare l’extension (on peut aussi simplement dire numéros)

_6XXX : Prend les extensions (ou numéros) de 6000 a 6999 le « _ » permet d’utiliser des

regex

9

1 : Ordre de l’extension

Dial : application qui va être utilisé

SIP: Protocol qui va être utilisé

${EXTEN} : variable de l’extension composé, si on appelle le 6001 la variable ${EXTEN}

prendra comme valeur 6001

20: temps d’attente avant de passer a l’étape suivante.

Donc la ligne exten => _6XXX,1,Dial(SIP/${EXTEN},20) se traduit par:

Quand on compose le numéro (par exemple) 6001, on appelle le numéro 6001 et si au bout de

20 secondes il n’y a pas de réponses on passe à la ligne du dessous.

Dans le cas du numéros 6001 la ligne devient comme ceci:

exten=>6001,1,Dial(SIP/6001,20), mais l’avantage de la ligne précédente est qu’elle permet

d’appeler les numéros de 6000 a 6999.

La seconde ligne : exten => _6XXX,2,Hangup() permet de raccrocher si il n’y a pas de

réponses au bout des 20 secondes.

Maintenant, on peut enregistrer notre fichier extensions.conf et faire un reload dans la console

d’Asterisk.

3-Teste de l’appel :

Maintenant que nos deux utilisateurs sont crées 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 n’importe 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 l’autre avec le compte

Ayoub ZYANE.

Voici par exemple la configuration d’un compte sous Ekiga sous Linux.

Le Registar est l’adresse IP ou hostname de notre serveur SIP

10

Figure 01 :Compte EKIGA des clients .

Test de l’appelle :

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 qu’ils

souhaitent joindre, on peut s’en servir aussi pour simplement annoncer les horaires

d’ouvertures etc.

La mise en place d’un IVR va se faire en deux étapes, la première il faut que nous apprenons

à Asterisk à nous parler, la seconde est la création de l’IVR.

Pour faire parler Asterisk, nous allons installer un moteur de synthèse vocale (Text To

Speech) et nous allons mettre en place celui de Google appelé GoogleTTS.

11

2-Installation de GoogleTTS :

Tout d’abord GoogleTTS à besoins de quelques dépendances 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 synthèse 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 d’Asterisk :

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 crée l’extensions 8000 pour appeler l’IVR et on utilise

l’application Answer() pour que ça soit Asterisk qui réponde étant donné que ce n’est pas un

utilisateur que l’on appele.

exten => 8000,2,agi(googletts.agi, « Bienvenue à Dial technologies»,fr) : Après avoir

répondu on utilise donc googletts pour dire la phrase suivante : Bienvenue à Dial

technologies, en spécifiant 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 n’importe quel utilisateur pour

entendre Asterisk parler.

4-Mettre en place un IVR

Maintenant nous allons mettre en place un véritable IVR qui va permettre d’appeler nos

utilisateurs Yassine et Ayoub.

;Second IVR ;Asterisk répond 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 différents 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)

12

exten => 8001,7,agi(googletts.agi,"Appuyez sur dièse si vous souhaitez réécouter 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 numéro 6001 exten => 1,1,Goto(6001,1) ;Si l'utilisateur appuis sur 1 on va à la priorité 1 du numéro 6002 exten => 2,1,Goto(6002,1) ;Si l'utilisateur tape un numéro 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 créer un IVR

personnalisé :

1-Enregistrement de voix :

Dans votre fichier extensions.conf d’Asetrisk 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 première ligne crée une extension 5XXX qui permet d’appeler les numéros de 5000 à

5999.

Si vous appelez par exemple le 5001, vous entendrez un BIP, après ce bip enregistrez votre

message et terminez en appuyant sur #.

Un fichier son au format ulaw sera alors crée dans le dossier /var/lib/asterisk/sounds avec

comme nom IVR-001 (si vous appelez le 5002 le fichier s’appellera IVR-002 etc..).

La seconde ligne permet de jouer le son que vous venez d’enregistrer.

Si vous souhaitez ré-enregistrer un son rappelez juste le même numéro, l’ancien sera effacé

par la nouvelle version.

2-Création de l’IVR :

Nous avons vu dans la partie précédente comment mettre en place un IVR avec googleTTS

comme moteur de synthèse vocale, nous allons donc créer le même mais en jouant un son que

nous allons enregistrer.

Imaginons donc qu’on a un fichier son portant le nom IVR-001 avec le texte suivant:

« Bienvenus chez test.com!

Qui souhaitez vous joindre?

13

Pour Yassine MAACHI tapez 1

Pour Ayoub ZYANE tapez 2

Appuyez sur dièse si vous souhaitez réécouter ce message »

Voici donc comment se crée l’IVR an jouant ce son:

;On crée 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 l’application « Playback » l’application « Background » permet de jouer un son

mais celle-ci permet aussi de donner à l’utilisateur la possibilité d’appuyer sur une

touche pendant que le son est joué.

V-Programmation et limitation des appels :

1-Appels automatisés vers les clients :

On crée un fichier 6001.call dans /var/spool/asterisk/tmp qui contient les paramètres suivants:

Channel: SIP/6001 ; le canal le protocole et le numéro de l'utilisateur

MaxRetries: 2 ; nombre d'essais maximale si l'utilisateur ne répond pas

RetryTime: 60

WaitTime: 30

Context: menu-general ; le contexte que le fichier 6001.call va

exécuter dans extension.conf

Extension: s

Priority: 1

Après la création du fichier, on le déplace vers /var/spool/asterisk/outgoing/ une fois dans ce

répertoire l'appelle va être lancé et le .call va être supprimé :

mv /var/spool/asterisk/tmp/6001.call /var/spool/asterisk/outgoing/

14

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 s’est révélé très enrichissant dans la mesure où il a consisté en une approche

concrète du métier d’ingénieur. En effet, la prise d’initiative, le respect des délais et le travail

en équipe seront des aspects essentiels de notre futur métier.

De plus, il nous a permis d’appliquer nos connaissances sur la configuration des serveurs

vocaux.

Bibliothèque :

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