Affichage des résultats 1 à 9 sur 9

Discussion: 2 scripts offerts

  1. #1
    Trésorier Association
    Date d'inscription
    septembre 2010
    Localisation
    Lyon
    Messages
    105
    Downloads
    0
    Uploads
    0

    2 scripts offerts

    Chers amis d'Asterisk-France,

    Je prends le temps de publier 2 de mes scripts, dans l'espoir qu'ils puissent être utiles à d'autres personnes :

    1) le premier script permet de faire de la géolocalisation d'appel. Sur votre smartphone préféré, quand le numéro de téléphone de votre interlocuteur n'est pas dans votre annuaire, le téléphone affiche parfois le pays et/ou la ville de provenance de l'appel. Pour cela, il s'appuie sur une "base de donnée" locale qui contient les préfixes téléphoniques de tous les pays, et les préfixes d'un grand nombre de villes. Cette base de donnée est contenue dans une librairie pour Android, qui a été portée en Python dans la lib "phonenumbers". Mon script apporte la même fonctionnalité sur votre serveur Asterisk. Ce script fait partie de mon connecteur Asterisk-OpenERP disponible sur Launchpad https://code.launchpad.net/openerp-asterisk-connector, mais j'ai fait en sorte qu'il soit utilisable sans OpenERP. C'est un script AGI qu'il faut donc placer dans votre Dialplan dans la fonction de réception d'appel. Voilà quelques instructions pour l'installer :

    - sur votre serveur Asterisk, installez la lib "phonenumbers" :
    Code:
    % sudo apt-get install python-pip
    % sudo pip install phonenumbers
    - téléchargez les scripts (il y a en fait 2 scripts) sur Launchpad : http://bazaar.launchpad.net/~openerp...2dial/scripts/

    Les deux scripts sont get_cid_name.py et get_cid_name_timeout.sh ; mettez-les dans votre répertoire /usr/local/bin sur Asterisk. Le script "get_cid_name_timeout.sh" appelle le script "get_cid_name.py" avec les bons arguments et avec un timeout (pour éviter que, si le script part en sucette, l'appel entrant reste bloqué). Editez le fichier get_cid_name_timeout.sh et modifiez la dernière ligne en mettant :

    Code:
    timeout 2s get_cid_name.py --geoloc --geoloc-country "FR" --geoloc-lang "fr"
    Vous pouvez obtenir de l'aide sur les options en exécutant "get_cid_name.py -h"

    - testez l'appel du script :

    Code:
    % echo "agi_callerid:0472071242"|./get_cid_name_timeout.sh
    La sortie doit afficher :
    Code:
    full AGI environnement :
    agi_callerid = 0472071242
    stdout encoding = UTF-8
    VERBOSE "CallerID number = 0472071242"
    VERBOSE "Trying to geolocate with country FR and lang fr"
    VERBOSE "CallerID Name = Lyon"
    SET CALLERID "Lyon"<0472071242>
    On voit qu'il a mis le nom de la ville "Lyon" en CallerID name. En fait, avec les options de ligne de commande que j'ai donné ci-dessus, si l'appel est géolocalisé en France alors seul le nom de la ville s'affiche ; si l'appel est géolocalisé hors de France, alors le nom du pays s'affiche ainsi que la ville éventuelle.

    - Si le test précédent a bien fonctionné, éditez votre dialplan pour faire appel à ce script AGI ; par exemple :

    Code:
    [from-extern]
    exten => _141981242,1,AGI(/usr/local/bin/get_cid_name_timeout.sh)
    exten => _141981242,n,Dial(SIP/10, 30)
    exten => _141981242,n,Answer()
    exten => _141981242,n,Voicemail(10@default,u)
    exten => _141981242,n,Hangup()
    Si vous utilisez Xivo, faites une sous-routine de pré-traitement, et ça marchera très bien.

    Je tiens à remercier Ludovic Gasc qui m'a donné le tuyau de cette lib "phonenumbers" et m'a donné l'idée de développer cette fonctionnalité.



    2) Un script de monitoring du trunk SIP pour Asterisk 1.6 et supérieurs. Ce script très simple envoie un mail quand un des trunks SIP n'est pas "Registered". Il utilise 2 librairies :

    - la lib python-mailer, qui est certainement packagées dans votre distrib favorite :

    Code:
    % sudo apt-get install python-mailer
    - la lib py-asterisk (version récente nécessaire) :

    Code:
    % pip install py-Asterisk


    Ensuite, téléchargez le script ici : http://people.via.ecp.fr/~alexis/ast..._sip_trunks.py

    Vous pouvez voir les options du script en exécutant :

    Code:
    % ./check_sip_trunks.py -h
    Ce script se connecte à l'Asterisk Manager Interface (AMI) ; il faut un utilisateur AMI avec au moins les droits de "reporting" en write ; par exemple, dans votre /etc/asterisk/manager.conf :

    Code:
    [trunkmonit]
    secret = secret1242
    deny = 0.0.0.0/0.0.0.0 
    permit = 127.0.0.1/255.255.255.0 
    write = reporting
    Faites exécuter le script régulièrement par la crontab avec les options suivantes :

    Code:
    check_sip_trunks.py -s -u trunkmonit -w secret1242 -f Maison alexis@yahoo.com
    J'ai développé ce 2ème script car, sur un serveur Xivo, on est prévenu par mail dès qu'il y a un problème sur le serveur... mais si le trunk SIP n'est plus enregistré, on n'est pas prévenu ! :-)

    J'espère que ces scripts pourront vous être utiles. Je publie ces deux scripts sous licence libre.

    Happy hacking,

    Alexis de Lattre
    Dernière modification par sixela ; 17/04/2013 à 09h36.
    Mon expérience de déploiement Asterisk : http://people.via.ecp.fr/~alexis/asterisk/

  2. #2
    Trésorier Association
    Date d'inscription
    septembre 2010
    Localisation
    Lyon
    Messages
    105
    Downloads
    0
    Uploads
    0
    Alors, est-ce que qqun a essayé un de mes scripts ?

    Non, personne ? Vous en avez déjà d'autres 100 fois mieux que les miens, c ça ? :-) Alors n'hésitez pas à les partager aussi !
    Mon expérience de déploiement Asterisk : http://people.via.ecp.fr/~alexis/asterisk/

  3. #3
    Membre Association
    Date d'inscription
    août 2010
    Localisation
    région parisienne
    Messages
    386
    Downloads
    0
    Uploads
    0
    Bonjour Alexis,

    Merci pour le partage, je n'ai pas encore testé tes scripts mais c'est super sympa de partager

    Effectivement, si d'autres personnes ont des scripts ils peuvent les partager aussi

  4. #4
    Membre Junior
    Date d'inscription
    avril 2013
    Messages
    3
    Downloads
    0
    Uploads
    0

    Red face Demande D'aide

    Bonjour Sixela,

    je suis Fabrice et vous écris du Congo depuis Pointe-Noire.

    je voudrais créer un script pour interfacer asterisk avec une application web. je souhaiterai que l’authentication se fasse a partir du callerid c’est à dire quand j’appelle ma centrale téléphonique, asterisk reconnais mon numéro puis lance une page web en m’authentifiant avec mon username ainsi que mon mot de passe. alors humblement, je fais appel à tes connaissances pour m’aider si cela est possible.

    Merci d’avance.

  5. #5
    Membre Junior
    Date d'inscription
    avril 2013
    Messages
    3
    Downloads
    0
    Uploads
    0
    Bonjour !
    J'ai testé le script et je ne passe pas l'étape de vérification.

    echo "agi_callerid:0472071242"|./get_cid_name_timeout.sh
    ./get_cid_name_timeout.sh: ligne 1: Erreur de syntaxe près du symbole inattendu « newline »
    ./get_cid_name_timeout.sh: ligne 1: `<?xml version="1.0"?>'

  6. #6
    Membre Junior
    Date d'inscription
    avril 2013
    Messages
    4
    Downloads
    0
    Uploads
    0

    Problèmes nouvelle ligne...

    Citation Envoyé par castelsarrasin Voir le message
    Bonjour !
    J'ai testé le script et je ne passe pas l'étape de vérification.

    echo "agi_callerid:0472071242"|./get_cid_name_timeout.sh
    ./get_cid_name_timeout.sh: ligne 1: Erreur de syntaxe près du symbole inattendu « newline »
    ./get_cid_name_timeout.sh: ligne 1: `<?xml version="1.0"?>'
    "newline" signifie que l'indicateur de nouvelle ligne dans le fichier de script n'est pas correct, il faut essayer de l'encoder en UTF-8 dans un des deux formats (dont je ne sais plus le nom, avec ou sans quelque-chose je crois), un utilise un \n en fin de ligne, l'autre utilise un \n\l ou quelque-chose du genre... C'est juste qu'il voit un texte mal encodé et cela ne correspond pas à un script... J'ai eu ce problème en PHP, maintenant je comprends mieux, mais c'est pour le moins illogique... En espérant que ça fonctionne...
    Dernière modification par EJFJCorp ; 16/04/2013 à 14h40. Motif: Amélioration réponse

  7. #7
    Membre Junior
    Date d'inscription
    avril 2013
    Messages
    3
    Downloads
    0
    Uploads
    0
    Merci pour l'information, cependant je ne suis pas doué dans l'encodage de script.
    Je conçois le problème, seulement mes compétences en scripts sont très limités.
    J'ai regardé (rapidement sur google) pour convertir le script en utf8 et je n'ai pas trouvé mon bonheur.

    Si possible de m'orienter vers un convertisseur de script gratuit ou peut-être une ligne de commande magique avec le paquet qui va bien ?

    Merci d'avoir répondu !

  8. #8
    Trésorier Association
    Date d'inscription
    septembre 2010
    Localisation
    Lyon
    Messages
    105
    Downloads
    0
    Uploads
    0
    Effectivement, l'encodage des caractères n'était pas indiqué dans l'en-tête de mon script shell (mais il était bien indiqué dans l'en-tête de mon script Python). Je viens de l'ajouter. Pourriez-vous re-télécharger le script shell ?
    Mon expérience de déploiement Asterisk : http://people.via.ecp.fr/~alexis/asterisk/

  9. #9
    Membre Junior
    Date d'inscription
    avril 2013
    Messages
    3
    Downloads
    0
    Uploads
    0
    Merci beaucoup !
    Cela fonctionne correctement.

    Cela n'a pas marché du premier coup, quand je fais un wget, on dirait qu'il télécharge la vieille version du fichier.
    J'ai du ouvrir le sh par le lien et faire du copier coller pour qu'il soit identique à l'actuel.

    Bonne journée !

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •