Vous êtes sur la page 1sur 16

01/12/2015 Voix sur IP

By Honvault Mickaël

Mickaël Honvault
LYCEE VILGENIS
Section : BTS SIO 2ème année
Sujet : VOIP - Asterisk Lycée parc de Vilgénis
Pré-requis : Base sur linux

I. Introduction ..................................................................................................................................... 2
1.1. Présentation du projet ............................................................................................................ 2
1.2. Présentation Asterisk .............................................................................................................. 2
II. Installation ....................................................................................................................................... 2
III. Configuration ............................................................................................................................... 3
1.1. Configuration générale ............................................................................................................ 4
1.2. Créer un compte...................................................................................................................... 4
1.3. Configuration des appels ......................................................................................................... 5
1.4. Transfert d’appel ..................................................................................................................... 6
1.5. Mise en attente / Parking Call ................................................................................................. 7
1.6. Répondeur ............................................................................................................................... 7
1.6.1. Création de boite vocale ................................................................................................. 7
1.6.2. Supprimer le mot de passe .............................................................................................. 9
1.6.3. Envoi d’un email pour le répondeur................................................................................ 9
IV. Enregistrement d’appel ............................................................................................................. 11
1.1. Rappel sur les droits CNIL ...................................................................................................... 11
1.2. Installation de l’enregistrement ............................................................................................ 11
1.3. Mettre en place un IVR.......................................................................................................... 12
1.3.1. Installation ..................................................................................................................... 12
V. Routage vers plusieurs téléphone ................................................................................................ 14
VI. Elastix......................................................................................................................................... 14
VII. Mettre Asterisk en Français....................................................................................................... 14

1/15
Section : BTS SIO 2ème année
Sujet : VOIP - Asterisk Lycée parc de Vilgénis
Pré-requis : Base sur linux

I. Introduction
1.1. Présentation du projet
Vous êtes une équipe de deux personnes choisies pour l’implémentation d’un système de voix sur IP
permettant d’améliorer le centre d’appel également appelé Call Center.

Voici les objectifs pour le centre :

- Pouvoir faire communiquer deux personnes


- Laisser un message sur le répondeur d’un collaborateur
- Transférer un appel vers un autre collaborateur.
- Serveur vocal interactif

Pour cette mise en place votre supérieur vous demande de vous rapprocher de l’outil Asterisk, dont
la démarche d’installation et de configuration vous sont livrée.

1.2. Présentation Asterisk


Asterisk est un projet démarré en 1999 par Mark Spencer. Son objectif était alors de fournir à Linux un
commutateur téléphonique complet et totalement libre.
Aujourd’hui Asterisk est un PABX (Private Automatic Branch eXchange) d’une rare puissance et souplesse,
capable de gérer la téléphonie analogique, mais surtout, et c’est ce qui nous intéresse, la voix sur IP.

La VoIP sur Asterisk passe entre autre par la prise en charge d’un protocole standard, ouvert et très largement
utilisé, le SIP (Session Initiation Protocol).
SIP qui est un protocole très proche d’HTTP qui n’est pas limité à la seule voix mais qui prend aussi en charge la
vidéo et la messagerie instantanée.

D’un point de vue fonctionnalité, Asterisk permet tout ce que l’on peut attendre d’un PABX moderne:

La gestion des postes téléphonique sur IP locaux. Il peut s’agir de téléphones physiques mais aussi logiciels (ou
SoftPhone) comme Ekiga ou X-lite.

Boîtes vocales, transfert d’appel, mise en attente etc…

II. Installation
Pour l’installation de cette solution nous allons partir d’une Debian vierge, sur lequel vous aurez
installé package SSH pour vous simplifier la configuration de celui-ci.

Ensuite installer le paquet Asterisk via la commande suivante :

apt-get install asterisk

Code pays :

2/15
Section : BTS SIO 2ème année
Sujet : VOIP - Asterisk Lycée parc de Vilgénis
Pré-requis : Base sur linux

Puis pour installer les voix française :

root@debian:~# apt-get install asterisk-prompt-fr-proformatique

On considère 4 fichiers de configurations importants :

- sip.conf : configuration globale du serveur VoIP avec les utilisateurs


- extensions.conf : c’est là où nous allons écrire les « numéros de téléphones » de nos clients
mais aussi ceux pour la messagerie vocale, conférence, etc (C’est ici qu’on fera le DialPlan)
- voicemail.conf : configuration de la messagerie vocale.
- iax.conf : permet de relier 2 asterisk ensemble mais ne sera pas abordé dans ce TP.

