From 98da4d6e9267ee9500aa733d7420e674d14740f0 Mon Sep 17 00:00:00 2001 From: mattf Date: Thu, 17 Aug 2006 15:31:19 +0000 Subject: [PATCH] added one instance of pl.gif changed several AGI scripts to use new AGI_output setting git-svn-id: svn://192.168.202.10@183 3d104415-ff17-0410-8863-d5cf3c621b8a --- LANG_www/agc/images/pl.gif | Bin 0 -> 276 bytes agi/VD_amd_post.agi | 122 ++++++++++++++++++++-------------- agi/agi-VDAD_pin_IVR.agi | 84 +++++++++++++++-------- agi/agi-VDADfixCXFER.agi | 112 +++++++++++++++++++------------ agi/agi-VDADlisten_DTMF.agi | 90 ++++++++++++++++--------- agi/call_inbound.agi | 128 ++++++++++++++++++++---------------- 6 files changed, 332 insertions(+), 204 deletions(-) create mode 100644 LANG_www/agc/images/pl.gif diff --git a/LANG_www/agc/images/pl.gif b/LANG_www/agc/images/pl.gif new file mode 100644 index 0000000000000000000000000000000000000000..cde0790592ab20556bb06754b81dd7cf5b9e46b3 GIT binary patch literal 276 zcmV+v0qg!pNk%w1VIBY!0K@;sK9K^(ZFa-rn{S4deFq z|M2kt4-fzU|Nj60A^8LV00000EC2ui03HAo000G%peK%`cL4y$p;zg?WRWC>F*9&p z4w%qDg2+Kf^e`$5h-5(+7IO^3B!iep2G86;u*qbS&a7)-5lAErOIS=|I2sj#K(l6x zD40kihzSr?fPpFi4-^Fj6b~taf(adukdYk<3Nw_Fn2sNtoSmMZppT%Vq@ALrsGp~) atRJhbsIRc3va_KMwx|w{n7zK4Apkoeh=KM1 literal 0 HcmV?d00001 diff --git a/agi/VD_amd_post.agi b/agi/VD_amd_post.agi index 11a008a6..b365304f 100644 --- a/agi/VD_amd_post.agi +++ b/agi/VD_amd_post.agi @@ -1,6 +1,6 @@ #!/usr/bin/perl # -# VD_amd_post.agi version 0.2 *DBI-version* +# VD_amd_post.agi version 0.3 *DBI-version* # # NOTE: This script is only needed with app_amd enabled systems # @@ -25,13 +25,30 @@ # 60217-1119 first build # 60731-1403 - changed to use DBI-DBD::mysql # - changed to use /etc/astguiclient.conf for configs +# 60817-1025 - added output options check from database # -$V = 0; # set to 1 for verbose mode -$M = 0; # set to 1 for 2 line messages mode +$script = 'VD_amd_post.agi'; + $A = 1; # set to 1 for AMD output messages mode $AMD_LOG = 0; # set to 1 for logfile +($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); +$year = ($year + 1900); +$mon++; +if ($mon < 10) {$mon = "0$mon";} +if ($mday < 10) {$mday = "0$mday";} +if ($hour < 10) {$Fhour = "0$hour";} +if ($min < 10) {$min = "0$min";} +if ($sec < 10) {$sec = "0$sec";} + +$now_date_epoch = time(); +$now_date = "$year-$mon-$mday $hour:$min:$sec"; +$start_time=$now_date; + $CIDdate = "$mon$mday$hour$min$sec"; + $tsSQLdate = "$year$mon$mday$hour$min$sec"; + $SQLdate = "$year-$mon-$mday $hour:$min:$sec"; + $SQLdateBEGIN = $SQLdate; # default path to astguiclient configuration file: $PATHconf = '/etc/astguiclient.conf'; @@ -71,42 +88,43 @@ foreach(@conf) $i++; } -# Customized Variables -$server_ip = $VARserver_ip; # Asterisk server IP - if (!$VARDB_port) {$VARDB_port='3306';} +if (!$AGILOGfile) {$AGILOGfile = "$PATHlogs/agiout.$year-$mon-$mday";} use DBI; use Asterisk::AGI; $AGI = new Asterisk::AGI; -($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); -$year = ($year + 1900); -$mon++; -if ($mon < 10) {$mon = "0$mon";} -if ($mday < 10) {$mday = "0$mday";} -if ($hour < 10) {$Fhour = "0$hour";} -if ($min < 10) {$min = "0$min";} -if ($sec < 10) {$sec = "0$sec";} - -$now_date_epoch = time(); -$now_date = "$year-$mon-$mday $hour:$min:$sec"; -$start_time=$now_date; - $CIDdate = "$mon$mday$hour$min$sec"; - $tsSQLdate = "$year$mon$mday$hour$min$sec"; - $SQLdate = "$year-$mon-$mday $hour:$min:$sec"; - $SQLdateBEGIN = $SQLdate; +$dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass") + or die "Couldn't connect to database: " . DBI->errstr; +### Grab Server values from the database +$stmtA = "SELECT agi_output FROM servers where server_ip = '$VARserver_ip';"; +$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; +$sthA->execute or die "executing: $stmtA ", $dbhA->errstr; +$sthArows=$sthA->rows; +$rec_count=0; +while ($sthArows > $rec_count) + { + $AGILOG = '0'; + @aryA = $sthA->fetchrow_array; + $DBagi_output = "$aryA[0]"; + if ($DBagi_output =~ /STDERR/) {$AGILOG = '1';} + if ($DBagi_output =~ /FILE/) {$AGILOG = '2';} + if ($DBagi_output =~ /BOTH/) {$AGILOG = '3';} + $rec_count++; + } +$sthA->finish(); ### begin parsing run-time options ### if (length($ARGV[0])>1) { -if ($V) {print STDERR "Perl Environment Dump:\n";} + if ($AGILOG) {$agi_string = "Perl Environment Dump:"; &agi_output;} $i=0; while ($#ARGV >= $i) { $args = "$args $ARGV[$i]"; - if ($V) {print STDERR "$i|$ARGV[$i]|\n";} + if ($AGILOG) {$agi_string = "$i|$ARGV[$i]"; &agi_output;} $i++; } @@ -140,17 +158,13 @@ if ($V) {print STDERR "Perl Environment Dump:\n";} } } } -else -{ -if ($V) {print "no command line options set\n";} -} $|=1; while() { chomp; last unless length($_); - if ($V) + if ($AGILOG) { if (/^agi_(\w+)\:\s+(.*)$/) { @@ -189,21 +203,19 @@ if ( ( } -if ($V) -{ +if ($AGILOG) {$agi_string = "AGI Environment Dump:"; &agi_output;} - if ($V) {print STDERR "AGI Environment Dump:\n";} - foreach $i (sort keys %AGI) { - if ($V) {print STDERR " -- $i = $AGI{$i}\n";} - } +foreach $i (sort keys %AGI) +{ + if ($AGILOG) {$agi_string = " -- $i = $AGI{$i}"; &agi_output;} } +if ($AGILOG) {$agi_string = "AGI Variables: |$unique_id|$channel|$extension|$type|$callerid|$calleridname|$priority|"; &agi_output;} + $VDADcampaign=''; $VDADphone=''; $VDADphone_code=''; -if ($V) {print STDERR "AGI Environment Dump: |$unique_id|$channel|$extension|$type|$callerid|$calleridname|$priority|\n";} - $callerid =~ s/\"//gi; $CIDlead_id = $callerid; @@ -211,13 +223,11 @@ $CIDlead_id = substr($CIDlead_id, 11, 9); $CIDlead_id = ($CIDlead_id + 0); $VD_lead_id = $CIDlead_id; -if ($V) {print STDERR "\nVD_amd_post : $callerid $channel $priority\n";} -if ($M) {print STDERR "+++++ VD amd START : |$unique_id|$channel|$extension|$type|$callerid|$CIDlead_id|$now_date|$AST_ver|$priority|$calleridname|\n";} - +if ($AGILOG) {$agi_string = "+++++ VD amd START: |$CIDlead_id|$now_date|$AST_ver|"; &agi_output;} if ( ($channel =~ /Local/i) && ($AST_ver !~ /^1\.0\.8|^1\.0\.9/) ) { -if ($M) {print STDERR "+++++ VDAD START LOCAL CHANNEL: EXITING- $priority\n";} +if ($AGILOG) {$agi_string = "+++++ VDAD START LOCAL CHANNEL: EXITING- $priority"; &agi_output;} if ($priority > 2) {sleep(1);} exit; } @@ -237,19 +247,15 @@ exit; ########## AMD says it's a machine so modify statuses and hangup call ########## ########## something will go here later for leaving a message on AMs ########## -$dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass") - or die "Couldn't connect to database: " . DBI->errstr; - $stmtA = "UPDATE vicidial_log set status='AL' where lead_id='$VD_lead_id' order by call_date desc limit 1;"; - if($M){print STDERR "\n\n|$stmtA|\n";} + if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;} $affected_rows = $dbhA->do($stmtA); -if ($M) {print STDERR "-- VDAD vicidial_log AM update: |$affected_rows|$uniqueid|\n";} +if ($AGILOG) {$agi_string = "-- VDAD vicidial_log AM update: |$affected_rows|$uniqueid|"; &agi_output;} $stmtA = "UPDATE vicidial_list set status='AL' where lead_id='$VD_lead_id';"; - if($M){print STDERR "\n\n|$stmtA|\n";} + if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;} $affected_rows = $dbhA->do($stmtA); -if ($M) {print STDERR "-- VDAD vicidial_list AM update: |$affected_rows|$uniqueid|\n";} - +if ($AGILOG) {$agi_string = "-- VDAD vicidial_list AM update: |$affected_rows|$uniqueid|"; &agi_output;} $dbhA->disconnect(); @@ -278,3 +284,21 @@ sub checkresult { $fail++; } } + + + +sub agi_output +{ +if ($AGILOG >=2) + { + ### open the log file for writing ### + open(Lout, ">>$AGILOGfile") + || die "Can't open $AGILOGfile: $!\n"; + print Lout "$now_date|$script|$agi_string\n"; + close(Lout); + } + ### send to STDERR writing ### +if ( ($AGILOG == '1') || ($AGILOG == '3') ) + {print STDERR "$now_date|$script|$agi_string\n";} +$agi_string=''; +} diff --git a/agi/agi-VDAD_pin_IVR.agi b/agi/agi-VDAD_pin_IVR.agi index 7fc71f76..638d1cb5 100644 --- a/agi/agi-VDAD_pin_IVR.agi +++ b/agi/agi-VDAD_pin_IVR.agi @@ -1,6 +1,6 @@ #!/usr/bin/perl # -# agi-VDAD_pin_IVR.agi version 0.1 *DBI-version* +# agi-VDAD_pin_IVR.agi version 0.2 *DBI-version* # # At the end of a call, the agent transfers customer to this script # @@ -23,11 +23,11 @@ # Copyright (C) 2006 Matt Florell LICENSE: GPLv2 # # changes: -# 60802-1304 - first build +# 60802-1304 - first build +# 60817-1113 - added output options check from database # -$V = 1; # set to 1 for verbose mode -$M = 1; # set to 1 for 2 line messages mode +$script = 'agi-VDAD_pin_IVR.agi'; $first_audio_file = '85100003'; $second_audio_file = '85100004'; @@ -47,6 +47,16 @@ $product_code = 'ABC'; $user = '1234'; $pin = '0'; +($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); +$year = ($year + 1900); +$mon++; +if ($mon < 10) {$mon = "0$mon";} +if ($mday < 10) {$mday = "0$mday";} +if ($hour < 10) {$Fhour = "0$hour";} +if ($min < 10) {$min = "0$min";} +if ($sec < 10) {$sec = "0$sec";} + $SQLdate = "$year-$mon-$mday $hour:$min:$sec"; + # default path to astguiclient configuration file: $PATHconf = '/etc/astguiclient.conf'; @@ -85,37 +95,44 @@ foreach(@conf) $i++; } -# Customized Variables -$server_ip = $VARserver_ip; # Asterisk server IP - if (!$VARDB_port) {$VARDB_port='3306';} +if (!$AGILOGfile) {$AGILOGfile = "$PATHlogs/agiout.$year-$mon-$mday";} use DBI; use Asterisk::AGI; $AGI = new Asterisk::AGI; +$dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass") + or die "Couldn't connect to database: " . DBI->errstr; - -($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); -$year = ($year + 1900); -$mon++; -if ($mon < 10) {$mon = "0$mon";} -if ($mday < 10) {$mday = "0$mday";} -if ($hour < 10) {$Fhour = "0$hour";} -if ($min < 10) {$min = "0$min";} -if ($sec < 10) {$sec = "0$sec";} - $SQLdate = "$year-$mon-$mday $hour:$min:$sec"; +### Grab Server values from the database +$stmtA = "SELECT agi_output FROM servers where server_ip = '$VARserver_ip';"; +$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; +$sthA->execute or die "executing: $stmtA ", $dbhA->errstr; +$sthArows=$sthA->rows; +$rec_count=0; +while ($sthArows > $rec_count) + { + $AGILOG = '0'; + @aryA = $sthA->fetchrow_array; + $DBagi_output = "$aryA[0]"; + if ($DBagi_output =~ /STDERR/) {$AGILOG = '1';} + if ($DBagi_output =~ /FILE/) {$AGILOG = '2';} + if ($DBagi_output =~ /BOTH/) {$AGILOG = '3';} + $rec_count++; + } +$sthA->finish(); ### begin parsing run-time options ### if (length($ARGV[0])>1) { -if ($V) {print STDERR "Perl Environment Dump:\n";} + if ($AGILOG) {$agi_string = "Perl Environment Dump:"; &agi_output;} $i=0; while ($#ARGV >= $i) { $args = "$args $ARGV[$i]"; - if ($V) {print STDERR "$i|$ARGV[$i]|\n";} + if ($AGILOG) {$agi_string = "$i|$ARGV[$i]"; &agi_output;} $i++; } @@ -145,16 +162,12 @@ if ($V) {print STDERR "Perl Environment Dump:\n";} } } } -else -{ -if ($V) {print "no command line options set\n";} -} $|=1; while() { chomp; last unless length($_); - if ($V) + if ($AGILOG) { if (/^agi_(\w+)\:\s+(.*)$/) { @@ -177,7 +190,7 @@ while() { } } - if ($V) {print STDERR "\nINBOUND IVR PLAY CALL VDCL STARTED\n";} + if ($AGILOG) {$agi_string = "INBOUND IVR PLAY CALL VDCL STARTED"; &agi_output;} $AGI->stream_file('beep'); @@ -186,9 +199,6 @@ sleep(1); $AGI->stream_file("$first_audio_file"); -$dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass") - or die "Couldn't connect to database: " . DBI->errstr; - ### insert a record into the vicidial_list_pins table $stmtA = "INSERT INTO vicidial_list_pins (entry_time,phone_number,lead_id,campaign_id,product_code,user,digits) values('$SQLdate','$phone_number','$lead_id','$campaign_id','$product_code','$user','IVR');"; @@ -196,7 +206,7 @@ $affected_rows = $dbhA->do($stmtA); $insert_pin_id = $dbhA->{'mysql_insertid'}; -if($M){print STDERR "\n|$stmtA|$insert_pin_id|$affected_rows|\n";} +if ($AGILOG) {$agi_string = "|$stmtA|$insert_pin_id|$affected_rows|"; &agi_output;} $dbhA->disconnect(); @@ -209,3 +219,19 @@ $AGI->stream_file("$goodbye_audio_file"); exit; + +sub agi_output +{ +if ($AGILOG >=2) + { + ### open the log file for writing ### + open(Lout, ">>$AGILOGfile") + || die "Can't open $AGILOGfile: $!\n"; + print Lout "$now_date|$script|$agi_string\n"; + close(Lout); + } + ### send to STDERR writing ### +if ( ($AGILOG == '1') || ($AGILOG == '3') ) + {print STDERR "$now_date|$script|$agi_string\n";} +$agi_string=''; +} diff --git a/agi/agi-VDADfixCXFER.agi b/agi/agi-VDADfixCXFER.agi index 6fe97d01..ff2181ea 100644 --- a/agi/agi-VDADfixCXFER.agi +++ b/agi/agi-VDADfixCXFER.agi @@ -1,6 +1,6 @@ #!/usr/bin/perl # -# agi-VDADfixCXFER.agi version 0.1 *DBI-version* +# agi-VDADfixCXFER.agi version 0.3 *DBI-version* # # runs when a Consultative transfer is released by the vicidial fronter as the # call arrives on another channel so that the vicidial_live_agents record is @@ -15,10 +15,20 @@ # # changes: # 60809-1749 - first build +# 60817-1122 - added output options check from database # -$V = 1; # set to 1 for verbose mode -$M = 1; # set to 1 for 2 line messages mode +$script = 'agi-VDADfixCXFER.agi'; + +($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); +$year = ($year + 1900); +$mon++; +if ($mon < 10) {$mon = "0$mon";} +if ($mday < 10) {$mday = "0$mday";} +if ($hour < 10) {$Fhour = "0$hour";} +if ($min < 10) {$min = "0$min";} +if ($sec < 10) {$sec = "0$sec";} + $SQLdate = "$year-$mon-$mday $hour:$min:$sec"; # default path to astguiclient configuration file: $PATHconf = '/etc/astguiclient.conf'; @@ -58,34 +68,44 @@ foreach(@conf) $i++; } -# Customized Variables -$server_ip = $VARserver_ip; # Asterisk server IP - if (!$VARDB_port) {$VARDB_port='3306';} +if (!$AGILOGfile) {$AGILOGfile = "$PATHlogs/agiout.$year-$mon-$mday";} use DBI; use Asterisk::AGI; $AGI = new Asterisk::AGI; -($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); -$year = ($year + 1900); -$mon++; -if ($mon < 10) {$mon = "0$mon";} -if ($mday < 10) {$mday = "0$mday";} -if ($hour < 10) {$Fhour = "0$hour";} -if ($min < 10) {$min = "0$min";} -if ($sec < 10) {$sec = "0$sec";} - $SQLdate = "$year-$mon-$mday $hour:$min:$sec"; +$dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass") + or die "Couldn't connect to database: " . DBI->errstr; + +### Grab Server values from the database +$stmtA = "SELECT agi_output FROM servers where server_ip = '$VARserver_ip';"; +$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; +$sthA->execute or die "executing: $stmtA ", $dbhA->errstr; +$sthArows=$sthA->rows; +$rec_count=0; +while ($sthArows > $rec_count) + { + $AGILOG = '0'; + @aryA = $sthA->fetchrow_array; + $DBagi_output = "$aryA[0]"; + if ($DBagi_output =~ /STDERR/) {$AGILOG = '1';} + if ($DBagi_output =~ /FILE/) {$AGILOG = '2';} + if ($DBagi_output =~ /BOTH/) {$AGILOG = '3';} + $rec_count++; + } +$sthA->finish(); + ### begin parsing run-time options ### if (length($ARGV[0])>1) { -if ($V) {print STDERR "Perl Environment Dump:\n";} + if ($AGILOG) {$agi_string = "Perl Environment Dump:"; &agi_output;} $i=0; while ($#ARGV >= $i) { $args = "$args $ARGV[$i]"; - if ($V) {print STDERR "$i|$ARGV[$i]|\n";} + if ($AGILOG) {$agi_string = "$i|$ARGV[$i]"; &agi_output;} $i++; } @@ -122,17 +142,13 @@ if ($V) {print STDERR "Perl Environment Dump:\n";} } } } -else -{ -if ($V) {print "no command line options set\n";} -} $|=1; while() { chomp; last unless length($_); - if ($V) + if ($AGILOG) { if (/^agi_(\w+)\:\s+(.*)$/) { @@ -153,43 +169,39 @@ while() $phone_number = $EXTEN[4]; $campaign_id = $EXTEN[5]; -if ($V) -{ +if ($AGILOG) {$agi_string = "AGI Environment Dump:"; &agi_output;} - if ($V) {print STDERR "AGI Environment Dump:\n";} - foreach $i (sort keys %AGI) { - if ($V) {print STDERR " -- $i = $AGI{$i}\n";} - } +foreach $i (sort keys %AGI) +{ + if ($AGILOG) {$agi_string = " -- $i = $AGI{$i}"; &agi_output;} } -if ($V) {print STDERR "AGI Environment Dump: |$unique_id|$channel|$extension|$type|$callerid|$calleridname|$priority|\n";} +if ($AGILOG) {$agi_string = "AGI Variables: |$unique_id|$channel|$extension|$type|$callerid|$calleridname|$priority|"; &agi_output;} + +if ($AGILOG) {$agi_string = "CXFERfix : $lead_id $user $channel $uniqueid"; &agi_output;} -if ($V) {print STDERR "\nCXFERfix : $lead_id $user $channel $uniqueid\n";} $CIDlead = sprintf("%010s", $lead_id); $CIDlead = "C123412345$CIDlead"; print "SET CALLERID $CIDlead\n"; checkresult($result); - print STDERR "callerID changed: $CIDlead\n"; - -$dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass") - or die "Couldn't connect to database: " . DBI->errstr; + if ($AGILOG) {$agi_string = "callerID changed: $CIDlead"; &agi_output;} ########## FIND AND UPDATE vicidial_live_agents ########## -$stmtA = "UPDATE vicidial_live_agents SET channel='$channel',call_server_ip='$server_ip',uniqueid='$uniqueid' where user='$user' and lead_id='$lead_id';"; - if($M){print STDERR "\n\n|$stmtA|\n";} +$stmtA = "UPDATE vicidial_live_agents SET channel='$channel',call_server_ip='$VARserver_ip',uniqueid='$uniqueid' where user='$user' and lead_id='$lead_id';"; + if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;} $affected_rows = $dbhA->do($stmtA); -if ($M) {print STDERR "-- VDAD vicidial_live_agents update: |$affected_rows|$lead_id\n";} +if ($AGILOG) {$agi_string = "-- VDAD vicidial_live_agents update: |$affected_rows|$lead_id|"; &agi_output;} ########## INSERT NEW vicidial_auto_calls record ########## -$stmtA = "INSERT INTO vicidial_auto_calls SET channel='$channel',server_ip='$server_ip',uniqueid='$uniqueid',campaign_id='$campaign_id',status='CLOSER',lead_id='$lead_id',phone_code='$phone_code',phone_number='$phone_number',call_time='$SQLdate',call_type='IN',callerid='$CIDlead';"; - if($M){print STDERR "\n\n|$stmtA|\n";} +$stmtA = "INSERT INTO vicidial_auto_calls SET channel='$channel',server_ip='$VARserver_ip',uniqueid='$uniqueid',campaign_id='$campaign_id',status='CLOSER',lead_id='$lead_id',phone_code='$phone_code',phone_number='$phone_number',call_time='$SQLdate',call_type='IN',callerid='$CIDlead';"; + if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;} $affected_rows = $dbhA->do($stmtA); -if ($M) {print STDERR "-- VDAD vicidial_auto_calls insert: |$affected_rows|$lead_id\n";} +if ($AGILOG) {$agi_string = "-- VDAD vicidial_auto_calls insert: |$affected_rows|$lead_id|"; &agi_output;} $dbhA->disconnect(); -print STDERR "\nexiting the CXFERfix app, transferring call to $conf_exten\n"; +if ($AGILOG) {$agi_string = "exiting the CXFERfix app, transferring call to $conf_exten"; &agi_output;} #print "SET CONTEXT $ext_context\n"; # checkresult($result); print "SET EXTENSION $conf_exten\n"; @@ -223,3 +235,21 @@ sub checkresult { $fail++; } } + + + +sub agi_output +{ +if ($AGILOG >=2) + { + ### open the log file for writing ### + open(Lout, ">>$AGILOGfile") + || die "Can't open $AGILOGfile: $!\n"; + print Lout "$now_date|$script|$agi_string\n"; + close(Lout); + } + ### send to STDERR writing ### +if ( ($AGILOG == '1') || ($AGILOG == '3') ) + {print STDERR "$now_date|$script|$agi_string\n";} +$agi_string=''; +} diff --git a/agi/agi-VDADlisten_DTMF.agi b/agi/agi-VDADlisten_DTMF.agi index e0dbfe61..1310fab5 100644 --- a/agi/agi-VDADlisten_DTMF.agi +++ b/agi/agi-VDADlisten_DTMF.agi @@ -1,6 +1,6 @@ #!/usr/bin/perl # -# agi-VDADlisten_DTMF.agi version 0.2 *DBI-version* +# agi-VDADlisten_DTMF.agi version 0.3 *DBI-version* # # To be initiated by an agent so during a call. Agent will click a PIN NUMBER # link on a web form webpage that will Originate a new call to this script @@ -29,10 +29,10 @@ # 60207-1507 - added ability to send AMs to campaign-defined message to leave # 60731-1536 - changed to use DBI-DBD::mysql # - changed to use /etc/astguiclient.conf for configs +# 60817-1113 - added output options check from database # -$V = 1; # set to 1 for verbose mode -$M = 1; # set to 1 for 2 line messages mode +$script = 'agi-VDADlisten_DTMF.agi'; ### set defaults for testing $referring_extension = '83009'; @@ -43,6 +43,16 @@ $product_code = 'ABC'; $user = '1234'; $pin = '0'; +($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); +$year = ($year + 1900); +$mon++; +if ($mon < 10) {$mon = "0$mon";} +if ($mday < 10) {$mday = "0$mday";} +if ($hour < 10) {$Fhour = "0$hour";} +if ($min < 10) {$min = "0$min";} +if ($sec < 10) {$sec = "0$sec";} + $SQLdate = "$year-$mon-$mday $hour:$min:$sec"; + # default path to astguiclient configuration file: $PATHconf = '/etc/astguiclient.conf'; @@ -81,37 +91,44 @@ foreach(@conf) $i++; } -# Customized Variables -$server_ip = $VARserver_ip; # Asterisk server IP - if (!$VARDB_port) {$VARDB_port='3306';} +if (!$AGILOGfile) {$AGILOGfile = "$PATHlogs/agiout.$year-$mon-$mday";} use DBI; use Asterisk::AGI; $AGI = new Asterisk::AGI; +$dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass") + or die "Couldn't connect to database: " . DBI->errstr; - -($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); -$year = ($year + 1900); -$mon++; -if ($mon < 10) {$mon = "0$mon";} -if ($mday < 10) {$mday = "0$mday";} -if ($hour < 10) {$Fhour = "0$hour";} -if ($min < 10) {$min = "0$min";} -if ($sec < 10) {$sec = "0$sec";} - $SQLdate = "$year-$mon-$mday $hour:$min:$sec"; +### Grab Server values from the database +$stmtA = "SELECT agi_output FROM servers where server_ip = '$VARserver_ip';"; +$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; +$sthA->execute or die "executing: $stmtA ", $dbhA->errstr; +$sthArows=$sthA->rows; +$rec_count=0; +while ($sthArows > $rec_count) + { + $AGILOG = '0'; + @aryA = $sthA->fetchrow_array; + $DBagi_output = "$aryA[0]"; + if ($DBagi_output =~ /STDERR/) {$AGILOG = '1';} + if ($DBagi_output =~ /FILE/) {$AGILOG = '2';} + if ($DBagi_output =~ /BOTH/) {$AGILOG = '3';} + $rec_count++; + } +$sthA->finish(); ### begin parsing run-time options ### if (length($ARGV[0])>1) { -if ($V) {print STDERR "Perl Environment Dump:\n";} + if ($AGILOG) {$agi_string = "Perl Environment Dump:"; &agi_output;} $i=0; while ($#ARGV >= $i) { $args = "$args $ARGV[$i]"; - if ($V) {print STDERR "$i|$ARGV[$i]|\n";} + if ($AGILOG) {$agi_string = "$i|$ARGV[$i]"; &agi_output;} $i++; } @@ -141,16 +158,12 @@ if ($V) {print STDERR "Perl Environment Dump:\n";} } } } -else -{ -if ($V) {print "no command line options set\n";} -} $|=1; while() { chomp; last unless length($_); - if ($V) + if ($AGILOG) { if (/^agi_(\w+)\:\s+(.*)$/) { @@ -173,13 +186,10 @@ while() { } } - if ($V) {print STDERR "\nINBOUND DTMF CALL VDCL STARTED\n";} + if ($AGILOG) {$agi_string = "INBOUND DTMF CALL VDCL STARTED"; &agi_output;} &enter_pin_number; -$dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass") - or die "Couldn't connect to database: " . DBI->errstr; - if (length($pin) < 4) {$AGI->stream_file('buzz');} else {$AGI->stream_file('ding');} @@ -190,7 +200,7 @@ $affected_rows = $dbhA->do($stmtA); $insert_pin_id = $dbhA->{'mysql_insertid'}; -if($M){print STDERR "\n|$stmtA|$insert_pin_id|$affected_rows|\n";} +if ($AGILOG) {$agi_string = "|$stmtA|$insert_pin_id|$affected_rows|"; &agi_output;} $dbhA->disconnect(); @@ -214,7 +224,7 @@ while ( ($digit_loop_counter < 4) ) if ($digit =~ /\d/) { $totalDTMF = "$totalDTMF$digit"; - print STDERR "digit |$digit| TotalDTMF |$totalDTMF|\n"; + if ($AGILOG) {$agi_string = "digit |$digit| TotalDTMF |$totalDTMF|"; &agi_output;} # $AGI->say_digits("$digit"); undef $digit; } @@ -228,7 +238,27 @@ while ( ($digit_loop_counter < 4) ) $totalDTMF =~ s/\D//gi; $pin = $totalDTMF; -if ($totalDTMF) {print STDERR "digit |$digit| TotalDTMF |$totalDTMF|\n";} +if ($totalDTMF) + { + if ($AGILOG) {$agi_string = "digit |$digit| TotalDTMF |$totalDTMF|"; &agi_output;} + } # $AGI->say_digits("$pin"); } + + +sub agi_output +{ +if ($AGILOG >=2) + { + ### open the log file for writing ### + open(Lout, ">>$AGILOGfile") + || die "Can't open $AGILOGfile: $!\n"; + print Lout "$now_date|$script|$agi_string\n"; + close(Lout); + } + ### send to STDERR writing ### +if ( ($AGILOG == '1') || ($AGILOG == '3') ) + {print STDERR "$now_date|$script|$agi_string\n";} +$agi_string=''; +} diff --git a/agi/call_inbound.agi b/agi/call_inbound.agi index 85a29f48..f3477c03 100644 --- a/agi/call_inbound.agi +++ b/agi/call_inbound.agi @@ -1,6 +1,6 @@ #!/usr/bin/perl # -# call_inbound.agi version 0.2 *DBI-version* +# call_inbound.agi version 0.3 *DBI-version* # # runs at the beginning and ending of every inbound call received # @@ -22,10 +22,25 @@ # changes: # 60731-1435 - changed to use DBI-DBD::mysql # - changed to use /etc/astguiclient.conf for configs +# 60817-1102 - added output options check from database # -$V = 1; # set to 1 for verbose mode -$M = 1; # set to 1 for 2 line messages mode +$script = 'call_inbound.agi'; + +$US='_'; +($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); +$year = ($year + 1900); +$Y = substr($year, 0, 1); +$mon++; +if ($mon < 10) {$mon = "0$mon";} +if ($mday < 10) {$mday = "0$mday";} +if ($hour < 10) {$Fhour = "0$hour";} +if ($min < 10) {$min = "0$min";} +if ($sec < 10) {$sec = "0$sec";} + +$now_date_epoch = time(); +$now_date = "$year-$mon-$mday $hour:$min:$sec"; +$filedate = "$US$Y$mon$mday$hour$min$sec$US"; # default path to astguiclient configuration file: $PATHconf = '/etc/astguiclient.conf'; @@ -65,39 +80,42 @@ foreach(@conf) $i++; } -# Customized Variables -$server_ip = $VARserver_ip; # Asterisk server IP - if (!$VARDB_port) {$VARDB_port='3306';} +if (!$AGILOGfile) {$AGILOGfile = "$PATHlogs/agiout.$year-$mon-$mday";} use DBI; -$US='_'; -($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); -$year = ($year + 1900); -$Y = substr($year, 0, 1); -$mon++; -if ($mon < 10) {$mon = "0$mon";} -if ($mday < 10) {$mday = "0$mday";} -if ($hour < 10) {$Fhour = "0$hour";} -if ($min < 10) {$min = "0$min";} -if ($sec < 10) {$sec = "0$sec";} - -$now_date_epoch = time(); -$now_date = "$year-$mon-$mday $hour:$min:$sec"; -$filedate = "$US$Y$mon$mday$hour$min$sec$US"; +$dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass") + or die "Couldn't connect to database: " . DBI->errstr; +### Grab Server values from the database +$stmtA = "SELECT agi_output FROM servers where server_ip = '$VARserver_ip';"; +$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; +$sthA->execute or die "executing: $stmtA ", $dbhA->errstr; +$sthArows=$sthA->rows; +$rec_count=0; +while ($sthArows > $rec_count) + { + $AGILOG = '0'; + @aryA = $sthA->fetchrow_array; + $DBagi_output = "$aryA[0]"; + if ($DBagi_output =~ /STDERR/) {$AGILOG = '1';} + if ($DBagi_output =~ /FILE/) {$AGILOG = '2';} + if ($DBagi_output =~ /BOTH/) {$AGILOG = '3';} + $rec_count++; + } +$sthA->finish(); ### begin parsing run-time options ### if (length($ARGV[0])>1) { -if ($V) {print STDERR "Perl Environment Dump:\n";} + if ($AGILOG) {$agi_string = "Perl Environment Dump:"; &agi_output;} $i=0; while ($#ARGV >= $i) { $args = "$args $ARGV[$i]"; - if ($V) {print STDERR "$i|$ARGV[$i]|\n";} + if ($AGILOG) {$agi_string = "$i|$ARGV[$i]"; &agi_output;} $i++; } @@ -143,16 +161,12 @@ if ($V) {print STDERR "Perl Environment Dump:\n";} } } } -else -{ -if ($V) {print "no command line options set\n";} -} $|=1; while() { chomp; last unless length($_); - if ($V) + if ($AGILOG) { if (/^agi_(\w+)\:\s+(.*)$/) { @@ -186,18 +200,17 @@ while() { } } -if ($V) -{ +if ($AGILOG) {$agi_string = "AGI Environment Dump:"; &agi_output;} - if ($V) {print STDERR "AGI Environment Dump:\n";} - foreach $i (sort keys %AGI) { - if ($V) {print STDERR " -- $i = $AGI{$i}\n";} - } +foreach $i (sort keys %AGI) +{ + if ($AGILOG) {$agi_string = " -- $i = $AGI{$i}"; &agi_output;} } - $callerid = "\"$calleridname\" <$callerid>"; +if ($AGILOG) {$agi_string = "AGI Variables: |$unique_id|$channel|$extension|$type|$callerid|"; &agi_output;} -if ($V) {print STDERR "AGI Environment Dump: |$unique_id|$channel|$extension|$type|$callerid|\n";} + + $callerid = "\"$calleridname\" <$callerid>"; if ($extension =~ /h/i) {$stage = 'END';} else {$stage = 'START';} @@ -206,21 +219,17 @@ else {$stage = 'START';} if ($stage =~ /START/) { - if ($V) {print STDERR "\nCALL INBOUND STARTED\n";} - if ($M) {print STDERR "+++++ CALL INBOUND START : |$unique_id|$channel|$extension|$type|$callerid|$now_date\n";} + if ($AGILOG) {$agi_string = "+++++ CALL INBOUND START : |$now_date|"; &agi_output;} # if ($channel =~ /^SIP/) {$channel =~ s/-.*//gi;} # if ($channel =~ /^Zap\//) {$channel =~ s/-\d$//gi;} - $dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass") - or die "Couldn't connect to database: " . DBI->errstr; - - $stmtA = "INSERT INTO live_inbound (uniqueid,channel,server_ip,caller_id,extension,phone_ext,start_time,inbound_number,comment_a,comment_b,comment_c,comment_d,comment_e) values('$unique_id','$channel','$server_ip','$callerid','$extension','$phone_ext','$now_date','$inbound_number','$comment_a','$comment_b','$comment_c','$comment_d','$comment_e')"; - if ($V) {print STDERR "\n|$stmtA|\n";} + $stmtA = "INSERT INTO live_inbound (uniqueid,channel,server_ip,caller_id,extension,phone_ext,start_time,inbound_number,comment_a,comment_b,comment_c,comment_d,comment_e) values('$unique_id','$channel','$VARserver_ip','$callerid','$extension','$phone_ext','$now_date','$inbound_number','$comment_a','$comment_b','$comment_c','$comment_d','$comment_e')"; + if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;} $affected_rows = $dbhA->do($stmtA); - $stmtA = "INSERT INTO live_inbound_log (uniqueid,channel,server_ip,caller_id,extension,phone_ext,start_time,inbound_number,comment_a,comment_b,comment_c,comment_d,comment_e) values('$unique_id','$channel','$server_ip','$callerid','$extension','$phone_ext','$now_date','$inbound_number','$comment_a','$comment_b','$comment_c','$comment_d','$comment_e')"; - if ($V) {print STDERR "\n|$stmtA|\n";} + $stmtA = "INSERT INTO live_inbound_log (uniqueid,channel,server_ip,caller_id,extension,phone_ext,start_time,inbound_number,comment_a,comment_b,comment_c,comment_d,comment_e) values('$unique_id','$channel','$VARserver_ip','$callerid','$extension','$phone_ext','$now_date','$inbound_number','$comment_a','$comment_b','$comment_c','$comment_d','$comment_e')"; + if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;} $affected_rows = $dbhA->do($stmtA); $dbhA->disconnect(); @@ -230,23 +239,15 @@ if ($stage =~ /START/) ### call end stage else { + if ($AGILOG) {$agi_string = "CALL INBOUND HUNG UP; deleting live_inbound record for $unique_id"; &agi_output;} - if ($V) {print STDERR "\nCALL INBOUND HUNG UP\n";} - - $dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass") - or die "Couldn't connect to database: " . DBI->errstr; - - if ($V) {print STDERR "\nCONNECTED: deleting live_inbound record for $unique_id on $server_ip\n";} - - $stmtA = "DELETE from live_inbound where uniqueid='$unique_id' and server_ip='$server_ip'"; + $stmtA = "DELETE from live_inbound where uniqueid='$unique_id' and server_ip='$VARserver_ip'"; $affected_rows = $dbhA->do($stmtA); $dbhA->disconnect(); - - if ($M) {print STDERR "+++++ CALL INBOUND HUNGUP: |$unique_id|$affected_rows|\n";} + if ($AGILOG) {$agi_string = "+++++ CALL INBOUND HUNGUP: |$unique_id|$affected_rows|"; &agi_output;} } -if ($V) {print STDERR "\nAll Done Call Inbound Exiting:\n";} exit; @@ -272,3 +273,20 @@ sub checkresult { $fail++; } } + + +sub agi_output +{ +if ($AGILOG >=2) + { + ### open the log file for writing ### + open(Lout, ">>$AGILOGfile") + || die "Can't open $AGILOGfile: $!\n"; + print Lout "$now_date|$script|$agi_string\n"; + close(Lout); + } + ### send to STDERR writing ### +if ( ($AGILOG == '1') || ($AGILOG == '3') ) + {print STDERR "$now_date|$script|$agi_string\n";} +$agi_string=''; +}