Files
agc_2-X/agi/agi-dtmf.agi
T
mattf 7e11962fc1 Changed license to AGPLv2
Added VICIDIAL_fix_lead_statuses.pl script

git-svn-id: svn://192.168.202.10@788 3d104415-ff17-0410-8863-d5cf3c621b8a
2008-03-10 08:02:30 +00:00

99 lines
2.1 KiB
Perl

#!/usr/bin/perl
#
# agi-dtmf.agi - script for playing DTMF tones received as the callerid field
#
# DTMF sound files must be in /var/lib/asterisk/sounds for this to work
#
# Accepted values are: 1 2 3 4 5 6 7 8 9 0 # * ,
# comma means pause for 1 second
#
# Copyright (C) 2006 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
#
$|=1;
while(<STDIN>) {
chomp;
last unless length($_);
if (/^agi_(\w+)\:\s+(.*)$/) {
$AGI{$1} = $2;
}
if (/^agi_callerid\:\s+(.*)$/) {$caller_id = $1;}
if (/^agi_calleridname\:\s+(.*)$/) {$caller_idname = $1;}
}
print STDERR "AGI Environment Dump:\n";
foreach $i (sort keys %AGI) {
print STDERR " -- $i = $AGI{$i}\n";
}
use Time::HiRes ('gettimeofday','usleep','sleep'); # necessary to have perl sleep command of less than one second
use Asterisk::AGI;
my $agi = new Asterisk::AGI;
my $clid = $agi->get_variable('CALLERID');
my $clidname = $agi->get_variable('CALLERIDNAME');
print STDERR "X. |$clid|$caller_id|$clidname|\n";
sub checkresult {
my ($res) = @_;
my $retval;
$tests++;
chomp $res;
if ($res =~ /^200/) {
$res =~ /result=(-?\d+)/;
if (!length($1)) {
print STDERR "FAIL ($res)\n";
$fail++;
} else {
print STDERR "PASS ($1)\n";
$pass++;
}
} else {
print STDERR "FAIL (unexpected result '$res')\n";
$fail++;
}
}
### sleep for 5 tenths of a second
usleep(1*500*1000);
print "STREAM FILE silence \"\"\n";
$caller_id = "$caller_id$caller_idname";
@CALLERID_DIGITS = split(//, $caller_id);
foreach (@CALLERID_DIGITS)
{
if ($CALLERID_DIGITS[$g] =~ /\d/)
{
print "STREAM FILE $CALLERID_DIGITS[$g] \"\"\n";
print STDERR "DIGIT: $CALLERID_DIGITS[$g]\n";
}
else
{
if ($CALLERID_DIGITS[$g] =~ /\#/) {print "STREAM FILE hash \"\"\n";}
if ($CALLERID_DIGITS[$g] =~ /\*/) {print "STREAM FILE star \"\"\n";}
if ($CALLERID_DIGITS[$g] =~ /\,/) {sleep(1);}
print STDERR "NON-DIGIT: $CALLERID_DIGITS[$g]\n";
}
$g++;
### sleep for 20 hundredths of a second
usleep(1*150*1000);
print "STREAM FILE silence \"\"\n";
### sleep for 10 hundredths of a second
usleep(1*100*1000);
}
print "STREAM FILE silence \"\"\n";
$result = <STDIN>;
checkresult($result);