III. Configuration
Faite une sauvegarde des fichiers sip.conf et de extensions.conf puis effacer le contenu de ces
fichiers afin de repartir depuis 0.

3/15
Section : BTS SIO 2ème année
Sujet : VOIP - Asterisk Lycée parc de Vilgénis
Pré-requis : Base sur linux

1.1. Configuration générale


Dans le fichier sip.conf :
[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
language=fr
musiconhold=default
allowtransfer=yes

Dans le fichier extensions.conf :

[general]
static=yes
writeprotect=no
clearglobalvars=no
[globals]
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=DAHDI/G2
TRUNKMSD=1

1.2. Créer un compte


Dans le fichier sip.conf :
[6001]
type=friend
host=dynamic
dtmfmode=rfc2833
disallow=all
allow=ulaw
fullname = Al Kollyck
username = akollyck
secret=mdp1
context = work

Je vais expliquer 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 –> Vous pouvez vous connecter a ce compte SIP a partir de n’importe quelle adresse IP
dtmfmode=rfc2833 –> type de rfc utilisé

4/15
Section : BTS SIO 2ème année
Sujet : VOIP - Asterisk Lycée parc de Vilgénis
Pré-requis : Base sur linux

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


allow=ulaw –> Activation du codec µlaw
fullname = Al Kollyck –> Prénom et NOM de l’utilisateur (ce qui sera afficher sur le téléphone lors d’un appel)
username = akollyck –> Nom d’utilisateur
secret=mdp1 –> Mot de passe du compte SIP
context = work –> Contexte (on verra ça dans le fichier extensions.conf)

Si maintenant je souhaite créer un second utilisateur

[6002]
type=friend
host=dynamic
dtmfmode=rfc2833
disallow=all
allow=ulaw
fullname = derard mensoif
username = gmensoif
secret=mdp2
context = work

1.3. Configuration des appels


Pour configurer un appel, il vous faudra accéder au fichier extensions.conf :

[work]
exten=>6001,1,Dial(sip/6001,10,Tt)
exten=>6001,2,Hangup

Analysons ensemble ce qui a été écrit :

[work]
Ce work représente un contexte qui ai liait avec le compte utilisateur (créer dans sip.conf), et chaque
utilisateur fait partie d’un contexte. (Tous les utilisateurs peuvent être associés au même contexte).

exten=>6001,1,Dial(sip/6001,10,Tt)

exten=>6001 => Lorsque le numéro 6001 est composé

Dial(SIP/6001 => Appeler l’utilisateur SIP 6001

,10, => Laisser sonner pendant 10s

Tt => Autoriser le transfert d’appel dans cette communication, on aurai également pu mettre « r »
pour générer une tonalité pour l’appelant (ring) ou encore « m » pour mettre une musique à la place
de la sonnerie standard.

,1, => Représente la priorité dans lequel exécuter les commandes. Le 1 représente la plus grande
priorité, c’est donc cette ligne qui sera exécuter en premier lors de la numérotation du numéro 6001

exten=>6001,2,Hangup

5/15
Section : BTS SIO 2ème année
Sujet : VOIP - Asterisk Lycée parc de Vilgénis
Pré-requis : Base sur linux

exten=>6001 => Lorsque le numéro 6001 est composé

,2, => Représente la priorité dans lequel exécuter les commandes. Le 2 signifiera qu’après que la
ligne avec la priorité une sera exécuter il passera à la ligne 2 (Donc après avoir tenté d’appeler
pendant 10s, on arrivera sur cette ligne)

,Hangup => Raccrocher

Récapitulatif :

Ligne 1 : on appel pendant 10s le numéro 6001 et si toute fois il ne décroche pas alors on passe à la
ligne 2.

Ligne 2 : on raccroche la ligne.

Si on projete notre infrastructure sur une infra avec plusieurs centaine de compte utilisateur ceci va
être vite ennuyant à écrire. Il existe il est possible de simplifier l’écriture :

exten => _6XXX,1,Dial(SIP/${EXTEN},20,Tt)


exten => _6XXX,2,Hangup()

Les X représentent un chiffre entre 0 et 9. Donc pour tous les numéros composer entre 6000 et 6999
on appel pendant 20s puis on raccroche.

1.4. Transfert d’appel


Dans le fichier features.conf se trouvant dans le repertoire /etc/asterisk, repérez les lignes suivantes :

;blindxfer => #1;


;atxfer => *2;

Ces ligne permettent de configurer une ou plusieurs touches pour transferer un appel.

Pour ma part j’ai dans ce fichier de conf mis comme touches ## pour le transfert aveugle et ** pour le
transfert supervisé, donc au final les lignes ressemblent à ceci:

blindxfer => ## ;
atxfer => ** ;

Maintenant, après avoir fait un reload d’Asterisk vous pouvez au cours d’un appel appuyer sur les touches ##
pour un transfert aveugle ou ** pour un transfert supervisé, une voix dira « Transfert » vous n’aurez qu’alors qu’à
taper le numéro de téléphone de la personne à qui vous souhaitez transférer l’appel.

6/15
Section : BTS SIO 2ème année
Sujet : VOIP - Asterisk Lycée parc de Vilgénis
Pré-requis : Base sur linux

1.5. Mise en attente / Parking Call


Le Parking Call est la possibilé de mettre en attente une personne sur un numéro de parking, c’est à dire que
vous transférez cette personne sur un numéro qui lui est attribué, dès lors il vous suffit de rappeler ce numéro à
partir de n’importe quel poste pour reprendre l’appel.

La configuration se fait aussi dans le fichier features.conf, ce sont les premières lignes du fichier.

parkext => 700 ; Numéro à appeller pour mettre une personne dans le parking
parkpos => 701-720 ; Numéros de places de parking disponibles
context => parkedcalls ; Contexte

Puis dans le fichier extensions.conf rajoutez dans votre contexte work la ligne suivante:
include => parkedcalls

Donc comme vous le voyez, si vous transférez un appel au numéro 700 votre interlocuteur sera mis en attente
avec un numéro situé entre 701 et 720, une voix vous dira quel numéro est attribué à votre interlocuteur.

Vous pouvez faire un transfert aveugle ou supervisé pour la mise en parking les deux fonctionnent pareil pour ce
cas.

1.6. Répondeur
1.6.1. Création de boite vocale
Nous allons donc ici créer une boite vocale pour Al Kollyck, Gérard Mensoif et pour Mickaël Honvault.

Les deux fichiers que nous allons éditer pour effectuer ceci sont les
fichiers voicemail.conf et extensions.conf se trouvant dans /etc/asterisk

Commençons par éditer le fichier voicemail.conf :


[general]
format=wav49|gsm|wav
maxsilence=10
silencethreshold=128
maxlogins=3
sendvoicemail=yes

[work]
6001 => 1234,Al Kollyck
6002 => 4567,Gérard Mensoif
6003 => 7890,Mickaël HONVAULT

Décortiquons les trois dernières lignes:


[work] : Contexte dans lequel se trouvent nos utilisateurs
6001 => : Numéro de l’utilisateur

7/15
Section : BTS SIO 2ème année
Sujet : VOIP - Asterisk Lycée parc de Vilgénis
Pré-requis : Base sur linux

1234 : Mot de passe pour accéder à la boite vocale


Al Kollyck: Prénom et nom de l’utilisateur

Maintenant nous allons éditer le fichier extensions.conf pour configurer deux choses:
 Le fait qu’au bout d’un certain temps Asterisk bascule sur la boite vocale de l’utilisateur si celui-ci ne répond
pas

 Création d’une extension pour créer le numéro qui servira à consulter la boite vocale.

Voici donc mon fichier extensions.conf modifié:

[work]
exten => _6XXX,1,Dial(SIP/${EXTEN},20,Tt)
exten => _6XXX,2,VoiceMail(${EXTEN}@work)

exten => 600,1,VoiceMailMain(${CALLERID(num)}@work)

Nous avons donc enlevé le Hangup, puisque désormais c’est l’appelant qui raccrochera après avoir laissé son
message.
Décortiquons la ligne: exten => _6XXX,2,VoiceMail(${EXTEN}@work)
Cette ligne permet donc de de basculer sur la boîte vocale de l’utilisateur appellé s’il n’y a pas de réponse au bout
de 20 secondes.
exten => : On déclare l’extensions
_6XXX : Toujours les numéros de 6000 à 6999
2 : Priorité
VoiceMail: On lance l’application Voicemail
${EXTEN}@work : On récupère le numéro mis en variable et on se connecte à la boite vocale associé du
contexte work (comme précisé dans le fichier voicemail.conf)

Décortiquons la ligne: exten => 600,1,VoiceMailMain(${CALLERID(num)}@work)


Cette ligne sert à mettre en place un numéro pour que nos utilisateurs puissent consulter leurs boîtes vocales.
exten => : On déclare l’extension
600 : On déclare le numéros 600 comme numéro de messagerie
1 : Priorité
VoiceMailMain : On appelle l’application VoiceMailMain
${CALLERID(num)} : On récupère le numéros de l’utilisateur qui appelle pour se connecter à sa boîte vocale
@work : on est toujours dans le contexte work

Il ne vous reste plus qu’à tester tout cela !

8/15
Section : BTS SIO 2ème année
Sujet : VOIP - Asterisk Lycée parc de Vilgénis
Pré-requis : Base sur linux

1.6.2. Supprimer le mot de passe


Lorsque que vous appellez le 600 le robot vous demandera le mot de passe de la boîte vocale spécifié dans le
fichier voicemail.conf (1234), si vous ne souhaitez pas que vos utilisateurs aient à taper un mot de passe vous
avez deux solutions:
Soit vous ne spécifiez pas de mot de passe dans le fichier voicemail.conf

[work]
6001 => ,Al Kollyck
6002 =>,Gérard Mensoif
6003 =>,Mickaël HONVAULT

Soit vous rajoutez l’option « s » dans la déclaration du numéro de boîte vocale qui se trouve dans le fichier
extensions.conf :

exten => 600,1,VoiceMailMain(${CALLERID(num)}@work,s)

1.6.3. Envoi d’un email pour le répondeur


Installer postfix :

apt-get install postfix

9/15
Section : BTS SIO 2ème année
Sujet : VOIP - Asterisk Lycée parc de Vilgénis
Pré-requis : Base sur linux

Réaliser un petit test avant de continuer :

root@debian:~# mail honvault.m@gmail.com -s "Test Asterisk"


Voici mon premier mail depuis mon serveur asterisk
.
Cc:
root@debian:~#

Vérification :

Il va falloir mettre à niveau votre fichier voicemail.conf :

[general]
format=wav49|gsm|wav
serveremail=maison-voicemail@test.com
attach=yes
maxsilence=10
silencethreshold=128
maxlogins=3
sendvoicemail=yes

;Corps du mail
emaildateformat=%A, %d %B %Y a %H:%M:%S
emailsubject=[ASTERIX] Nouveau message dans la boite ${VM_MAILBOX}
emailbody=Bonjour ${VM_NAME},\n\n\tLe numero ${VM_CALLERID} a tente de vous joindre
sans succes le ${VM_DATE}.\nCette personne vous a laisse un message de ${VM_DUR}
secondes. Vous pouvez le consulter en appelant votre boite vocale.\n\n\tBonne journee
!\n\n\t\t\t\t--Asterix\n
pagerfromstring=[Asterix]
pagersubject=Nouveau message vocal
pagerbody=Nouveau message de ${VM_DUR} secondes dans la boite ${VM_MAILBOX} laisse le
${VM_DATE} par ${VM_CALLERID}.

[work]

10/15
Section : BTS SIO 2ème année
Sujet : VOIP - Asterisk Lycée parc de Vilgénis
Pré-requis : Base sur linux

6001 => 1234,Al Kollyck,honvault.m@gmail.com


6002 => 4567,Gérard Mensoif
6003 => 7890,Mickaël HONVAULT

Si tout est correctement bien configuré vous allez recevoir un mail de cette forme si un utilisateur à laisser un
message sur votre répondeur:

IV. Enregistrement d’appel


Dans cette partie du TP, vous allez mettre en place l’enregistrement d’appel, ceci est assez critique
dans le sens ou en France, la législation est très restrictive. Il vous faut analyser l’article de loi
permettant de savoir si vous avez le droit ou non d’appliquer votre enregistrement dans votre
entreprise

1.1. Rappel sur les droits CNIL


http://www.cnil.fr/documentation/fiches-pratiques/fiche/article/lenregistrement-des-conversations-
telephoniques-sur-le-lieu-de-travail/

1.2. Installation de l’enregistrement


Le serveur asterisk permet d’enregistrer les appels à la demande de l’utilisateur. Pour cela il faut
activer cette fonction et attribuer une touche du téléphone à la fonction d’enregistrement. Pour
attribuer une touche il faut paramétrer le fichier features.conf. Ouvrez features.conf et cherchez la
ligne ou il y a écrit « One Touch Record ». Vous devriez trouver une ligne de écrite de cette façon :

;automon => *1 ; One Touch Record

Faite évoluer votre ligne pour obtenir :

automon => *# ; One Touch Record

11/15
Section : BTS SIO 2ème année
Sujet : VOIP - Asterisk Lycée parc de Vilgénis
Pré-requis : Base sur linux

On considère que la combinaison de touche *# lance l’enregistrement

Ensuite ajoutez la ligne suivante au début de la catégorie [globals] dans extensions.conf :

[globals]
DYNAMIC_FEATURES=>automon ; Activer l'enregistrement

Et il faut modifier les trois commandes Dial() comme cela :

exten => _6XXX,1,Dial(SIP/${EXTEN},20,TtwW)

L’option w indique que l’enregistrement peut être initié par l’appelé et W par l’appelant.
Pour tester, il suffit d’établir une communication et de presser la touche * sur un des téléphones.La
conversation a été enregistrée sur le serveur Asterisk dans le répertoire /var/spool/asterisk/monitor.

Réaliser un test d’enregistrement d’appel. Exemple :

1.3. Mettre en place 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 apprenions à
Asterisk à nous parler, la seconde est la création de l’IVR

1.3.1. Installation
apt-get install perl libwww-perl sox mpg123 libsox-fmt-all

Aller dans le répertoire /usr/share/asterisk/agi-bin et télécharger la librairie de Google :


wget https://raw.github.com/zaf/asterisk-googletts/master/googletts.agi
chmod +x googletts.agi

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

exten => 8000,1,Answer()


exten => 8000,2,agi(googletts.agi,"Par Toutatix je parle !",fr)
exten => 8000,3,Hangup()

12/15
Section : BTS SIO 2ème année
Sujet : VOIP - Asterisk Lycée parc de Vilgénis
Pré-requis : Base sur linux

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, »Par Toutatix je parle ! »,fr) : Après avoir répondu on utilise donc
googletts pour dire la phrase suivante : Par Toutatix je parle !, 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.

Maintenant si nous allons un peu plus loin avec la création d’un menu vocal :
;extensions des IVR
exten => 8000,1,Goto(first-ivr,s,1)
exten => 8001,1,Goto(second-ivr,s,1)

;Contexte first-ivr
[first-ivr]
;Premier IVR
exten => s,1,Answer()
exten => s,2,agi(googletts.agi,"Par Toutatix je parle !",fr)
exten => s,3,Hangup()

;Contexte second-ivr
[second-ivr]
;Second IVR
exten => s,1,Answer()
exten => s,2,Set(TIMEOUT(response)=10)
exten => s,3,agi(googletts.agi,"Bienvenus chez test point com!",fr,any)
exten => s,4,agi(googletts.agi,"Qui souhaitez vous joindre?",fr,any)
exten => s,5,agi(googletts.agi,"Pour Gérard Mensoif tapez 1",fr,any)
exten => s,6,agi(googletts.agi,"Pour Al Kollyck tapez 2",fr,any)
exten => s,7,agi(googletts.agi,"Pour Mickael Honvault tapez 3",fr,any)
exten => s,8,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 => s,9,WaitExten()

;Si l'utilisateur appuis sur 1 on va à la priorité 1 du numéro 6001


exten => 1,1,Goto(work,6001,1)
;Si l'utilisateur appuis sur 1 on va à la priorité 1 du numéro 6002
exten => 2,1,Goto(work,6002,1)
exten => 2,1,Goto(work,6003,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(second-ivr,s,3)
exten => t,1,Goto(second-ivr,s,3)

13/15
Section : BTS SIO 2ème année
Sujet : VOIP - Asterisk Lycée parc de Vilgénis
Pré-requis : Base sur linux

V. Routage vers plusieurs téléphone


L’exemple suivant montre comment faire sonner deux téléphones en même temps. Quand on
compose le 206, les téléphones de Mickaël et de Gérard sonnent.

exten => 206,1,Dial(SIP/6002&SIP/6003,20,TtwW)

VI. Elastix
Désormais installer la distribution Elastix et réaliser la même chose mais avec une interface
graphique et réaliser votre propre menu avec votre voix.

VII. Mettre Asterisk en Français


Passé les sons d’Asterisk en français dans le fichier sip.conf dans la partie [general] ajouter :

language=fr

14/15
Section : BTS SIO 2ème année
Sujet : VOIP - Asterisk Lycée parc de Vilgénis
Pré-requis : Base sur linux

Annexe

Répondeur + mail :

http://denisrosenkranz.com/tutomise-en-place-des-boites-vocales-dans-asterisk-et-configuration-
de-lenvoi-de-mail/

Les options Dial :

http://wikimemoires.com/2011/03/configuration-canaux-sip/

Configuration générale :

http://denisrosenkranz.com/tuto-installer-et-configurer-asterisk-sous-debian-6-et-ubuntu/

Menu interactif :

http://denisrosenkranz.com/tuto-asterisk-mettre-en-place-un-menu-interactif-ivr-avec-googletts/

Routage vers plusieurs téléphones :

http://www.lululaberlu.com/public/VOIP/01_TP_Asterisk_Base.pdf

15/15

Vous aimerez peut-être aussi