Configurer un menu pour gérer les appels sous Asterisk


Ce guide vous présente comment mettre en place un menu d'appel sur un serveur Asterisk afin de réaliser un standard téléphonique
Ce guide s'adresse à toute personne ayant un serveur Asterisk fonctionnel ( L'installation en est présentée à l'adresse suivante. )



Principales commandes

Dial(type/poste,timeout,options)Tente d'établir une nouvelle connexion sur un canal de difusion et le lie à un canal d'entrée existant
Wait(x)Génère un temps d'attente de "x" secondes
Answer(x)Répond sur un canal si il sonne. Si renseigné, Asterisk attendra x millisecondes indiqué avant de répondre.
System('commande')Execute la commande sur le serveur
Voicemail(poste,options)Renvoi l'appel sur la boite vocale ( /!\ le compte doit être configuré dans voicemail.conf )
Hangup(code)Raccroche en renvoyant le code d'erreur 'code'
Set(variable=valeur)Enregistre 'valeur' dans 'variable'
Background(fichier)Lit le "fichier" en fond sonnore
Waitexten(secondes)Attend qu'une action soit faite sur le pavé téléphonique de l'apellant
Mixmonitor(fichier,option,commande)Enregistre l'appel dans "fichier". Une fois l'enregistrement fait, execute "commande"
Record(fichier,silence,duree)Enregistre la voix de l'apellant pendant 'duree' secondes dans fichier. Si renseigné, l'appel sera coupé après 'silence' secondes sans bruit.
Pour plus d'informations sur les différentes commandes existantes, vous pouvez vous référer au site voip-info.org.

Création d'un plan pour gérer les appels

Le fichier à modifier est le /etc/asterisk/extensions.conf
[ovh-sip]
exten => s,1,Ringing(1)
exten => s,2,Answer
exten => s,3,Set(TIMEOUT(digit)=1)
exten => s,4,Background(tt-monkeys)
exten => s,5,Waitexten(15)

exten => 1,1,Answer
exten => 1,2,Set(DIRNAME=${STRFTIME(${EPOCH},,%Y-%m-%d)})
exten => 1,3,Set(FILENAME=${DIRNAME}/210_${CALLERID(num)}_${STRFTIME(${EPOCH},,%Y-%m-%d)}_${STRFTIME(${EPOCH},,%H:%M:%S)})
exten => 1,4,Set(OUTPUT=/var/spool/asterisk/monitor/${FILENAME})
exten => 1,5,System(/bin/mkdir -p /var/spool/asterisk/monitor/${DIRNAME})
exten => 1,6,MixMonitor(${FILENAME}.wav,b)
exten => 1,7,Dial(SIP/210,30,tm)
exten => 1,8,Voicemail(210,u)
exten => 1,9,Hangup()

exten => 2,1,Answer
exten => 2,2,Set(DIRNAME=${STRFTIME(${EPOCH},,%Y-%m-%d)})
exten => 2,3,Set(FILENAME=${DIRNAME}/220_${CALLERID(num)}_${STRFTIME(${EPOCH},,%Y-%m-%d)}_${STRFTIME(${EPOCH},,%H:%M:%S)})
exten => 2,4,Set(OUTPUT=/var/spool/asterisk/monitor/${FILENAME})
exten => 2,5,System(/bin/mkdir -p /var/spool/asterisk/monitor/${DIRNAME})
exten => 2,6,MixMonitor(${FILENAME}.wav,b)
exten => 2,7,Dial(SIP/220,30,tm)
exten => 2,8,Voicemail(220,u)
exten => 2,9,Hangup()

exten => 3,1,VoiceMail(300,u)
exten => 3,2,Hangup()

;##################################################################

; Cette partie permet de gerer les appels entre postes 2XX ( exemple 210 et 220 ) connectes sur ce serveur Asterisk
exten => _2XX,1,Wait(1)
exten => _2XX,2,Answer
exten => _2XX,3,Dial(SIP/${EXTEN})
exten => _2XX,4,Hangup()

;##################################################################

[appel-sortant]
; Cette partie gere les appels sortants
exten => _X.,1,Set(DIRNAME=${STRFTIME(${EPOCH},,%Y-%m-%d)})
exten => _X.,2,Set(FILENAME=${DIRNAME}/EXT_${CALLERID(num)}_${STRFTIME(${EPOCH},,%Y-%m-%d)}_${STRFTIME(${EPOCH},,%H:%M:%S)})
exten => _X.,3,Set(OUTPUT=/var/spool/asterisk/monitor/${FILENAME})
exten => _X.,4,System(/bin/mkdir -p /var/spool/asterisk/monitor/${DIRNAME})
exten => _X.,5,MixMonitor(${FILENAME}.wav,b)
exten => _X.,6,Dial(SIP/${EXTEN}@forfait-ovh)

Quelques explications

Ce menu prévu pour les appels arrivant sur un forfait pro ou perso ( le "s" du premier bloc signifie qu'il reçoit les appels sur la connexion faite sur un serveur distant à l'aide de "register" ).

Lorsque l'appel arrive, il passe tout d'abord par le premier bloc en respectant l'ordre indiqué ( "s,1", "s,2", "s,3", ... ) Un son sera émis en lecture attendant que l'appelant appuie sur une touche de son pavé téléphonique. Ici le son est tt-monkeys, des cris de singe, mais cette partie est totalement modifiable pour laisser place à votre message d'accueil.

Si l'apellant appuie sur la touche 1 ou 2, il sera redirigé sur le bloc correspondant où son appel sera enregistré sur le serveur à l'aide du MixMonitor ).

Si la touche 3 est pressée, l'appelant sera redirigé sur la boite vocale du poste 300.

Une section a été ensuite ajouttée pour permettre au poste 210 d'appeler le poste 220 directement. Cette section ne prévoit pas l'enregistrement de la communication.

Enfin la dernière partie comme vu précédemment gère les appels sortants. Tout numéro inconnu par le plan ( représenté par "_X.") sera renvoyé sur cette section.

Note importante

Les enregistrements des conversations ne peuvent pas être faits sans que l'interlocuteur ne soit prévenu. Afin de ne pas courir de risque, précisez le bien à l'appelant lorsque celui-ci arrive sur votre serveur.