diff --git a/UPGRADE b/UPGRADE index 19595ecc..0006c4c4 100644 --- a/UPGRADE +++ b/UPGRADE @@ -32,6 +32,8 @@ NOTE: Upgrading from 1.1.12-3 to 2.0.1 is at the bottom 8. You can now use BLEND/INBND/*_C/*_B/*_I to define a campaign a a CLOSER campaign capable of taking inbound calls. +9. IN PROCESS- Adding ability to dial alternate numbers per lead in auto-dial + mode. diff --git a/bin/AST_VDauto_dial.pl b/bin/AST_VDauto_dial.pl index 063279c2..af254733 100644 --- a/bin/AST_VDauto_dial.pl +++ b/bin/AST_VDauto_dial.pl @@ -54,7 +54,8 @@ # 61113-1625 - added code for clearing VDAC LIVE jams # 61115-1725 - added OUTBALANCE to call calculation for call_type for balance dialing # 70111-1600 - added ability to use BLEND/INBND/*_C/*_B/*_I as closer campaigns -# +# 70115-1635 - added auto-alt-dial functionality +# ### begin parsing run-time options ### @@ -247,6 +248,7 @@ while($one_day_interval > 0) @DBIPlivecalls=@MT; @DBIPclosercamp=@MT; @DBIPomitcode=@MT; + @DBIPautoaltdial=@MT; @DBIPtrunk_shortage=@MT; @DBIPold_trunk_shortage=@MT; @DBIPserver_trunks_limit=@MT; @@ -376,7 +378,7 @@ while($one_day_interval > 0) ### grab the dial_level and multiply by active agents to get your goalcalls $DBIPadlevel[$user_CIPct]=0; - $stmtA = "SELECT auto_dial_level,local_call_time,dial_timeout,dial_prefix,campaign_cid,active,campaign_vdad_exten,closer_campaigns,omit_phone_code,available_only_ratio_tally FROM vicidial_campaigns where campaign_id='$DBIPcampaign[$user_CIPct]'"; + $stmtA = "SELECT auto_dial_level,local_call_time,dial_timeout,dial_prefix,campaign_cid,active,campaign_vdad_exten,closer_campaigns,omit_phone_code,available_only_ratio_tally,auto_alt_dial FROM vicidial_campaigns where campaign_id='$DBIPcampaign[$user_CIPct]'"; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthArows=$sthA->rows; @@ -402,6 +404,7 @@ while($one_day_interval > 0) $DBIPcount[$user_CIPct] = $DBIPACTIVEcount[$user_CIPct]; $active_only=1; } + $DBIPautoaltdial[$user_CIPct] = "$aryA[10]"; $rec_count++; } $sthA->finish(); @@ -616,7 +619,7 @@ while($one_day_interval > 0) $lead_id=''; $phone_code=''; $phone_number=''; $called_count=''; while ($call_CMPIPct < $UDaffected_rows) { - $stmtA = "SELECT lead_id FROM vicidial_hopper where campaign_id='$DBIPcampaign[$user_CIPct]' and status='QUEUE' and user='VDAD_$server_ip' LIMIT 1"; + $stmtA = "SELECT lead_id,alt_dial FROM vicidial_hopper where campaign_id='$DBIPcampaign[$user_CIPct]' and status='QUEUE' and user='VDAD_$server_ip' LIMIT 1"; print "|$stmtA|\n"; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; @@ -627,6 +630,7 @@ while($one_day_interval > 0) { @aryA = $sthA->fetchrow_array; $lead_id = "$aryA[0]"; + $alt_dial = "$aryA[1]"; $rec_count++; } $sthA->finish(); @@ -662,6 +666,8 @@ while($one_day_interval > 0) $called_since_last_reset = "$aryA[9]"; $phone_code = "$aryA[10]"; $phone_number = "$aryA[11]"; + $address3 = "$aryA[18]"; + $alt_phone = "$aryA[26]"; $called_count = "$aryA[30]"; $rec_countCUSTDATA++; @@ -685,7 +691,24 @@ while($one_day_interval > 0) } else {$CSLR = 'Y';} - $stmtA = "UPDATE vicidial_list set called_since_last_reset='$CSLR', called_count='$called_count',user='VDAD' where lead_id='$lead_id'"; + if ( ($alt_dial =~ /ALT|ADDR3/) && ($DBIPautoaltdial[$user_CIPct] =~ /ALT|ADDR/) ) + { + if ( ($alt_dial =~ /ALT/) && ($DBIPautoaltdial[$user_CIPct] =~ /ALT/) ) + { + $alt_phone =~ s/\D//gi; + $phone_number = $alt_phone; + } + if ( ($alt_dial =~ /ADDR3/) && ($DBIPautoaltdial[$user_CIPct] =~ /ADDR3/) ) + { + $address3 =~ s/\D//gi; + $phone_number = $address3; + } + $stmtA = "UPDATE vicidial_list set called_since_last_reset='$CSLR',user='VDAD' where lead_id='$lead_id'"; + } + else + { + $stmtA = "UPDATE vicidial_list set called_since_last_reset='$CSLR', called_count='$called_count',user='VDAD' where lead_id='$lead_id'"; + } $affected_rows = $dbhA->do($stmtA); $stmtA = "DELETE FROM vicidial_hopper where lead_id='$lead_id'"; @@ -729,11 +752,11 @@ while($one_day_interval > 0) $stmtA = "INSERT INTO vicidial_manager values('','','$SQLdate','NEW','N','$DBIPaddress[$user_CIPct]','','Originate','$VqueryCID','Exten: $VDAD_dial_exten','Context: $ext_context','Channel: $local_DEF$Ndialstring$local_AMP$ext_context','Priority: 1','Callerid: $CIDstring','Timeout: $Local_dial_timeout','','','','')"; $affected_rows = $dbhA->do($stmtA); - $event_string = "| number call dialed|$DBIPcampaign[$user_CIPct]|$VqueryCID|$stmtA|$gmt_offset_now|"; + $event_string = "| number call dialed|$DBIPcampaign[$user_CIPct]|$VqueryCID|$stmtA|$gmt_offset_now|$alt_dial|"; &event_logger; ### insert a SENT record to the vicidial_auto_calls table - $stmtA = "INSERT INTO vicidial_auto_calls (server_ip,campaign_id,status,lead_id,callerid,phone_code,phone_number,call_time,call_type) values('$DBIPaddress[$user_CIPct]','$DBIPcampaign[$user_CIPct]','SENT','$lead_id','$VqueryCID','$phone_code','$phone_number','$SQLdate','OUT')"; + $stmtA = "INSERT INTO vicidial_auto_calls (server_ip,campaign_id,status,lead_id,callerid,phone_code,phone_number,call_time,call_type,alt_dial) values('$DBIPaddress[$user_CIPct]','$DBIPcampaign[$user_CIPct]','SENT','$lead_id','$VqueryCID','$phone_code','$phone_number','$SQLdate','OUT','$alt_dial')"; $affected_rows = $dbhA->do($stmtA); ### sleep for a tenth of a second to not flood the server with new calls diff --git a/docs/ALTERNATE_NUMBER_DIALING.txt b/docs/ALTERNATE_NUMBER_DIALING.txt index b89fe49e..010739d5 100644 --- a/docs/ALTERNATE_NUMBER_DIALING.txt +++ b/docs/ALTERNATE_NUMBER_DIALING.txt @@ -13,7 +13,7 @@ First, a new field in vicidial_campaigns was needed to tell the dialer that it s ALTER TABLE vicidial_campaigns ADD auto_alt_dial ENUM('NONE','ALT_ONLY','ADDR3_ONLY','ALT_AND_ADDR3') default 'NONE'; -Second, a new field in vicidial_auto_calls was needed to tell the dialer that when this call is terminated as no-contact(NA/B/DC/N), it needs to try dialing the next alternate number(s). This field is populated accordingly: +Second, a new field in vicidial_auto_calls and vicidial_hopper tables was needed to tell the dialer that when this call is terminated as no-contact(NA/B/DC/N), it needs to try dialing the next alternate number(s). This field is populated accordingly: - If the main phone_number is currently being dialed, the alt_dial field will be MAIN - If the alt_phone is being dialed, ALT - If the address3 field is being dialed, ADDR3 @@ -21,8 +21,13 @@ Second, a new field in vicidial_auto_calls was needed to tell the dialer that wh This tells the scripts handling the call termination what needs to be done with the call status and what number(if any) it should place in the hopper next. ALTER TABLE vicidial_auto_calls ADD alt_dial ENUM('NONE','MAIN','ALT','ADDR3') default 'NONE'; +ALTER TABLE vicidial_hopper ADD alt_dial ENUM('NONE','ALT','ADDR3') default 'NONE'; +Third, because of how the insertion into the hopper of the next attempt has to work when the call is answered by an agent we need to modify the status field in the vicidial_hopper to allow for a HOLD status that can be made READY once the lead is dispositioned: + +ALTER TABLE vicidial_hopper MODIFY status ENUM('READY','QUEUE','INCALL','DONE','HOLD') default 'READY'; + diff --git a/extras/MySQL_AST_CREATE_tables.sql b/extras/MySQL_AST_CREATE_tables.sql index 95956afb..b5d2b7e0 100644 --- a/extras/MySQL_AST_CREATE_tables.sql +++ b/extras/MySQL_AST_CREATE_tables.sql @@ -279,11 +279,12 @@ index (postal_code) hopper_id INT(9) UNSIGNED AUTO_INCREMENT PRIMARY KEY UNIQUE NOT NULL, lead_id INT(9) UNSIGNED NOT NULL, campaign_id VARCHAR(8), -status ENUM('READY','QUEUE','INCALL','DONE') default 'READY', +status ENUM('READY','QUEUE','INCALL','DONE','HOLD') default 'READY', user VARCHAR(20), list_id BIGINT(14) UNSIGNED NOT NULL, gmt_offset_now DECIMAL(4,2) DEFAULT '0.00', state VARCHAR(2) default '', +alt_dial ENUM('NONE','ALT','ADDR3') default 'NONE', index (lead_id) ); @@ -327,6 +328,7 @@ call_time DATETIME, call_type ENUM('IN','OUT','OUTBALANCE') default 'OUT', stage VARCHAR(20) default 'START', last_update_time TIMESTAMP, +alt_dial ENUM('NONE','MAIN','ALT','ADDR3') default 'NONE', index (uniqueid), index (callerid), index (call_time), @@ -494,7 +496,8 @@ adaptive_maximum_level VARCHAR(6) default '3.0', adaptive_latest_server_time VARCHAR(4) default '2100', adaptive_intensity VARCHAR(6) default '0', adaptive_dl_diff_target SMALLINT(3) default '0', -concurrent_transfers ENUM('AUTO','1','2','3','4','5','6','7','8','9','10') default 'AUTO' +concurrent_transfers ENUM('AUTO','1','2','3','4','5','6','7','8','9','10') default 'AUTO', +auto_alt_dial ENUM('NONE','ALT_ONLY','ADDR3_ONLY','ALT_AND_ADDR3') default 'NONE' ); CREATE TABLE vicidial_lists ( diff --git a/extras/upgrade_2.0.3.sql b/extras/upgrade_2.0.3.sql index 22a38a9e..9d01423b 100644 --- a/extras/upgrade_2.0.3.sql +++ b/extras/upgrade_2.0.3.sql @@ -1 +1,8 @@ ALTER TABLE vicidial_campaigns ADD concurrent_transfers ENUM('AUTO','1','2','3','4','5','6','7','8','9','10') default 'AUTO'; +ALTER TABLE vicidial_campaigns ADD auto_alt_dial ENUM('NONE','ALT_ONLY','ADDR3_ONLY','ALT_AND_ADDR3') default 'NONE'; + +ALTER TABLE vicidial_auto_calls ADD alt_dial ENUM('NONE','MAIN','ALT','ADDR3') default 'NONE'; + +ALTER TABLE vicidial_hopper ADD alt_dial ENUM('NONE','ALT','ADDR3') default 'NONE'; +ALTER TABLE vicidial_hopper MODIFY status ENUM('READY','QUEUE','INCALL','DONE','HOLD') default 'READY'; + diff --git a/translations/raw_translation_files/TO_BE_TRANSLATED_2.0.3.txt b/translations/raw_translation_files/TO_BE_TRANSLATED_2.0.3.txt index a7e8cb3b..c2639116 100644 --- a/translations/raw_translation_files/TO_BE_TRANSLATED_2.0.3.txt +++ b/translations/raw_translation_files/TO_BE_TRANSLATED_2.0.3.txt @@ -5,6 +5,8 @@ The ADAPT OVERRIDE checkbox allows you to force a new dial level even though the There are two special HotKey options that you can use in conjunction with Alternate Phone number dialing, ALTPH2 - Alternate Phone Hot Dial and ADDR3-----Address3 Hot Dial allow an agent to use a hotkey to hangup their call, stay on the same lead, and dial another contact number from that lead.|| Concurrent Transfers|| Concurrent Transfers -<\/B> This setting is used to define the number of calls that can be sent to agents at the same time. It is recommended that this setting is left at AUTO. This field is not used by the MANUAL dial method|| +Auto Alt-Number Dialing -<\/B> This setting is used to automatically dial alternate number fields while dialing in the RATIO and ADAPT dial methods when there is no contact at the main phone number for a lead, the NA, B, DC and N statuses. This setting is not used by the MANUAL dial method|| +Auto Alt-Number Dialing|| ############################################################ CLIENT diff --git a/www/agc/vdc_db_query.php b/www/agc/vdc_db_query.php index cbbdac7e..d6a300d2 100644 --- a/www/agc/vdc_db_query.php +++ b/www/agc/vdc_db_query.php @@ -110,11 +110,12 @@ # 60821-1647 - Added ability to not delete sessions at logout # 60906-1124 - Added lookup and sending of callback data for CALLBK calls # 61128-2229 - Added vicidial_live_agents and vicidial_auto_calls manual dial entries -# 70111-1600 - added ability to use BLEND/INBND/*_C/*_B/*_I as closer campaigns +# 70111-1600 - Added ability to use BLEND/INBND/*_C/*_B/*_I as closer campaigns +# 70115-1733 - Added alt_dial functionality in auto-dial modes # -$version = '2.0.38'; -$build = '61128-2229'; +$version = '2.0.39'; +$build = '70115-1733'; require("dbconnect.php"); @@ -376,7 +377,7 @@ if ($ACTION == 'manDiaLnextCaLL') else { ### check if this is a callback, if it is, skip the grabbing of a new lead and mark the callback as INACTIVE - if ( (strlen($callback_id)>0) && (strlen($lead_id)>0) ) + if ( (strlen($callback_id)>0) and (strlen($lead_id)>0) ) { $affected_rows=1; $CBleadIDset=1; @@ -879,6 +880,79 @@ if ($stage == "end") } if ($auto_dial_level > 0) { + ### check to see if campaign has alt_dial enabled + $stmt="SELECT auto_alt_dial FROM vicidial_campaigns where campaign_id='$campaign';"; + $rslt=mysql_query($stmt, $link); + if ($DB) {echo "$stmt\n";} + $VAC_mancall_ct = mysql_num_rows($rslt); + if ($VAC_mancall_ct > 0) + { + $row=mysql_fetch_row($rslt); + $auto_alt_dial =$row[0]; + } + else {$auto_alt_dial = 'NONE';} + if (eregi("(ALT_ONLY|ADDR3_ONLY|ALT_AND_ADDR3)",$auto_alt_dial)) + { + ### check to see if lead should be alt_dialed + $stmt="SELECT alt_dial FROM vicidial_auto_calls where lead_id='$lead_id';"; + $rslt=mysql_query($stmt, $link); + if ($DB) {echo "$stmt\n";} + $VAC_mancall_ct = mysql_num_rows($rslt); + if ($VAC_mancall_ct > 0) + { + $row=mysql_fetch_row($rslt); + $alt_dial =$row[0]; + } + else {$alt_dial = 'NONE';} + + if ( (eregi("(NONE|MAIN)",$alt_dial)) and (eregi("(ALT_ONLY|ADDR3_ONLY|ALT_AND_ADDR3)",$auto_alt_dial)) ) + { + $stmt="SELECT alt_phone,gmt_offset_now,state FROM vicidial_list where lead_id='$lead_id';"; + $rslt=mysql_query($stmt, $link); + if ($DB) {echo "$stmt\n";} + $VAC_mancall_ct = mysql_num_rows($rslt); + if ($VAC_mancall_ct > 0) + { + $row=mysql_fetch_row($rslt); + $alt_phone = $row[0]; + $alt_phone = eregi_replace("[^0-9]","",$alt_phone); + $gmt_offset_now = $row[1]; + $state = $row[2]; + } + else {$alt_phone = '';} + if (strlen($alt_phone)>5) + { + ### insert record into vicidial_hopper for address3 call attempt + $stmt = "INSERT INTO vicidial_hopper SET lead_id='$lead_id',campaign_id='$campaign',status='HOLD',list_id='$list_id',gmt_offset_now='$gmt_offset_now',state='$state',alt_dial='ALT',user='';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_query($stmt, $link); + } + } + if ( (eregi("(ALT)",$alt_dial)) and (eregi("(ADDR3_ONLY|ALT_AND_ADDR3)",$auto_alt_dial)) ) + { + $stmt="SELECT address3,gmt_offset_now,state FROM vicidial_list where lead_id='$lead_id';"; + $rslt=mysql_query($stmt, $link); + if ($DB) {echo "$stmt\n";} + $VAC_mancall_ct = mysql_num_rows($rslt); + if ($VAC_mancall_ct > 0) + { + $row=mysql_fetch_row($rslt); + $address3 = $row[0]; + $address3 = eregi_replace("[^0-9]","",$address3); + $gmt_offset_now = $row[1]; + $state = $row[2]; + } + else {$address3 = '';} + if (strlen($address3)>5) + { + ### insert record into vicidial_hopper for address3 call attempt + $stmt = "INSERT INTO vicidial_hopper SET lead_id='$lead_id',campaign_id='$campaign',status='HOLD',list_id='$list_id',gmt_offset_now='$gmt_offset_now',state='$state',alt_dial='ADDR3',user='';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_query($stmt, $link); + } + } + } + ### delete call record from vicidial_auto_calls $stmt = "DELETE from vicidial_auto_calls where uniqueid='$uniqueid';"; if ($DB) {echo "$stmt\n";} @@ -1464,6 +1538,20 @@ if ($ACTION == 'updateDISPO') if ($DB) {echo "$stmt\n";} $rslt=mysql_query($stmt, $link); } + if ( ($auto_dial_level > 0) and ( ($dispo_choice=='N') or ($dispo_choice=='B') or ($dispo_choice=='DC') ) ) + { + $stmt = "select count(*) from vicidial_hopper where lead_id='$lead_id' and status='HOLD';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_query($stmt, $link); + $row=mysql_fetch_row($rslt); + + if ($row[0] > 0) + { + $stmt="UPDATE vicidial_hopper set status='READY' where lead_id='$lead_id' and status='HOLD' limit 1;"; + if ($format=='debug') {echo "\n";} + $rslt=mysql_query($stmt, $link); + } + } echo 'Lead ' . $lead_id . ' has been changed to ' . $dispo_choice . " Status\nNext agent_log_id:\n" . $agent_log_id . "\n"; } diff --git a/www/agc/vicidial.php b/www/agc/vicidial.php index 1f2b1cca..288f8a05 100644 --- a/www/agc/vicidial.php +++ b/www/agc/vicidial.php @@ -2331,7 +2331,7 @@ if ($enable_fast_refresh < 1) {echo "\tvar refresh_interval = 1000;\n";} "&list_id=" + document.vicidial_form.list_id.value + "&length_in_sec=0&phone_code=" + document.vicidial_form.phone_code.value + "&phone_number=" + lead_dial_number + - "&exten=" + extension + "&channel=" + lastcustchannel + "&start_epoch=" + MDlogEPOCH + "&auto_dial_level=" + auto_dial_level + "&VDstop_rec_after_each_call=" + VDstop_rec_after_each_call + "&conf_silent_prefix=" + conf_silent_prefix + "&protocol=" + protocol + "&extension=" + extension + "&ext_context=" + ext_context + "&conf_exten=" + session_id + "&user_abb=" + user_abb + "&agent_log_id=" + agent_log_id; + "&exten=" + extension + "&channel=" + lastcustchannel + "&start_epoch=" + MDlogEPOCH + "&auto_dial_level=" + auto_dial_level + "&VDstop_rec_after_each_call=" + VDstop_rec_after_each_call + "&conf_silent_prefix=" + conf_silent_prefix + "&protocol=" + protocol + "&extension=" + extension + "&ext_context=" + ext_context + "&conf_exten=" + session_id + "&user_abb=" + user_abb + "&agent_log_id=" + agent_log_id + "&DB=0"; xmlhttp.open('POST', 'vdc_db_query.php'); xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8'); // document.getElementById("busycallsdebug").innerHTML = "vdc_db_query.php?" + manDiaLlog_query; diff --git a/www/vicidial/AST_VICIDIAL_hopperlist.php b/www/vicidial/AST_VICIDIAL_hopperlist.php index feaae790..a20944a2 100644 --- a/www/vicidial/AST_VICIDIAL_hopperlist.php +++ b/www/vicidial/AST_VICIDIAL_hopperlist.php @@ -7,7 +7,8 @@ # # 60619-1654 - Added variable filtering to eliminate SQL injection attack threat # - Added required user/pass to gain access to this page -# +# 70115-1614 - Added ALT field for vicidial_hopper alt_dial column +# require("dbconnect.php"); @@ -122,11 +123,11 @@ echo "Total leads in hopper right now: $TOTALcalls\n"; echo "\n"; echo "---------- LEADS IN HOPPER\n"; -echo "+------+-----------+------------+-------+--------+-------+--------+\n"; -echo "| | LEAD_ID | PHONE NUM | STATE | STATUS | COUNT | GMT |\n"; -echo "+------+-----------+------------+-------+--------+-------+--------+\n"; +echo "+------+-----------+------------+-------+--------+-------+--------+-------+\n"; +echo "| | LEAD_ID | PHONE NUM | STATE | STATUS | COUNT | GMT | ALT |\n"; +echo "+------+-----------+------------+-------+--------+-------+--------+-------+\n"; -$stmt="select vicidial_hopper.lead_id,phone_number,vicidial_hopper.state,vicidial_list.status,called_count,vicidial_hopper.gmt_offset_now,hopper_id from vicidial_hopper,vicidial_list where vicidial_hopper.campaign_id='" . mysql_real_escape_string($group) . "' and vicidial_hopper.lead_id=vicidial_list.lead_id order by hopper_id limit 2000;"; +$stmt="select vicidial_hopper.lead_id,phone_number,vicidial_hopper.state,vicidial_list.status,called_count,vicidial_hopper.gmt_offset_now,hopper_id,alt_dial from vicidial_hopper,vicidial_list where vicidial_hopper.campaign_id='" . mysql_real_escape_string($group) . "' and vicidial_hopper.lead_id=vicidial_list.lead_id order by hopper_id limit 2000;"; $rslt=mysql_query($stmt, $link); if ($DB) {echo "$stmt\n";} $users_to_print = mysql_num_rows($rslt); @@ -143,14 +144,15 @@ while ($i < $users_to_print) $count = sprintf("%-5s", $row[4]); $gmt = sprintf("%-6s", $row[5]); $hopper_id = sprintf("%-6s", $row[6]); + $alt_dial = sprintf("%-5s", $row[7]); if ($DB) {echo "| $FMT_i | $lead_id | $phone_number | $state | $status | $count | $gmt | $hopper_id |\n";} -else {echo "| $FMT_i | $lead_id | $phone_number | $state | $status | $count | $gmt |\n";} +else {echo "| $FMT_i | $lead_id | $phone_number | $state | $status | $count | $gmt | $alt_dial |\n";} $i++; } -echo "+------+-----------+------------+-------+--------+-------+--------+\n"; +echo "+------+-----------+------------+-------+--------+-------+--------+-------+\n"; } diff --git a/www/vicidial/admin.php b/www/vicidial/admin.php index fda133ce..36ee0754 100644 --- a/www/vicidial/admin.php +++ b/www/vicidial/admin.php @@ -464,6 +464,8 @@ if (isset($_GET["dial_level_override"])) {$dial_level_override=$_GET["dial_lev elseif (isset($_POST["dial_level_override"])) {$dial_level_override=$_POST["dial_level_override"];} if (isset($_GET["concurrent_transfers"])) {$concurrent_transfers=$_GET["concurrent_transfers"];} elseif (isset($_POST["concurrent_transfers"])) {$concurrent_transfers=$_POST["concurrent_transfers"];} +if (isset($_GET["auto_alt_dial"])) {$auto_alt_dial=$_GET["auto_alt_dial"];} + elseif (isset($_POST["auto_alt_dial"])) {$auto_alt_dial=$_POST["auto_alt_dial"];} @@ -670,6 +672,7 @@ $trunk_restriction = ereg_replace("[^-\_0-9a-zA-Z]","",$trunk_restriction); $user = ereg_replace("[^-\_0-9a-zA-Z]","",$user); $user_group = ereg_replace("[^-\_0-9a-zA-Z]","",$user_group); $VICIDIAL_park_on_filename = ereg_replace("[^-\_0-9a-zA-Z]","",$VICIDIAL_park_on_filename); +$auto_alt_dial = ereg_replace("[^-\_0-9a-zA-Z]","",$auto_alt_dial); ### ALPHA-NUMERIC and spaces $lead_order = ereg_replace("[^ 0-9a-zA-Z]","",$lead_order); @@ -807,11 +810,13 @@ $lead_filter_sql = ereg_replace(";","",$lead_filter_sql); # 70109-1638 - Added ALTPH2 and ADDR3 hotkey options for alt number dialing with HotKeys # 70109-1716 - Added concurrent_transfers option to vicidial_campaigns # 70115-1152 - Aded (CLOSER|BLEND|INBND|_C$|_B$|_I$) options for CLOSER-type campaigns +# 70115-1532 - Added auto_alt_dial field to campaign screen for auto-dialing of alt numbers +# # 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 -$version = '2.0.76'; -$build = '70109-1716'; +$version = '2.0.77'; +$build = '70115-1532'; $STARTtime = date("U"); @@ -1554,6 +1559,11 @@ echo "
Concurrent Transfers - This setting is used to define the number of calls that can be sent to agents at the same time. It is recommended that this setting is left at AUTO. This field is not used by the MANUAL dial method. +
+ +
+Auto Alt-Number Dialing - This setting is used to automatically dial alternate number fields while dialing in the RATIO and ADAPT dial methods when there is no contact at the main phone number for a lead, the NA, B, DC and N statuses. This setting is not used by the MANUAL dial method. +

@@ -4180,7 +4190,7 @@ if ($ADD==41) } } } - $stmtA="UPDATE vicidial_campaigns set campaign_name='$campaign_name',active='$active',dial_status_a='$dial_status_a',dial_status_b='$dial_status_b',dial_status_c='$dial_status_c',dial_status_d='$dial_status_d',dial_status_e='$dial_status_e',lead_order='$lead_order',allow_closers='$allow_closers',hopper_level='$hopper_level', $adlSQL next_agent_call='$next_agent_call', local_call_time='$local_call_time', voicemail_ext='$voicemail_ext', dial_timeout='$dial_timeout', dial_prefix='$dial_prefix', campaign_cid='$campaign_cid', campaign_vdad_exten='$campaign_vdad_exten', web_form_address='" . mysql_real_escape_string($web_form_address) . "', park_ext='$park_ext', park_file_name='$park_file_name', campaign_rec_exten='$campaign_rec_exten', campaign_recording='$campaign_recording', campaign_rec_filename='$campaign_rec_filename', campaign_script='$script_id', get_call_launch='$get_call_launch', am_message_exten='$am_message_exten', amd_send_to_vmx='$amd_send_to_vmx', xferconf_a_dtmf='$xferconf_a_dtmf',xferconf_a_number='$xferconf_a_number', xferconf_b_dtmf='$xferconf_b_dtmf',xferconf_b_number='$xferconf_b_number',lead_filter_id='$lead_filter_id',alt_number_dialing='$alt_number_dialing',scheduled_callbacks='$scheduled_callbacks',safe_harbor_message='$safe_harbor_message',drop_call_seconds='$drop_call_seconds',safe_harbor_exten='$safe_harbor_exten',wrapup_seconds='$wrapup_seconds',wrapup_message='$wrapup_message',closer_campaigns='$groups_value',use_internal_dnc='$use_internal_dnc',allcalls_delay='$allcalls_delay',omit_phone_code='$omit_phone_code',dial_method='$dial_method',available_only_ratio_tally='$available_only_ratio_tally',adaptive_dropped_percentage='$adaptive_dropped_percentage',adaptive_maximum_level='$adaptive_maximum_level',adaptive_latest_server_time='$adaptive_latest_server_time',adaptive_intensity='$adaptive_intensity',adaptive_dl_diff_target='$adaptive_dl_diff_target',concurrent_transfers='$concurrent_transfers' where campaign_id='$campaign_id';"; + $stmtA="UPDATE vicidial_campaigns set campaign_name='$campaign_name',active='$active',dial_status_a='$dial_status_a',dial_status_b='$dial_status_b',dial_status_c='$dial_status_c',dial_status_d='$dial_status_d',dial_status_e='$dial_status_e',lead_order='$lead_order',allow_closers='$allow_closers',hopper_level='$hopper_level', $adlSQL next_agent_call='$next_agent_call', local_call_time='$local_call_time', voicemail_ext='$voicemail_ext', dial_timeout='$dial_timeout', dial_prefix='$dial_prefix', campaign_cid='$campaign_cid', campaign_vdad_exten='$campaign_vdad_exten', web_form_address='" . mysql_real_escape_string($web_form_address) . "', park_ext='$park_ext', park_file_name='$park_file_name', campaign_rec_exten='$campaign_rec_exten', campaign_recording='$campaign_recording', campaign_rec_filename='$campaign_rec_filename', campaign_script='$script_id', get_call_launch='$get_call_launch', am_message_exten='$am_message_exten', amd_send_to_vmx='$amd_send_to_vmx', xferconf_a_dtmf='$xferconf_a_dtmf',xferconf_a_number='$xferconf_a_number', xferconf_b_dtmf='$xferconf_b_dtmf',xferconf_b_number='$xferconf_b_number',lead_filter_id='$lead_filter_id',alt_number_dialing='$alt_number_dialing',scheduled_callbacks='$scheduled_callbacks',safe_harbor_message='$safe_harbor_message',drop_call_seconds='$drop_call_seconds',safe_harbor_exten='$safe_harbor_exten',wrapup_seconds='$wrapup_seconds',wrapup_message='$wrapup_message',closer_campaigns='$groups_value',use_internal_dnc='$use_internal_dnc',allcalls_delay='$allcalls_delay',omit_phone_code='$omit_phone_code',dial_method='$dial_method',available_only_ratio_tally='$available_only_ratio_tally',adaptive_dropped_percentage='$adaptive_dropped_percentage',adaptive_maximum_level='$adaptive_maximum_level',adaptive_latest_server_time='$adaptive_latest_server_time',adaptive_intensity='$adaptive_intensity',adaptive_dl_diff_target='$adaptive_dl_diff_target',concurrent_transfers='$concurrent_transfers',auto_alt_dial='$auto_alt_dial' where campaign_id='$campaign_id';"; $rslt=mysql_query($stmtA, $link); if ($reset_hopper == 'Y') @@ -6116,6 +6126,7 @@ echo "\n" echo "\n"; +echo "\n"; + echo "\n"; echo "
\n"; $adaptive_intensity = $row[51]; $adaptive_dl_diff_target = $row[52]; $concurrent_transfers = $row[53]; + $auto_alt_dial = $row[54]; echo "
MODIFY A CAMPAIGNS RECORD: $row[0] - Basic View"; echo " | Detail View | "; @@ -6255,6 +6266,8 @@ echo " $NWB#vicidial_campaigns-adaptive_dl_diff_target$NWE
Concurrent Transfers: $NWB#vicidial_campaigns-concurrent_transfers$NWE
Auto Alt-Number Dialing: $NWB#vicidial_campaigns-auto_alt_dial$NWE
Next Agent Call: $NWB#vicidial_campaigns-next_agent_call$NWE
Local Call Time: