Actualités | Audio/Vidéo | Evènements | DIY | Domotique | Informatique | Maison | Mobile | Sécurité

Asterisk: Exécution de Script

Envoyer Imprimer PDF
Note des utilisateurs: / 4
MauvaisTrès bien 

Il y a quelques mois, nous avions installé un serveur Asterisk qui nous permettait d'utiliser le SIP de Free. Après plusieurs mois d'utilisation je vais régler le problème principal que j'avais : il me faut désactiver manuellement les upload et téléchargements en cas d'appel, sinon un des deux correspondants a droit à une conversation très hachée.

Nous allons donc voir comment lancer des actions automatiques en cas d'appel entrant, sortant ou en raccrochant.

Pour mon exemple je vais donc contrôler mon serveur Transmission par mon serveur Asterisk, en cas d’appel entrant ou sortant, il doit limiter le téléchargement et l’upload mais lorsque l’appel se termine, il lui faut enlever cette limitation.

Je n’utilise que 1 connexion entrante ou sortant à la fois et je n’ai pas besoin de vérifier qu’il n’y a plus de communication avant de supprimer la limitation.

Pour faire cela, je vais exécuter un script, de cette façon vous allez pouvoir utiliser la même méthode avec vos propres scripts.

Dans mon cas il faut installer le paquet suivant :

apt-get install transmission-cli

 

Je teste que tout fonctionne correctement, dans mon cas mon serveur Transmission a pour adresse “192.168.0.250”.

transmission-remote 192.168.0.250 –as

 

“-as” signifie de mettre en place le mode “tortue”, ce mode est un bridage montant et descendant qui s’active en un clique, l’inverse (pour désactiver le mode Tortue) se met avec l’option “-AS”. C’est très simple et très efficace.

Dans mon cas le mode Tortue est placé à 5ko en téléchargement comme en upload, cela représente 1/20 de mon débit montant et 1/200 de mon débit descendant. Ces valeurs ne sont pas forcément les meilleurs mais elles ont le mérite de laisser énormément de bande passante pour la VoIP et le surf sur internet.

Une fois que la commande précédente est lancée et qu’elle fonctionne (il vous suffit de vous connecter sur l’interface web pour le vérifier) nous pouvons passer à la suite.

 

Configuration d'Asterisk

Cette configuration est très simple, il suffit d’éditer les dial plan dans “/etc/asterisk/extensions.conf” et d’y ajouter dans le(s) contexte(s) la ligne suivante :

“exten => s,2,System(/root/Scripts/Transmission.sh incoming)”

 

Cet exemple est rempli avec les informations suivantes :

- “2” est le numéro de cette action dans le contexte.

- “/root/Scripts/Transmission.sh” est mon script à lancer (vous verrez son contenu en fin d’article).

- “incoming” est l’argument à passer à notre script. Le script accepte “incoming” pour les appels entrants, “outgoing” pour les appels sortants et “terminated” quand la communication est terminée.

 

Mon fichier extensions.conf est le suivant, vous pouvez voir que mon script est appelé 6 fois, toujours en double 1 lors de la sonnerie et un pour le raccroché.

[general]      
static=yes
writeprotect=no
clearglobalvars=no
[globals]      
CONSOLE=Console/dsp                             ; Console interface for demo
IAXINFO=guest                                   ; IAXtel username/password
TRUNK=DAHDI/G2                                  ; Trunk interface
TRUNKMSD=1                                      ; MSD digits to strip (usually 1 or 0)
[incoming] ;Contexte appelé depuis le fichier sip.conf      
exten => s,1,NoOp(${CALLERID})
exten => s,2,System(/root/Scripts/Transmission.sh incoming)
exten => s,n,Dial(SIP/6001&SIP/6002&SIP/6003, 20) ;Action lors d'un appel, dans ce cas appeler les postes: 6001, 6002, 6003 et 6004 en même temps
exten => h,1,System(/root/Scripts/Transmission.sh terminated)
[work]      
exten => _6XXX,1,Dial(SIP/${EXTEN},20)
exten => _6XXX,2,Dial(SIP/6001&SIP/6002&SIP/6003,10)
exten => _6XXX,3,VoiceMail(${EXTEN}@work)
;Numéro©ro de la boite vocale      
exten => 888,1,VoiceMailMain(${CALLERID(num)}@work)
exten => _0[1-6]xxxxxxxx,1,System(/root/Scripts/Transmission.sh outgoing)      
exten => _0[1-6]xxxxxxxx,2,Dial(SIP/versfreephonie/${EXTEN})     ;permet les appels sortant depuis les postes SIP
exten => h,1,System(/root/Scripts/Transmission.sh terminated)
exten => _09xxxxxxxx,1,System(/root/Scripts/Transmission.sh outgoing)
exten => _09xxxxxxxx,2,Dial(SIP/versfreephonie/${EXTEN})     ;permet les appels sortant depuis les postes SIP
exten => h,1,System(/root/Scripts/Transmission.sh terminated)

La ligne pour le raccroché est la suivante :

exten => h,1,System(/root/Scripts/Transmission.sh terminated)

 

Il y a moyen d’avoir une seule ligne pour le contexte sortant mais cela aurait fait plus de changement dans ma configuration actuel de Asterisk et je voulais faire le moins de modification possible.

Et pour finir par appliquer les changements un petit :

/etc/init.d/asterisk restart

Ce qui aura pour effet de couper les connexions ou alors

asterisk -cr

puis

reload

Et voila, il ne vous reste plus qu’à faire des tests pour valider que tout fonctionne correctement.

Avec cette fonction, vous pouvez lancer tous les scripts que vous souhaitez afin d’incrémenter un compteur, de loguer les appels, d’envoyer des notifications, … Laissez libre cours à votre imagination.

 

Je vous met mon script pour Transmission même s'il est réellement très simple, cela illustrera un peu plus cet article.

#!/bin/bash      
echo Debut  > /var/log/callreturn.log
if [ $1 = incoming ] || [ $1 = outgoing ]
then
transmission-remote 192.168.0.250 -as
echo "Telechargement bride" >> /var/log/callreturn.log
else
if [ $1 = terminated ]
then
transmission-remote 192.168.0.250 -AS
echo "Telechargement libere" >> /var/log/callreturn.log
fi
fi

 

J’espère que cette article vous aura aidé et que vous trouverez des utilisations intéressantes. N’hésitez pas à nous en faire part via les commentaires ou sur twitter @elkain ou @tteladomotique.

Vous n'avez pas compris un point ? Vous vous posez une question ? Vous pouvez nous contacter via le bouton Assistance sur votre gauche. N'hésitez pas à demander un rendez-vous téléphonique avec Domotics.

Vous avez aimé cet article ? Vous pouvez le partager sur vos réseaux sociaux pour soutenir son auteur et l'encourager à écrire de nouveaux articles ...

 

Cet article vous est proposé par ElkAin : Technophile Toulousain, il souhaite retransmettre ce que l'Internet lui a appris. Sa devise : Mieux vaut penser les changements que changer les pansements.

Mise à jour le Dimanche, 12 Mai 2013 17:23  

Ajouter un Commentaire


Code de sécurité
Rafraîchir

Recherche

Newsletter ?

Bon Plan

Instagram

Publicité



Connexion