All pastes #772034 Raw Edit

Someone

public text v1 · immutable
·published 2007-11-13 14:29 UTC
rendered paste body
#!/usr/bin/perl

use warnings;
use strict;
use Asterisk::AGI;
use DBI;

my $AGI = Asterisk::AGI->new;
my $dbh = DBI->connect('dbi:mysql:asterisk', 'foo', 'bar');

open my $fh, '>', '/tmp/callerid-test.out';
for my $key ( keys %ENV ) {
        print $fh "ENV{$key} => $ENV{$key}\n";
}

for my $arg ( @ARGV ) {
        print $fh "ARG: $arg\n";
}

my %input = $AGI->ReadParse;
for my $key ( keys %input ) {
        print $fh "INPUT{$key} => $input{$key}\n";
}

if ( $input{channel} =~ /^zap/i ) {
        # We are operating on a zap channel
        ( my $channel ) = ( $input{channel} =~ /^(zap\/[\d]+)/i );
        print $fh "Our channel: $channel\n";
        my $sth = $dbh->prepare('SELECT e.Extention AS extension, CONCAT(p.FIRST_NAME," ",p.SECOND_NAME) AS employee FROM extentions e LEFT JOIN employee p ON e.Extention = p.EXTENTION WHERE e.Channel = ?');
        $sth->execute( $channel );
        my $row = $sth->fetchrow_hashref;
        $sth->finish;
        if ( !$row->{extension} ) {
                print $fh "ERROR: Channel '$channel' not defined in database!\n";
        }
        else {
                print $fh "FOUND: Channel '$channel' is extension '$row->{extension}' in database!\n";
        }
        if ( !$row->{employee} ) {
                print $fh "ERROR: Channel '$channel' wont cross-reference to employee in database!\n";
        }
        else {
                print $fh "FOUND: Channel '$channel' is employee '$row->{employee}' in database!\n";
        }
        if ( $row->{extension} && $row->{employee} ) {
                #$AGI->exec('SET','CALLERID','"'. $row->{employee} .'" <'. $row->{extension} .'>');
                #$AGI->set_variable('CALLERID',$row->{employee}.' <'.$row->{extension}.'>');
                print "SET CALLERID \"$row->{employee}\"<$row->{extension}>";
        }
}
elsif ( $input{channel} =~ /^sip/i ) {
        # We are operating on a zap channel
        ( my $channel ) = ( $input{channel} =~ /^(sip\/[\d]+)/i );
        print $fh "Our channel: $channel\n";
        my $sth = $dbh->prepare('SELECT e.Extention AS extension, CONCAT(p.FIRST_NAME," ",p.SECOND_NAME) AS employee FROM extentions e LEFT JOIN employee p ON e.Extention = p.EXTENTION WHERE e.Channel = ?');
        $sth->execute( $channel );
        my $row = $sth->fetchrow_hashref;
        $sth->finish;
        if ( !$row->{extension} ) {
                print $fh "ERROR: SIP station '$channel' not defined in database!\n";
        }
        else {
                print $fh "FOUND: SIP station '$channel' is extension '$row->{extension}' in database!\n";
        }
        if ( !$row->{employee} ) {
                print $fh "ERROR: SIP station '$channel' wont cross-reference to employee in database!\n";
        }
        else {
                print $fh "FOUND: SIP station '$channel' is employee '$row->{employee}' in database!\n";
        }
        if ( $row->{extension} && $row->{employee} ) {
                print "SET CALLERID \"$row->{employee}\"<$row->{extension}>";
        }
}

close $fh;
exit;