Voix sur IP - WordPress.com

Transcription

Voix sur IP - WordPress.com
01/12/2015
Voix sur IP
By Honvault Mickaël
Mickaël Honvault
LYCEE VILGENIS
Section : BTS SIO 2ème année
Pré-requis : Base sur linux
I.
Sujet : VOIP - Asterisk
Lycée parc de Vilgénis
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
Pré-requis : Base sur linux
Sujet : VOIP - Asterisk
Lycée parc de Vilgénis
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
Pré-requis : Base sur linux
Sujet : VOIP - Asterisk
Lycée parc de Vilgénis
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
Pré-requis : Base sur linux
Sujet : VOIP - Asterisk
Lycée parc de Vilgénis
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
Pré-requis : Base sur linux
Sujet : VOIP - Asterisk
Lycée parc de Vilgénis
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
Pré-requis : Base sur linux
Sujet : VOIP - Asterisk
Lycée parc de Vilgénis
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
Pré-requis : Base sur linux
Sujet : VOIP - Asterisk
Lycée parc de Vilgénis
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
Pré-requis : Base sur linux
Sujet : VOIP - Asterisk
Lycée parc de Vilgénis
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
Pré-requis : Base sur linux
Sujet : VOIP - Asterisk
Lycée parc de Vilgénis
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
Pré-requis : Base sur linux
Sujet : VOIP - Asterisk
Lycée parc de Vilgénis
Réaliser un petit test avant de continuer :
root@debian:~# mail [email protected] -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
[email protected]
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
Pré-requis : Base sur linux
Sujet : VOIP - Asterisk
Lycée parc de Vilgénis
6001 => 1234,Al Kollyck,[email protected]
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-conversationstelephoniques-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
Pré-requis : Base sur linux
Sujet : VOIP - Asterisk
Lycée parc de Vilgénis
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
Pré-requis : Base sur linux
Sujet : VOIP - Asterisk
Lycée parc de Vilgénis
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
Pré-requis : Base sur linux
Sujet : VOIP - Asterisk
Lycée parc de Vilgénis
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
Pré-requis : Base sur linux
Sujet : VOIP - Asterisk
Lycée parc de Vilgénis
Annexe
Répondeur + mail :
http://denisrosenkranz.com/tutomise-en-place-des-boites-vocales-dans-asterisk-et-configurationde-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

Documents pareils