Les IVR – Interactive Voice Response ou Standard Automatiques sont très pratiques pour une entreprise.
Le principe est simple et très connu : après la lecture d’un message préenregistré, l’appelant peut faire un choix au clavier.
Cela permet par exemple de mettre l’appelant en relation avec la bonne personne.
Au travers de cet article, nous verrons comment mettre en place un IVR.
1) Fonctionnement d’un IVR
Comme dit précédemment, un IVR est un standard automatique.
Ils sont très utilisés pour les standards, les calls center, etc…
Voici un exemple de fonctionnement d’un IVR :
- L’appelant compose le numéro de l’IVR
- L’appel est décroché par un robot
- Un message est joué (ex : pour joindre Marc Aubert taper 1, pour joindre Alain Aldric taper 2, etc…)
- L’appelant fait son choix et appuie sur la touche correspondante au clavier
- Si le choix est valide, Asterisk redirige l’appelant vers le bon utilisateur
Bien entendu, nous pouvons appliquer le même procédé pour rediriger l’utilisateur vers des services (ex : taper 1 pour l’accueil, 2 pour le SAV, 3 pour le service commercial, etc…).
Chaque service peut ensuite faire référence à un Ring Group.
Les possibilités sont multiples.
Pour la configuration, comme toujours elle se fera dans le DialPlan, c’est à dire dans le fichier extensions.conf.
Pour ce qui est du message à diffuser, il existe deux solutions :
- Jouer un fichier audio que l’on a enregistré
- Faire de la synthèse vocale
Bien entendu, la première option est la meilleure.
Tout simplement car le rendu sera meilleur est plus professionnel.
Néanmoins, la synthèse vocale est très simple à mettre en place (hormis la première configuration).
Il suffira simplement de taper le message dans le fichier de configuration, et Asterisk se chargera d’en faire un message audio.
Ce peut donc être idéal pour dépanner.
De plus, c’est une bonne solution pour tester la mise en place d’un IVR.
Nous commencerons par mettre en place un IVR simple, puis nous passerons à la synthèse vocale.
2) Configuration IVR
Plutôt qu’un long discours, voyons tout de suite la configuration de l’IVR.
Comme mentionné auparavant, la configuration se fait dans le fichier extensions.conf.
La bonne pratique est de créer un contexte spécifique pour l’VR.
Mais il est tout à fait possible d’intégrer l’IVR dans un contexte déjà existent.
Tout d’abord, il faut créer une extension correspondant à l’IVR, dans le contexte qui devra permettre de joindre l’IVR.
Afin de rendre l’IVR accessible par tout le monde, vous pouvez créer un contexte global, que vous inclurez dans tous les autres contextes.
[global] exten => 900,1,Goto(ivr_1,s,1) [dept_1] include => global
Ensuite, créer un contexte pour l’IVR.
[ivr_1] exten => s,1,Answer() exten => s,2,Set(TIMEOUT(response)=10) ; Temps max pour choisir une option exten => s,3,Playback(custom/IVR1-message) ; Fichier audio à jouer exten => s,4,WaitExten() ; Lecture du choix exten => 1,1,Dial(SIP/100) ; Si le choix est '1' appeller le 100 exten => 2,1,Dial(SIP/101) ; Si le choix est '2' appeller le 101 exten => 3,1,Dial(SIP/200) ; Si le choix est '3' appeller le 200 exten => _[04-9*#],1,Goto(ivr_1,s,1) ; Pour tout autre choix, renvoyer au début exten => t,1,Goto(ivr_1,s,3)
Le fichier audio à jouer sera cherché dans /var/lib/asterisk/sounds/
L’idéal est d’y créer un nouveau dossier contenant les fichiers audio « spéciaux ».
mkdir /var/lib/asterisk/sounds/custom
Dans ce dossier, il faudra uploader le fichier audio du message d’accueil.
Après un redémarrage, l’IVR devrait fonctionner.
Il est possible d’améliorer l’IVR de plusieurs manières.
Premièrement, pour rendre l’IVR plus réactif, nous pouvons autoriser l’utilisateur à interrompre le message audio en choisissant une option avant la fin du message (utile pour les utilisateurs qui connaissent l’IVR).
Au lieu d’utiliser l’application Playback, il faut alors utiliser l’action Background.
exten => s,3,Background(custom/IVR1-message)
Ensuite, en cas de choix invalide, nous pouvons retourner un message à l’utilisateur, avant de relancer le message d’accueil.
La détection d’entrée invalide devient alors :
exten => _[04-9*#],1,Playback(custom/IVR1-invalide) exten => _[04-9*#],2,Goto(ivr_1,s,1)
Aussi, vous aurez peut être remarqué que lors-ce qu’un utilisateur ne répond pas, l’appelant ne tombe pas sur la messagerie.
Vous pouvez modifier la configuration pour prendre cela en compte.
Le renvoie vers les utilisateurs devient alors :
exten => 1,1,Goto(dept_1,100,1) exten => 2,1,Goto(dept_1,101,1) exten => 3,1,Goto(dept_2,200,1)
De cette manière, l’IVR utilise le comportement défini dans les contextes associés aux utilisateurs.
Bien entendu, vous pouvez faire pointer l’IVR vers un Ring Group.
La configuration finale de l’IVR est donc la suivante :
[global] exten => 900,1,Goto(ivr_1,s,1) [ivr_1] exten => s,1,Answer() exten => s,2,Set(TIMEOUT(response)=10) exten => s,3,Background(custom/IVR1-message) exten => s,4,WaitExten() exten => 1,1,Goto(dept_1,100,1) exten => 2,1,Goto(dept_1,101,1) exten => 3,1,Goto(dept_2,200,1) exten => _[04-9*#],1,Playback(custom/IVR1-invalide) exten => _[04-9*#],2,Goto(ivr_1,s,1) exten => t,1,Goto(ivr_1,s,3)
L’IVR est maintenant bien plus agréable à utiliser.
Vous noterez que l’IVR est utilisable pas plusieurs personnes en même temps.
3) IVR avec synthèse vocale
L’idée ici est de s’affranchir de l’enregistrement d’un message audio.
Même si l’enregistrement d’un message est bien souvent préférable, la synthèse vocale peut parfois se révéler utile.
Le fonctionnement de l’IVR va rester le même. Nous allons simplement remplacer le fichier audio par la synthèse vocale.
Pour cela, nous allons faire appel au module TTS – Text To Speech de Google.
Il sera nécessaire que le serveur Asterisk possède une connexion internet, car il devra faire appel au service Google pour la synthèse vocale.
La première étape est d’installer les packages nécessaires.
apt-get install perl libwww-perl sox mpg123
Nous ajoutons donc le langage Perl, la librairie World Wide Web de Perl, Sox pour la conversion audio, et Mpg123 pour la lecture et la conversion audio.
Il nous faut aussi récupérer le module TTS de Google pour Asterisk :
wget -O GoogleTTS.tar.gz http://github.com/zaf/asterisk-googletts/tarball/master --no-check-certificate tar –xvf GoogleTTS.tar cd zaf-asterisk-googletts-5566ddc (à adapter selon le version) cp googletts.agi /var/lib/asterisk/agi-bin/
La suite est maintenant très simple.
Il nous faut aller dans le fichier extensions.conf, et y entrer les messages à synthétiser.
Voici un exemple :
[ivr_1] exten => s,1,Answer() exten => s,2,Set(TIMEOUT(response)=10) exten => s,3,agi(googletts.agi,"Bonjour et bienvenue chez NetworkLab !",fr,any) exten => s,4,agi(googletts.agi,"Pour joindre Marc Aubert, taper 1.",fr,any) exten => s,5,agi(googletts.agi,"Pour joindre Alain Aldric, taper 2.",fr,any) exten => s,6,agi(googletts.agi,"Pour joindre Leon Morgan, taper 3.",fr,any) exten => s,7,WaitExten() exten => 1,1,Goto(dept_1,100,1) exten => 2,1,Goto(dept_1,101,1) exten => 3,1,Goto(dept_2,200,1) exten => _[04-9*#],1,agi(googletts.agi,"Entrée invalide",fr,any) exten => _[04-9*#],2,Goto(ivr_1,s,1) exten => t,1,Goto(ivr_1,s,3)
Le TTS permet aussi de créer des messages à la volé.
Par exemple, si l’IVR n’est utilisé qu’en interne, nous pouvons saluer l’appelant avec son non.
Le premier message devient alors :
exten => s,3,agi(googletts.agi,"Bonjour "+${CALLERID(name)}+" et bienvenue chez NetworkLab !",fr,any)
Bien entendu, si l’appelant est externe, nous ne connaitrons pas son nom.
Les possibilités sont nombreuses. Libre à vous d’imaginer des scénarios ou le TTS pourrait être utile.
Il existe aussi d’autres solutions de TTS, comme par exemple Swift.
Mais cette dernière nécessite d’acheter des packs de langues.
La solution de Google reste la plus simple et la plus économique.
Bonjour
Merci pour votre tuto.
J’ai cependant un problème.
En contactant l’IVR, j’entends plus la voix, cependant, les correspondances des touches fonctionnent, à savoir en appuyant sur 1 je tombe bien sur le numéro configuré.
Pourriez-vous m’aider svp ?
Bonjour,
Sur quelle solution êtes-vous partis ? Utilisation d’un fichier audio, ou TTS ?
Si vous utilisez le TTS, assurez-vous qu’Asterisk est toujours connecté à internet, et que les packages nécessaires ont été installés. Vérifiez aussi les droits en exécution sur le fichier googletts.agi.
Si le problème est survenu suite à des modifications, certainement qu’il y a une erreur dans la configuration.
Revérifiez votre configuration dans extensions.conf.
Si vous utilisez un fichier audio, est-ce que celui ci existe ? Le chemin dans la configuration est-il correcte ?
Faites moi savoir ce que cela donne.
Bonjour,
J’ai suivi la procédure d’installation avec attention, cependant, j’ai le message suivant qui apparait : No application ‘agi’ for extension (phones,8000, 2)
Faut-il configurer d’autres fichiers ?
Le problème semble venir du module TTS.
Commencez par vous assurer que vous avez bien suivi la procédure d’installation du module.
Bonsoir mes amis,
-j’aimerais savoir pourquoi on choisit 8000 pour le numero du serveur asterisk, est ce qu’on ne peut pas choisir un autre.?
-Dans le cadre d’un centre appel, comment cela va fonctionner avec le logiciel ACD sur le serveur asterisk?.et la configuration?
-est ce qu’il de moteur de synthèse vocale (Text To Speech) offline?
Je vous remercie deja de vos reponse.
je veux parler de IVR
Bonjour,
Qu’entendez vous par numéro 8000 ?
Pour l’ACD, je ne peux pas vous aider. En revanche, vous trouverez des explications dans la documentation d’Asterisk : http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html-chunk/asterisk-ACD.html
Pour le TTS Offline, vous pouvez vous renseigner sur Espeak.
Bonsoir,
je vous remerci de votre reponse, concernant le 8000, vous pouvez le verifier sur le lien
http://denisrosenkranz.com/tuto-asterisk-mettre-en-place-un-menu-interactif-ivr-avec-googletts/
Cordialement
Dans le lien que vous m’avez donné, le numéro 8000 est le numéro à composer pour appeler l’IVR. Dans mon article j’ai choisi le numéro 900. Vous pouvez choisir un autre numéro si vous souhaitez.
Bonjour, merci pour ce Tuto. c’est très riche.
je suis en stage en ce moment et le projet qui m’a été soumis est de réaliser un IVR, mais dans le cadre d’orienter une personne dans les locaux d’une structure.
j’avoue que c’est très intéressant mais aussi j’ai du mal à m’en sortir surtout que je n’est vraiment pas une grande pratique dans le domaine.
je serai honoré d’avoir un bref Tuto la déçu!
merci, Cordialement
Bonjour,
Par chance vous êtes tombés au bon endroit. Le présent article explique le fonctionnement des IVR
Bonjour
vous utilisez qu elle type d extension ? generic sip device ?
merci
Bonjour,
Oui, j’utilise les paramètres génériques
Bjr j ai bien suivi le tuto mais le probleme c est que j entends rien pas de son ni de voix. est il possible d entendre la voix sans me connecter sur internet. je suis sur un reseau local.
Bonjour,
Merci beaucoup pour ce tuto!
Est-ce que pour faire entendre à l’utilisateur un message générique avant la prise réelle de l’appel par le destinataire ce concept d’IVR est adéquat?
Est-il possible de configurer une redirection de l’appel à la fin du message enregistré sans option choisie mais avec un time out suffisant pour que le message ait le temps de passer dans son intégralité.
Bonjour,
Oui, vous pouvez tout à fait jouer un son, puis rediriger l’appel
Merci pour votre réponse,
Bonjour
Comment signifier au destinataire les choix de l’appelant dans le menu ivr.
vu que le post se retrouve sur deux options différentes.
Bonjour,
Je n’ai jamais fait cela.
Vous pouvez-peut-être tenter de jouer un son au début de l’appel avec le destinataire.
Par exemple, quand le destinataire décroche, le son « Vous avez été mis en relation avec l’accueil » est joué. Puis l’appel se déroule.
A voir si c’est intégrable dans le dial plan.