Les customs destinations et freepbx.
Détail d'une application pratique pour renvoyer un numero d’appelant par sms.
Freepbx , c'est des fonctionalités standards de téléphonie à travers une interface graphique relativement accessible. Cela couvre generalement 99.99% des besoins des tpe. Mais Freepbx permet aussi de personnaliser l'usage de votre systeme téléphonique en insérant des petits ( ou gros ) bouts de dialplan permettant de réaliser n'importe quel fonctionnalités sur mesure.
On peut pour cela soit écrire un module freepbx, soit dans certains cas, plus simplement on peut utiliser les customs destinations.
Plutot que détailler un cas non réel, je vais prendre l'exemple d'un besoin exprimé sur asterisk-france.org.
Il sera plus complet et détaillera l'intégration complète.
Le besoin exprimé est relativement courant. Le cas d'une TPE qui redirige les appels du fixe vers un portable. Pour des raisons de cout, la tpe utilise souvent la ligne de sa box "gratuite" pour les appels mobiles. On n'a pas la flexibilité des trunks pros et on ne peut malheureusement pas présenter le numéro de l'appelant sur le mobile.
L'idée est donc de créer un dialplan qui communique les numéros des appels entrants sur le portable en meme temps. Ca peut etre fait par email ou par sms. Je cherchais justement à tester les notifications sms de free mobile...On peut pester sur les defauts de free ( ils en ont ), ils offrent tout de même des services en bonus très sympas comme celui-ci et en plus gratuits.
Le scénario est le suivant :
- Appel entrant du callerid x.
- Interception du workflow de freepbx pour rediriger vers un petit bout de dialplan.
- Le dialplan custom envoie des la reception de l’appelant les infos au mobile par sms ou email.
- On renvoie ensuite vers le poste concerné dans le workflow normal de freepbx pour permettre de garder la gestion par l'interface graphique.
Etape 1 :
Ecrire des petits scripts permettant d’envoyer email ou sms.
On les appellera sendsms.sh et sendmail.sh. On les placera dans /var/lib/asterisk/bin/
On veille à ce que l’utilisateur est bien asterisk et on donne les droits d’execution.
Code:
telisk:/var/lib/asterisk/bin# ls -la send*
-rwxrwxr-x 1 asterisk asterisk 492 Jul 12 2012 sendmail.sh
-rwxrwxr-x 1 asterisk asterisk 2864 Jun 12 09:32 sendsms.sh
Voila le script à reprendre pour sendmail.sh:
Code:
#!/bin/sh
#$1 email address
#$2 time
#$3 CallerID
#$4 CallLine
#$5 EPOCH
TMPFILE=/var/spool/asterisk/tmp/$5
echo "FROM: asterisk@telisk.org" >> $TMPFILE
echo "TO: "$1 >> $TMPFILE
echo "Subject: Nouvel appel pour "$4" recu " >> $TMPFILE
echo ""
echo "Pour info, vous venez de recevoir un appel sur la ligne "$4" Ã "$2", de "$3"." >> $TMPFILE
echo "" >> $TMPFILE
echo "Votre serveur Asterisk..." >> $TMPFILE
echo "" >> $TMPFILE
echo "." >> $TMPFILE
/usr/sbin/sendmail $1 < $TMPFILE
rm $TMPFILE
Il faut bien sur que sendmail soit correctement configure.
Pour le script d’envoi de sms avec le service de free mobile, sendsms.sh, d’autres en ont déjà écrit.
J’en reprends donc un ici que j’ai trouvé sur la toile. J’ai repris le contenu de celui-ci :
https://github.com/C-Duv/freemobile-...otification.sh
Il faut bien sur modifier l'identifiant et clé free mobile de l'espace client.
Etape 2 :
Création du petit bout de dialplan qui , avant de faire le dial d’une extension locale ( avec follow me sur mobile ), envoie les infos par email et par sms de l’appelant. On peut bien sur n’envoyer que par email ou que par sms en supprimant la ligne correspondante.
Pour freepbx, voila les 3 lignes à mettre dans /etc/asterisk/extensions_custom.conf
Code:
[email-and-dial-100]
exten => _.,1,System(${ASTVARLIBDIR}/bin/sendmail.sh fcouque@gmail.com "${STRFTIME(,,%c)}" "${CALLERID(name)} ${CALLERID(num)}" "${EXTEN}" "${EPOCH}")
exten => _.,n,System(${ASTVARLIBDIR}/bin/sendsms.sh "Nouvel appel de ${CALLERID(name)} <${CALLERID(num)}> sur la ligne ${EXTEN}" )
exten => _.,n,Goto(from-internal,100,1)
Notez bien le nom donné au context: email-and-dial-100
Facile à comprendre : La premiere ligne execute le script d’envoi d’email en passant les parametres. La deuxieme , c’est l’envoi d’un sms qui a l’avantage de passer meme sans data sur le mobile.
La troixième ligne rebranche vers le dialplan standard de freepbx , ici en appelant le poste 100.
Etape 3 : Création d’une "custom destination" sous freepbx.
Aller sur le gui de freepbx et sur la page custom destination.
freepbx1.png
Dans custom Destination, saisissez : email-and-dial-100,${EXTEN},1
Mettez ce que vous voulez dans le champs description et notes.
Etape 4 : Insertion de la custom destination dans le workflow d’un appel entrant :
On crée ou on modifie une « inbound route « en mettant comme destination :
Le choix « custom destinations » , email and dial 100 ( nom donné par vous )
freepbx2.png
Et voila, lors d’un appel entrant, si vous utilisez l’envoi sms, vous recevrez en meme temps le sms vous indiquant le numero de l’appelant pour permettre un rappel plus tard ou une identification avant de décrocher.
Les « custom destinations » abolissent toutes les limites. Ca permet de faire des choses « hors standard » vraiment sur mesure très simplement et facilement.
Bon tests !!
Francois.