From 1fe44a11282e83d070fc19272a7ce9cae138fc6b Mon Sep 17 00:00:00 2001 From: mattf Date: Sun, 21 Jun 2009 18:38:42 +0000 Subject: [PATCH] Added Tracking Group field to Call Menus for proper tracking in the IVR report git-svn-id: svn://192.168.202.10@1162 3d104415-ff17-0410-8863-d5cf3c621b8a --- agi/agi-VDAD_inbound_calltime_check.agi | 100 ++++++++++-------- bin/ADMIN_keepalive_ALL.pl | 6 +- extras/MySQL_AST_CREATE_tables.sql | 5 +- extras/upgrade_2.2.0.sql | 4 + .../TO_BE_TRANSLATED_2.2.0.txt | 2 + www/vicidial/AST_IVRstats.php | 3 +- www/vicidial/admin.php | 32 ++++-- 7 files changed, 95 insertions(+), 57 deletions(-) diff --git a/agi/agi-VDAD_inbound_calltime_check.agi b/agi/agi-VDAD_inbound_calltime_check.agi index 22bc3368..1ac05f25 100644 --- a/agi/agi-VDAD_inbound_calltime_check.agi +++ b/agi/agi-VDAD_inbound_calltime_check.agi @@ -34,6 +34,7 @@ # 81015-2009 - Added more logging and NOTE option # 81017-0238 - Fixed duplication bug for vac in multi-entry dialplans # 90504-1555 - Added call time scheme override +# 90621-1130 - Fixed issue when no call time is specified # $script = 'agi-VDAD_inbound_calltime_check.agi'; @@ -171,12 +172,12 @@ while() chomp; last unless length($_); if ($AGILOG) - { - if (/^agi_(\w+)\:\s+(.*)$/) { - $AGI{$1} = $2; + if (/^agi_(\w+)\:\s+(.*)$/) + { + $AGI{$1} = $2; + } } - } if (/^agi_context\:\s+(.*)$/) {$context = $1;} if (/^agi_priority\:\s+(.*)$/) {$priority = $1;} @@ -196,8 +197,8 @@ if ( ($callerid =~ /\".*\"/) && ( (!$calleridname) or ($calleridname =~ /unknown $calleridname =~ s/\"|\" //gi; } - $callerid =~ s/\D//gi; - $calleridname =~ s/unknown//gi; +$callerid =~ s/\D//gi; +$calleridname =~ s/unknown//gi; if ( (!$callerid) or ($callerid =~ /unknown/) ) {$callerid = $calleridname;} @@ -323,22 +324,28 @@ if ($wday==4) {$daySQL=',ct_thursday_start,ct_thursday_stop';} if ($wday==5) {$daySQL=',ct_friday_start,ct_friday_stop';} if ($wday==6) {$daySQL=',ct_saturday_start,ct_saturday_stop';} +$ct_default_start = '0'; +$ct_default_stop = '9999'; + ### Grab call_times values from the database $stmtA = "SELECT ct_default_start,ct_default_stop $daySQL FROM vicidial_call_times where call_time_id = '$call_time_id';"; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthArows=$sthA->rows; -@aryA = $sthA->fetchrow_array; -$ct_default_start = "$aryA[0]"; -$ct_default_stop = "$aryA[1]"; -$ct_day_start = "$aryA[2]"; -$ct_day_stop = "$aryA[3]"; -$sthA->finish(); - -if ( ($ct_day_start > 0) || ($ct_day_stop > 0) ) +if ($sthArows > 0) { - $ct_default_start = $ct_day_start; - $ct_default_stop = $ct_day_stop; + @aryA = $sthA->fetchrow_array; + $ct_default_start = "$aryA[0]"; + $ct_default_stop = "$aryA[1]"; + $ct_day_start = "$aryA[2]"; + $ct_day_stop = "$aryA[3]"; + $sthA->finish(); + + if ( ($ct_day_start > 0) || ($ct_day_stop > 0) ) + { + $ct_default_start = $ct_day_start; + $ct_default_stop = $ct_day_stop; + } } $AGI->stream_file('sip-silence'); @@ -384,14 +391,14 @@ if ( ($hm < $ct_default_start) || ($hm > $ct_default_stop) ) checkresult($result); } } - $stmtA = "DELETE FROM vicidial_auto_calls where callerid='$callerid' and uniqueid='$uniqueid' and server_ip='$VARserver_ip' order by call_time desc limit 1;"; - $affected_rows = $dbhA->do($stmtA); - if ($AGILOG) {$agi_string = "-- VDCL vac record deleted: |$affected_rows| $uniqueid|$callerid|"; &agi_output;} + $stmtA = "DELETE FROM vicidial_auto_calls where callerid='$callerid' and uniqueid='$uniqueid' and server_ip='$VARserver_ip' order by call_time desc limit 1;"; + $affected_rows = $dbhA->do($stmtA); + if ($AGILOG) {$agi_string = "-- AH VDCL vac record deleted: |$affected_rows| $uniqueid|$callerid|"; &agi_output;} - $stmtA = "INSERT INTO live_inbound_log (uniqueid,channel,server_ip,caller_id,extension,phone_ext,start_time,comment_a,comment_b,comment_c,comment_d,comment_e) values('$uniqueid','$channel','$VARserver_ip','$callerid','$extension','$phone_number','$SQLdate','$channel_group','$note','AFTERHOURSDROP','$context','$priority')"; - if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;} - $affected_rowsL = $dbhA->do($stmtA); - if ($AGILOG) {$agi_string = "-- LIL : |$affected_rowsL|$uniqueid|$callerid|$extension|"; &agi_output;} + $stmtA = "INSERT INTO live_inbound_log (uniqueid,channel,server_ip,caller_id,extension,phone_ext,start_time,comment_a,comment_b,comment_c,comment_d,comment_e) values('$uniqueid','$channel','$VARserver_ip','$callerid','$extension','$phone_number','$SQLdate','$channel_group','$note','AFTERHOURSDROP','$context','$priority')"; + if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;} + $affected_rowsL = $dbhA->do($stmtA); + if ($AGILOG) {$agi_string = "-- AH LIL : |$affected_rowsL|$uniqueid|$callerid|$extension|"; &agi_output;} if ($after_hours_action =~ /HANGUP/) { @@ -422,7 +429,7 @@ if ( ($hm < $ct_default_start) || ($hm > $ct_default_stop) ) ### insert an IVR record to the vicidial_auto_calls table -if ($log_to_vac == 'YES') +if ($log_to_vac =~ /YES/) { $stmtA = "DELETE FROM vicidial_auto_calls where callerid='$callerid' and uniqueid='$uniqueid' and server_ip='$VARserver_ip';"; $affected_rows = $dbhA->do($stmtA); @@ -450,39 +457,46 @@ exit; -sub checkresult { +sub checkresult + { my ($res) = @_; my $retval; $tests++; chomp $res; - if ($res =~ /^200/) { + if ($res =~ /^200/) + { $res =~ /result=(-?\d+)/; - if (!length($1)) { + if (!length($1)) + { # print STDERR "FAIL ($res)\n"; $fail++; - } else { + } + else + { # print STDERR "PASS ($1)\n"; $pass++; - } - } else { + } + } + else + { # print STDERR "FAIL (unexpected result '$res')\n"; $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); + 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=''; } - ### send to STDERR writing ### -if ( ($AGILOG == '1') || ($AGILOG == '3') ) - {print STDERR "$now_date|$script|$agi_string\n";} -$agi_string=''; -} diff --git a/bin/ADMIN_keepalive_ALL.pl b/bin/ADMIN_keepalive_ALL.pl index 6194a5d3..ee1452b4 100644 --- a/bin/ADMIN_keepalive_ALL.pl +++ b/bin/ADMIN_keepalive_ALL.pl @@ -26,6 +26,7 @@ # 90614-0753 - Added in-group routing to call menu feature # 90617-0821 - Added phone ring timeout and call menu custom dialplan entry # 90621-0823 - Added phones conf file secret field use +# 90621-1425 - Added tracking group for call menus # $DB=0; # Debug flag @@ -967,7 +968,7 @@ if ( ($active_asterisk_server =~ /Y/) && ($generate_vicidial_conf =~ /Y/) && ($r ##### Get the Call Menu entries ##### - $stmtA = "SELECT menu_id,menu_name,menu_prompt,menu_timeout,menu_timeout_prompt,menu_invalid_prompt,menu_repeat,menu_time_check,call_time_id,track_in_vdac,custom_dialplan_entry FROM vicidial_call_menu order by menu_id;"; + $stmtA = "SELECT menu_id,menu_name,menu_prompt,menu_timeout,menu_timeout_prompt,menu_invalid_prompt,menu_repeat,menu_time_check,call_time_id,track_in_vdac,custom_dialplan_entry,tracking_group FROM vicidial_call_menu order by menu_id;"; # print "$stmtA\n"; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; @@ -987,6 +988,7 @@ if ( ($active_asterisk_server =~ /Y/) && ($generate_vicidial_conf =~ /Y/) && ($r $call_time_id[$i] = "$aryA[8]"; $track_in_vdac[$i] = "$aryA[9]"; $custom_dialplan_entry[$i]= "$aryA[10]"; + $tracking_group[$i] = "$aryA[11]"; if ($track_in_vdac[$i] > 0) {$track_in_vdac[$i] = 'YES'} @@ -1232,7 +1234,7 @@ if ( ($active_asterisk_server =~ /Y/) && ($generate_vicidial_conf =~ /Y/) && ($r $call_menu_ext .= "\n"; $call_menu_ext .= "; $menu_name[$i]\n"; $call_menu_ext .= "[$menu_id[$i]]\n"; - $call_menu_ext .= "exten => s,1,AGI(agi-VDAD_inbound_calltime_check.agi,-----$track_in_vdac[$i]-----$menu_id[$i]-----$time_check_scheme-----$time_check_route-----$time_check_route_value-----$time_check_route_context)\n"; + $call_menu_ext .= "exten => s,1,AGI(agi-VDAD_inbound_calltime_check.agi,$tracking_group[$i]-----$track_in_vdac[$i]-----$menu_id[$i]-----$time_check_scheme-----$time_check_route-----$time_check_route_value-----$time_check_route_context)\n"; $call_menu_ext .= "$menu_prompt_ext"; if ($menu_timeout[$i] > 0) {$call_menu_ext .= "exten => s,n,WaitExten($menu_timeout[$i])\n";} diff --git a/extras/MySQL_AST_CREATE_tables.sql b/extras/MySQL_AST_CREATE_tables.sql index 5c7a4a34..2de33bc4 100644 --- a/extras/MySQL_AST_CREATE_tables.sql +++ b/extras/MySQL_AST_CREATE_tables.sql @@ -1500,7 +1500,8 @@ menu_repeat TINYINT(1) UNSIGNED default '0', menu_time_check ENUM('0','1') default '0', call_time_id VARCHAR(20) default '', track_in_vdac ENUM('0','1') default '1', -custom_dialplan_entry TEXT +custom_dialplan_entry TEXT, +tracking_group VARCHAR(20) default 'CALLMENU' ); CREATE TABLE vicidial_call_menu_options ( @@ -1655,7 +1656,7 @@ CREATE INDEX phone_number on vicidial_closer_log (phone_number); CREATE INDEX date_user on vicidial_closer_log (call_date,user); CREATE INDEX comment_a on live_inbound_log (comment_a); -UPDATE system_settings SET db_schema_version='1154'; +UPDATE system_settings SET db_schema_version='1155'; GRANT RELOAD ON *.* TO cron@'%'; GRANT RELOAD ON *.* TO cron@localhost; diff --git a/extras/upgrade_2.2.0.sql b/extras/upgrade_2.2.0.sql index 4c7440f8..73886390 100644 --- a/extras/upgrade_2.2.0.sql +++ b/extras/upgrade_2.2.0.sql @@ -197,3 +197,7 @@ UPDATE system_settings SET db_schema_version='1153'; ALTER TABLE phones ADD conf_secret VARCHAR(20) default 'test'; UPDATE system_settings SET db_schema_version='1154'; + +ALTER TABLE vicidial_call_menu ADD tracking_group VARCHAR(20) default 'CALLMENU'; + +UPDATE system_settings SET db_schema_version='1155'; diff --git a/translations/raw_translation_files/TO_BE_TRANSLATED_2.2.0.txt b/translations/raw_translation_files/TO_BE_TRANSLATED_2.2.0.txt index 58bd6777..5396e0f3 100644 --- a/translations/raw_translation_files/TO_BE_TRANSLATED_2.2.0.txt +++ b/translations/raw_translation_files/TO_BE_TRANSLATED_2.2.0.txt @@ -175,6 +175,8 @@ You can enter multiple propmts in this field and the other prompt fields by sepa Setting this field to zero 0 will mean that there will be no wait time after the prompt is played|| Conf File Secret|| This is the secret, or password, for the phone in the iax or sip auto-generated conf file for this phone. Limit is 20 characters alphanumeric dash and underscore accepted. Default is test|| +Tracking Group|| +This is the ID that you can use to track calls to this Call Menu when looking at the IVR Report. The list includes CALLMENU as the default as well as all of the In-Groups|| add-file: user_territories.php diff --git a/www/vicidial/AST_IVRstats.php b/www/vicidial/AST_IVRstats.php index 76c62d31..756d5d94 100644 --- a/www/vicidial/AST_IVRstats.php +++ b/www/vicidial/AST_IVRstats.php @@ -4,7 +4,6 @@ # Copyright (C) 2009 Matt Florell LICENSE: AGPLv2 # # CHANGES -# # 81026-2026 - First build # 81107-0341 - Added time range and option and 15-minute increment graph # 81107-1148 - Added average times and totals @@ -82,7 +81,7 @@ $rslt=mysql_query($stmt, $link); if ($DB) {echo "$stmt\n";} $groups_to_print = mysql_num_rows($rslt); $i=0; - $LISTgroups[$i]='---NONE---'; + $LISTgroups[$i]='CALLMENU'; $i++; $groups_to_print++; while ($i < $groups_to_print) diff --git a/www/vicidial/admin.php b/www/vicidial/admin.php index 9738b552..9e703166 100644 --- a/www/vicidial/admin.php +++ b/www/vicidial/admin.php @@ -1042,6 +1042,8 @@ if (isset($_GET["phone_ring_timeout"])) {$phone_ring_timeout=$_GET["phone_ri elseif (isset($_POST["phone_ring_timeout"])) {$phone_ring_timeout=$_POST["phone_ring_timeout"];} if (isset($_GET["conf_secret"])) {$conf_secret=$_GET["conf_secret"];} elseif (isset($_POST["conf_secret"])) {$conf_secret=$_POST["conf_secret"];} +if (isset($_GET["tracking_group"])) {$tracking_group=$_GET["tracking_group"];} + elseif (isset($_POST["tracking_group"])) {$tracking_group=$_POST["tracking_group"];} if (isset($script_id)) {$script_id= strtoupper($script_id);} if (isset($lead_filter_id)) {$lead_filter_id = strtoupper($lead_filter_id);} @@ -1471,6 +1473,7 @@ if ($non_latin < 1) $call_time_id = ereg_replace("[^-_0-9a-zA-Z]","",$call_time_id); $phone_context = ereg_replace("[^-_0-9a-zA-Z]","",$phone_context); $conf_secret = ereg_replace("[^-_0-9a-zA-Z]","",$conf_secret); + $tracking_group = ereg_replace("[^-_0-9a-zA-Z]","",$tracking_group); ### ALPHA-NUMERIC and underscore and dash and slash and dot $menu_prompt = ereg_replace("[^-\/\|\._0-9a-zA-Z]","",$menu_prompt); @@ -1815,11 +1818,12 @@ else # 90614-0827 - Added In-Group routing to Call Menu screen, Added pull-down Call Menu option to DID screen # 90617-0733 - Added phone ring timeout and call menu custom dialplan entries # 90621-0821 - Added phon Conf File Secret field to use a separate password from the user interface for a phone +# 90621-1220 - Added Call Menu logging tracking_group # # make sure you have added a user to the vicidial_users MySQL table with at least user_level 8 to access this page the first time -$admin_version = '2.2.0-198'; -$build = '90621-0821'; +$admin_version = '2.2.0-199'; +$build = '90621-1220'; $STARTtime = date("U"); $SQLdate = date("Y-m-d H:i:s"); @@ -4143,6 +4147,11 @@ if ($SSqc_features_active > 0)
Track Calls in Real-Time Report - This field is where you can select whether you want the call to be tracked in the Real-time screen as an incoming IVR type call. Default is 1 for active. +
+ +
+Tracking Group - This is the ID that you can use to track calls to this Call Menu when looking at the IVR Report. The list includes CALLMENU as the default as well as all of the In-Groups. +

