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