
La fonctionnalité de callback sert par exemple lorsqu’un employé de l’entreprise ne se trouve pas sur le site de l’entreprise et essaye de joindre son entreprise avec son portable. Pour que la communication ne soit pas à sa charge, il pourra appeler un numéro dont la destination est un Callback. Le système raccrochera sans prendre la ligne puis rappellera l’employé. La suite de la communication dépendra de la configuration du Callback.
La fonction DISA( ) : autorisation, des utilisateurs effectuant des appels entrants, à effectuer des appels sortants (Direct Inward System Access). Ce qui signifie que vous pouvez appeler votre système Asterisk et composer un numéro comme si vous utilisiez un poste interne.
Notre but est de réunir ces deux fonctions pour qu’Asterisk puisse détecter des appels venant de votre cellulaire, refaites callback sur votre portable et il vous redirige vers le DISA.
1. On autorise le numéro en l’ajoutant dans la base de données d’Asterisk :
# database put callback ¨0611111111¨ 1
Si vous ne voulez pas autoriser le numéro pour callback faites :
# database put callback ¨0611111111¨ 0
Pour ce but on peut utiliser ainsi MySQL, mais je vous ai donné un simple exemple.
2. On va créer le scripte qui nous va servir d’effectuer le callback :
# nano /etc/asterisk/scripts/callback.sh
| #!/bin/sh NUMBER=$1 sleep 10 echo « Channel: Local/${NUMBER}@local CallerID: Disa <800> MaxRetries: 1 RetryTime: 10 WaitTime: 30 Account: Disa Context: local Extension: 800 Priority: 1 AlwaysDelete: Yes » >/var/spool/asterisk/tmp/${NUMBER} mv /var/spool/asterisk/tmp/${NUMBER} /var/spool/asterisk/outgoing/${NUMBER} |
Détail :
Channel : Quel appel sera réalisé, sur quel numéro et vers quelle extension
Callerid : Nom de l’apellant envoyé
MaxRetries : Nombre de tentatives en cas d’échec.
RetryTime : Combien de secondes seront attendues en cas d’échec
WaitTime : Pendant combien de temps la réponse sera attendue
Context : le contexte dans le fichier extensions.conf
Extension : l’extension dans le contexte précédemment défini
Priority : la priorité de lextension par laquelle l’appel va commencer
L’appel démarre lorsque ce fichier est déplacé dans le dossier /var/spool/asterisk/outgoing/
3. On va faire les configurations nécessaires dans le fichier etxtensions.conf
# nano /etc/asterisk/extensions.conf
[LOCAL] exten => 200,1,GotoIf($["${DB(callback/${CALLERID(num)})}" = "1"]?callback-access) ; vérification de numéro dans le basse de données exten => 200,n,NoOp(${CALLERID(num)} – Callback denied) ; s’il n’est pas autorisé nous avons le message dans le console exten => 200,n,Dial(SIP/200,30,m) ; si le numéro entrant n’est pas autorisé il le traite comme un appel ordinaire exten => 200,n(callback-access),Playback(thank-you-for-calling) ; message vocale merci pour votre appel exten => 200,n,System(/etc/asterisk/scripts/callback.sh ${CALLERID(num)} &) ; Si le numéro est autorisé, il lance le scripte callback.sh et il ajoute le numéro sur lequel il faut rappeler exten => 200,n,Hangup() ; déconnexion ;Nous devons donc créer un contexte afin de déterminer ce qui se passera lorsque la personne répondra au callback: exten => 800,1,Wait(12) exten => 800,n,Answer() exten => 800,n,Authenticate(5656) ; Mettez-vous quand même un mot de passe, un CallerID ça se spoof facilement exten => 800,n,DISA(no-password,disa); exten => 800,n,Hangup
La personne devra donc s’identifier en composant le mot de passe, et Asterisk l’enverra en DISA, dans le context callback-out
| ;l’extension nécessaire pour effectuer des appels par DISA [disa] exten => _X.,1,Dial(SIP/freevoipdeal/${EXTEN}) exten => _X.,n,Hangup |
Le contexte [disa] se contente d’envoyer le numéro composé directement à l’extensions

Laisser un commentaire