Création d’un menu vocal interactif avec Asterisk
Sélection du moteur de syntèse vocale
Il existe plusieurs moteurs de synthèse vocale : Flite (intégré à Asterisk), Googletts (le plus poussé actuellement).
Notre choix s’est porté sur Googletts, projet libre de Google, possédant une agi simple a utiliser mais nécessitant un accès à internet pour la génération vocale.
Installation des dépendances
Nous rappelons que nous avons installé Asterisk sur une CentOS 6.5 minimale, il manque donc certaines dépendances :
- Perl : langage de programmation PERL
- perl-libwww : Librairie Perl pour le WEB
- sox : SOund eXchange, Processeur sonore
- mpg123 : lecteur et encodeur MPG audio
Nous devons donc ajouter le dépot RPMFORGE pour CentOS 6.x
- Téléchargez le package :
$ wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
- Importez la clé de sécurity GPG :
$ rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
- Installez le dépot:
$ rpm -K rpmforge-release-0.5.3-1.el6.rf.*.rpm
- Installation des dépendaces requises : perl perl-libwww-perl.noarch sox.x86_64 mpg123
$ yum install perl perl-libwww-perl.noarch sox.x86_64 mpg123
Téléchargement de Googletts
Téléchargez l’Agi googletts.agi
version zip (pour windows)
version tar.gz
Décompressez l’archive et copier le fichier googletts.agi dans le répertoire /var/lib/asterisk/agi-bin/
$ wget http://www.madti.info/dl/googletts.zip $ unzip googletts.zip $ cp googletts.agi /var/lib/asterisk/agi-bin/googletts.agi
Génération du menu vocal interactif avec Asterisk
Pour cet exemple créons un menu standard d’accueil avec choix de l’interlocuteur entre Thomas, Hervé et Gauvain.
Editez le fichier extensions.conf d’asterisk dans /etc/asterisk/. Ajoutez les lignes suivantes dans le fichier.
[accueil] exten => 8001,1,Answer() ; asterisk decroche exten => 8001,n,Set(TIMEOUT(response)=5) ; mise en place d'un timer de 5 secondes exten => 8001,n,agi(googletts.agi,"Bienvenue sur ce menu interactif.",fr,any,1.3) ; message d'accueil exten => 8001,n,agi(googletts.agi,"Qui souhaitez vous joindre ?",fr,any,1.3) exten => 8001,n,agi(googletts.agi,"Pour Thomas tapez 1.",fr,any) ; message de premiere option exten => 8001,n,agi(googletts.agi,"Pour Hervé tapez 2.",fr,any) ; message de seconde option exten => 8001,n,agi(googletts.agi,"Pour Gauvain tapez 3.",fr,any) ; message de troisieme option exten => 8001,n,agi(googletts.agi,"Pour raccrocher tapez étoile",fr,any,1.2) ; message de fin exten => 8001,n,agi(googletts.agi,"Pour réécouter ce message tapez dièse",fr,any) ; message de repetition exten => 8001,n,WaitExten() ; attente d'une touche exten => 1,1,Goto(admin,1001,1) ; sur pression de la touche '1' allez dans le contexte admin et appeler 1001, a la premiere ligne du contexte exten => 2,1,Goto(admin,1002,1) ; sur pression de la touche '2' allez dans le contexte admin et appeler 1002, a la premiere ligne du contexte exten => 3,1,Goto(gestion,2001,1) ; sur pression de la touche '3' allez dans le contexte gestion et appeler 2001, a la premiere ligne du contexte exten => _[4-9],1,agi(googletts.agi,"Touche non supportée. Retour au menu",fr,any,1.3) ; sur pression d'une touche de 4 à 9 inclus, message vocal exten => _[4-9],n,Goto(accueil,8001,4) ; sur pression d'une touche de 4 à 9 inclus aller dans le contexte accueil, appeler 8001 (ce menu), a la ligne 4 exten => #,1,Goto(accueil,8001,3) ; sur pression de la touche 'diese' aller dans le contexte accueil, appeler 8001 (ce menu), a la ligne 3 exten => *,1,Hangup() ; sur pression de la touche 'etoile', racrocher exten => t,1,Goto(accueil,8001,3) ; si le timer se termine aller dans le contexte accueil, appeler 8001 (ce menu), a la ligne 3
Test du menu
Pour tester le menu il suffit d’appeler le numéro 8001 pour avoir l’accueil.
Si tout fonctionne vous entendrez une voix féminine faire les annonces, et sur pression de la touche requise votre correspondant vous répondra.