@@ -8539,7 +8548,7 @@ if ($ADD==2611) } else { - $stmt="INSERT INTO vicidial_call_menu (menu_id,menu_name,menu_prompt,menu_timeout,menu_timeout_prompt,menu_invalid_prompt,menu_repeat,menu_time_check,call_time_id,track_in_vdac,custom_dialplan_entry) SELECT \"$menu_id\",\"$menu_name\",menu_prompt,menu_timeout,menu_timeout_prompt,menu_invalid_prompt,menu_repeat,menu_time_check,call_time_id,track_in_vdac,custom_dialplan_entry from vicidial_call_menu where menu_id=\"$source_menu\";"; + $stmt="INSERT INTO vicidial_call_menu (menu_id,menu_name,menu_prompt,menu_timeout,menu_timeout_prompt,menu_invalid_prompt,menu_repeat,menu_time_check,call_time_id,track_in_vdac,custom_dialplan_entry,tracking_group) SELECT \"$menu_id\",\"$menu_name\",menu_prompt,menu_timeout,menu_timeout_prompt,menu_invalid_prompt,menu_repeat,menu_time_check,call_time_id,track_in_vdac,custom_dialplan_entry,tracking_group from vicidial_call_menu where menu_id=\"$source_menu\";"; $rslt=mysql_query($stmt, $link); $stmtA="INSERT INTO vicidial_call_menu_options (menu_id,option_value,option_description,option_route,option_route_value,option_route_value_context) SELECT \"$menu_id\",option_value,option_description,option_route,option_route_value,option_route_value_context from vicidial_call_menu_options where menu_id='$source_menu';"; @@ -11233,7 +11242,7 @@ if ($ADD==4511) { echo "
CALL MENU MODIFIED: $menu_id\n"; - $stmt="UPDATE vicidial_call_menu set menu_name='$menu_name',menu_prompt='$menu_prompt',menu_timeout='$menu_timeout',menu_timeout_prompt='$menu_timeout_prompt',menu_invalid_prompt='$menu_invalid_prompt',menu_repeat='$menu_repeat',menu_time_check='$menu_time_check',call_time_id='$call_time_id',track_in_vdac='$track_in_vdac',custom_dialplan_entry='$custom_dialplan_entry' where menu_id='$menu_id';"; + $stmt="UPDATE vicidial_call_menu set menu_name='$menu_name',menu_prompt='$menu_prompt',menu_timeout='$menu_timeout',menu_timeout_prompt='$menu_timeout_prompt',menu_invalid_prompt='$menu_invalid_prompt',menu_repeat='$menu_repeat',menu_time_check='$menu_time_check',call_time_id='$call_time_id',track_in_vdac='$track_in_vdac',custom_dialplan_entry='$custom_dialplan_entry',tracking_group='$tracking_group' where menu_id='$menu_id';"; $rslt=mysql_query($stmt, $link); $h=0; @@ -17911,7 +17920,7 @@ if ($ADD==3511) echo "
\n"; echo ""; - $stmt="SELECT menu_name,menu_prompt,menu_timeout,menu_timeout_prompt,menu_invalid_prompt,menu_repeat,menu_time_check,call_time_id,track_in_vdac,custom_dialplan_entry from vicidial_call_menu where menu_id='$menu_id';"; + $stmt="SELECT menu_name,menu_prompt,menu_timeout,menu_timeout_prompt,menu_invalid_prompt,menu_repeat,menu_time_check,call_time_id,track_in_vdac,custom_dialplan_entry,tracking_group from vicidial_call_menu where menu_id='$menu_id';"; $rslt=mysql_query($stmt, $link); $row=mysql_fetch_row($rslt); $menu_name = $row[0]; @@ -17924,6 +17933,7 @@ if ($ADD==3511) $call_time_id = $row[7]; $track_in_vdac = $row[8]; $custom_dialplan_entry= $row[9]; + $tracking_group = $row[10]; echo "
MODIFY A CALL MENU RECORD: $menu_id
\n"; @@ -17932,10 +17942,10 @@ if ($ADD==3511) echo "
\n"; echo "\n"; echo "\n"; - echo "\n"; + echo "\n"; echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; echo "\n"; echo "\n"; + echo "\n"; + echo "\n"; echo "\n";
Menu ID: $menu_id $NWB#vicidial_call_menu-menu_id$NWE
Menu Name: $NWB#vicidial_call_menu-menu_name$NWE
Menu Prompt: audio chooser $NWB#vicidial_call_menu-menu_prompt$NWE
Menu Prompt: audio chooser $NWB#vicidial_call_menu-menu_prompt$NWE
Menu Timeout: $NWB#vicidial_call_menu-menu_timeout$NWE
Menu Timeout Prompt: audio chooser $NWB#vicidial_call_menu-menu_timeout_prompt$NWE
Menu Invalid Prompt: audio chooser $NWB#vicidial_call_menu-menu_invalid_prompt$NWE
Menu Timeout Prompt: audio chooser $NWB#vicidial_call_menu-menu_timeout_prompt$NWE
Menu Invalid Prompt: audio chooser $NWB#vicidial_call_menu-menu_invalid_prompt$NWE
Menu Repeat: $NWB#vicidial_call_menu-menu_repeat$NWE
Menu Time Check: $NWB#vicidial_call_menu-track_in_vdac$NWE
Tracking Group: $NWB#vicidial_call_menu-tracking_group$NWE
Call Menu Options: