Asterisk: menus scriptés
Rédigé par Xavier - -
Ce tutoriel fait suite à "configurer un serveur Asterisk" et "configurer une messagerie". Ici nous allons voir comment créer un menu sur lequel les clients pourront "naviguer".

Les clients qui appellent arriveront sur un menu d'accueil et pourront se rendre dans certaines catégories en appuyant sur les touches de leur clavier.
Structure du menu
Le client devra appeler le numéro "400" pour arriver sur l'accueil du menu, puis il lui sera demandé d'appuyer sur dièse pour avancer. Ensuite il aura le choix entre appuyer sur "1" pour consulter sa messagerie, et "2" pour revenir à l'accueil (ça ne sert à rien, mais c'est pour l'exemple).

schema
Voix
Pour notre serveur nous allons avoir besoin de phrases enregistrées. Vous pouvez les créer vous-même avec un simple micro, ou alors utiliser des services de synthèse vocale. Il y en a un par exemple ici. Entrez la phrase que vous voulez, et vous pourrez la récupérer en format .wav en cliquant sur download. Voici les fichiers que vous devez créer/demander:
- welcome.wav: "Bonjour et bienvenue sur le serveur vocal. Entrez dièse pour avancer au menu suivant".
- menu.wav: "Vous êtes sur le menu principal. Entrez 1 pour accéder à votre messagerie, ou 2 pour revenir à l'accueil. A tout moment appuyez sur zéro pour écouter à nouveau les instructions".
- erreur.wav: "erreur, votre saisie n'a pas été comprise. Veuillez recommencer".
Lorsque vous avez tous ces fichiers, vous allez devoir les convertir au format GSM. Pour cela vous pouvez utiliser l'utilitaire "sox".
Et pour convertir un fichier wav en gsm:
Répétez la même opération pour tous vos fichiers et placez-les dans /var/lib/asterisk/sounds. Vous pouvez utiliser la commande:
Création du menu
Tous les travaux se font dans le fichier extensions.conf:
Commencez par ajouter:
exten => 400,1,Answer() exten => 400,2,Wait(2) exten => 400,3,Goto(accueil,s,1)
Donc en premier lieu lorsque quelqu'un appelle le 400, le serveur décroche. Puis il attend 2 secondes, et enfin il redirige automatiquement le client vers le script nommé "accueil" (que nous allons faire) à la première ligne.
[accueil] exten => s,1,Background(/var/lib/asterisk/sounds/welcome) exten => #,1,Goto(menu,s,1) exten => i,1,Playback(/var/lib/asterisk/sounds/erreur) exten => s,2,WaitExten(10) exten => s,3,Goto(accueil,s,1)
Le client ayant appelé le numéro "400" arrive sur notre script "accueil". Premièrement, on lui joue le fichier "welcome.wav" (il ne faut pas indiquer l'extension dans la commande) dans lequel on lui demande d'appuyer sur dièse, puis on attend 10 secondes. Si il le fait, alors on le redirige vers le script "menu" (que l'on fera plus tard). Si il fait une mauvaise touche, on lui joue le fichier "erreur.wav". Et enfin, si le client ne fait rien du tout, on le ramène "en haut du script" (on boucle).
[menu] exten => s,1,Background(/var/lib/asterisk/sounds/menu) exten => 0,1,Goto(menu,s,1) exten => 1,1,Goto(messagerie,s,1) exten => 2,1,Goto(accueil,s,1) exten => i,1,Playback(/var/lib/asterisk/sounds/erreur) exten => s,2,WaitExten(10) exten => s,3,Goto(menu,s,1)
Lorsque le client arrive sur ce script, on lui joue le fichier menu.wav durant lequel il est invité à appuyer sur "1" pour aller sur la messagerie, "2" pour revenir à l'accueil, ou zéro pour réentendre les instructions. Puis on lui laisse 10 secondes. Encore une fois, si il fait une mauvaise touche, on lui joue le fichier "erreur.wav". Et si il ne fait rien, on boucle le script. Il nous reste maintenant à créer le script pour "messagerie
[messagerie] exten => s,1,VoiceMailMain exten => s,2,Hangup()
Le client arrivera ici entrera sur la messagerie vocale. On lui demandera son login et son mot de passe pour pouvoir consulter ses messages.