Asterisk – IVR – Standard Auto

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.

Asterisk /var/lib/asterisk/sounds/

 

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.

 

Tagués avec : , ,
Publié dans Fonctionnalités
19 commentaires pour “Asterisk – IVR – Standard Auto
  1. Nemri dit :

    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 ?

    • Valentin Weber dit :

      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.

  2. Vail dit :

    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 ?

    • Valentin Weber dit :

      Le problème semble venir du module TTS.
      Commencez par vous assurer que vous avez bien suivi la procédure d’installation du module.

  3. projet fdsa dit :

    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.

  4. projet fdsa dit :

    je veux parler de IVR

  5. Ridvan dit :

    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

  6. Fabian dit :

    Bonjour
    vous utilisez qu elle type d extension ? generic sip device ?

    merci

  7. Sambatra dit :

    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.

  8. Testard dit :

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

  9. aurore dit :

    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.

    • Valentin Weber dit :

      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.

Répondre à Valentin Weber Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Le temps imparti est dépassé. Merci de saisir de nouveau le CAPTCHA.