Affichage des résultats 1 à 2 sur 2

Discussion: CDRS nickel

  1. #1
    Membre Association
    Date d'inscription
    septembre 2010
    Localisation
    Isle sur la Sorgue 84800
    Messages
    369
    Downloads
    0
    Uploads
    0

    CDRS nickel

    Bonjour,

    Pas mal de temps à perdre today pendant la réparation de mon PC de dev
    je me suis donc amusé avec syslog pour récupérer des CDR formatés a votre choix
    sur un serveur syslog windows.

    J'ai pris un truc basic pour les tests http://www.sysrose.com/
    mais ca permet de voir les logs en console et en plus de les écrires dans un fichier log
    du pc win.

    coté astérisk
    installer
    asterisk perl http://asterisk.gnuinter.net/files/a...rl-1.01.tar.gz
    perl net syslog http://search.cpan.org/CPAN/authors/...og-0.03.tar.gz

    pour installer un package perl toujours la meme procédure:
    décompressez le fichier téléchargé, rendez vous dans le répertoire et entrez les commandes une par une:
    Code:
    perl Makefile.PL
       make
       make install
    bref une fois tout installé il suffit de créer dans /var/lib/asterisk/agi-bin
    un fichier myagi.agi par exemple et de le rendre éxecutable


    Code:
    ########################################
    #!/usr/bin/perl
    use Net::Syslog;
    $SIG{HUP}  = 'ignore_hup';
    use Asterisk::AGI;
    use POSIX qw(strftime);
    sub today() { 
    my $now = strftime "%Y-%m-%d %H:%M:%S", localtime;
    return $now;
     }
    $datecall = today();
    $AGI = new Asterisk::AGI;
    my %input = $AGI->ReadParse();
    exit unless $input{'request'};
    
    sub savecdr() {
    my ($dialstatus, $answeredtime, $startcall) = @_;
    &load_config();
    my $s=new Net::Syslog(Facility=>'user',Priority=>'notice');
    $s->send(''.$dialstatus.';'.$answeredtime.';'.$startcall.';'.$input{'uniqueid'}.';'.$input{'callerid'}.';'.$input{'accountcode'}.';'.$input{'extension'}.';'.$datecall.'',Priority=>'info',SyslogHost=>'ip.machine.serveur.syslog',SyslogPort=>'514' );
    $AGI->hangup(); 
    exit;
    }
    
    $AGI->answer();
    $dialstr = "SIP/nom_du_sip_carrier/$input{'extension'}|90|HL";
    $AGI->exec("DIAL $dialstr");
            $answeredtime = $AGI->get_variable("ANSWEREDTIME");
            $dialstatus = $AGI->get_variable("DIALSTATUS");
            $startcall = today();
            #return $dialstatus;
            &savecdr($dialstatus, $answeredtime, $startcall);
    ######################################################
    Dans le dialplan
    Code:
    exten => _0X.,1,DeadAGI(myagi.agi,${CDR(accountcode)},${EXTEN})
    voila ce que je trouve ensuite dans mon fichier log

    <14>myagi.agi[17414]:
    Code:
    ANSWER;2;2010-09-17 23:51:12;1284760256;101;101;0469665501;2010-09-17 23:50:56
    traduction:

    répondu;2secondes;répondu à 2010-09-17 23:51:10;uniqueID1284760256;callerid 101; accountcode 101;numero appelé 0469665501; appel envoyé à 2010-09-17 23:50:59

    Résultat un fichier log propre et mis en forme sur votre PC à exploiter avec ce que vous voulez :-)
    Dernière modification par fastm3 ; 18/09/2010 à 10h04. Motif: ajout des tags codes

  2. #2
    Asterisk Fan Avatar de fastm3
    Date d'inscription
    août 2010
    Localisation
    Corbeil Essonnes (91)
    Messages
    1 302
    Downloads
    1
    Uploads
    1
    Merci Comdif. C'est surtout un petit bout de code qui permet aussi de démystifier les agi surtout et peut inspirer pour d'autres usages.
    Fastm3.
    PS: J'ai ajouté des tags codes pour aider a la lisibilité.

Les tags pour cette discussion

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
  •