diff --git a/UPGRADE b/UPGRADE
index d9fe55c8..d212235d 100644
--- a/UPGRADE
+++ b/UPGRADE
@@ -636,6 +636,15 @@ OTHER CHANGES:
177. Added compatibility with TILTX STIR/SHAKEN Call Shaper pre-carrier call
filtering service. Read the TILTX_SHAKEN_API.txt doc for more info.
+178. Added In-Group Drop Seconds Override Container, allowing for overriding of
+ the Drop Seconds setting based upon the day of the week and time of day.
+
+179. Added Inbound Manual Dial Agent Forced Ready features allowing for forcing
+ agents in INBOUND_MAN dial method campaigns to be in the READY state
+ (able to take inbound calls) for a set amount of time before they are
+ able to click on the DIAL NEXT NUMBER button each time. Also allows for
+ an override setting based upon the day of the week and time of day.
+
diff --git a/agi/agi-VDAD_ALL_inbound.agi b/agi/agi-VDAD_ALL_inbound.agi
index c00d60da..6eb30dee 100644
--- a/agi/agi-VDAD_ALL_inbound.agi
+++ b/agi/agi-VDAD_ALL_inbound.agi
@@ -243,6 +243,7 @@
# 201106-2146 - Added EXITEMPTY and CALLSTATUS queue_log entry for NANQUE calls
# 210103-1024 - Added agent_search_method override
# 210325-2200 - Added populate_lead_comments option
+# 210609-0941 - Added drop_call_seconds_override option
#
$script = 'agi-VDAD_ALL_inbound.agi';
@@ -288,6 +289,14 @@ $SQLdateBEGIN = $SQLdate;
$ORIGINAL_call_time = $SQLdate;
while (length($CIDdate) > 9) {$CIDdate =~ s/^.//gi;} # 0902235959 changed to 902235959
+if ($wday == '0') {$now_weekday = 'SUNDAY';}
+if ($wday == '1') {$now_weekday = 'MONDAY';}
+if ($wday == '2') {$now_weekday = 'TUESDAY';}
+if ($wday == '3') {$now_weekday = 'WEDNESDAY';}
+if ($wday == '4') {$now_weekday = 'THURSDAY';}
+if ($wday == '5') {$now_weekday = 'FRIDAY';}
+if ($wday == '6') {$now_weekday = 'SATURDAY';}
+
$BDtarget = ($now_date_epoch - 7);
($Bsec,$Bmin,$Bhour,$Bmday,$Bmon,$Byear,$Bwday,$Byday,$Bisdst) = localtime($BDtarget);
$Byear = ($Byear + 1900);
@@ -807,7 +816,7 @@ $affected_rows = $dbhA->do($stmtA);
### Grab inbound groups values from the database
$cbc=0;
-$stmtA = "SELECT call_time_id,after_hours_action,after_hours_message_filename,after_hours_exten,after_hours_voicemail,welcome_message_filename,moh_context,onhold_prompt_filename,prompt_interval,agent_alert_exten,agent_alert_delay,drop_call_seconds,drop_action,drop_exten,next_agent_call,voicemail_ext,queue_priority,drop_inbound_group,afterhours_xfer_group,play_place_in_line,play_estimate_hold_time,hold_time_option,hold_time_option_seconds,hold_time_option_exten,hold_time_option_voicemail,hold_time_option_xfer_group,hold_time_option_callback_filename,hold_time_option_callback_list_id,hold_recall_xfer_group,no_delay_call_route,play_welcome_message,no_agent_no_queue,no_agent_action,no_agent_action_value,extension_appended_cidname,uniqueid_status_display,uniqueid_status_prefix,hold_time_option_minimum,hold_time_option_press_filename,hold_time_option_callmenu,onhold_prompt_no_block,onhold_prompt_seconds,hold_time_option_no_block,hold_time_option_prompt_seconds,hold_time_second_option,hold_time_third_option,wait_hold_option_priority,wait_time_option,wait_time_second_option,wait_time_third_option,wait_time_option_seconds,wait_time_option_exten,wait_time_option_voicemail,wait_time_option_xfer_group,wait_time_option_callmenu,wait_time_option_callback_filename,wait_time_option_callback_list_id,wait_time_option_press_filename,wait_time_option_no_block,wait_time_option_prompt_seconds,active,calculate_estimated_hold_seconds,add_lead_url,eht_minimum_prompt_filename,eht_minimum_prompt_no_block,eht_minimum_prompt_seconds,on_hook_ring_time,ingroup_recording_override,ingroup_rec_filename,on_hook_cid,action_xfer_cid,drop_callmenu,after_hours_callmenu,max_calls_method,max_calls_count,max_calls_action,populate_lead_ingroup,na_call_url,drop_lead_reset,after_hours_lead_reset,nanq_lead_reset,wait_time_lead_reset,hold_time_lead_reset,routing_initiated_recordings,on_hook_cid_number,populate_lead_province,areacode_filter,areacode_filter_seconds,areacode_filter_action,areacode_filter_action_value,populate_state_areacode,inbound_survey,inbound_survey_filename,inbound_survey_accept_digit,closing_time_action,closing_time_now_trigger,closing_time_filename,closing_time_end_filename,closing_time_lead_reset,closing_time_option_exten,closing_time_option_callmenu,closing_time_option_voicemail,closing_time_option_xfer_group,closing_time_option_callback_list_id,add_lead_timezone,populate_lead_source,populate_lead_vendor,enter_ingroup_url,cid_cb_confirm_number,cid_cb_invalid_filter_phone_group,cid_cb_valid_length,cid_cb_valid_filename,cid_cb_confirmed_filename,cid_cb_enter_filename,cid_cb_you_entered_filename,cid_cb_press_to_confirm_filename,cid_cb_invalid_filename,cid_cb_reenter_filename,cid_cb_error_filename,place_in_line_caller_number_filename,place_in_line_you_next_filename,answer_signal,no_agent_delay,agent_search_method,populate_lead_comments FROM vicidial_inbound_groups where group_id = '$channel_group';";
+$stmtA = "SELECT call_time_id,after_hours_action,after_hours_message_filename,after_hours_exten,after_hours_voicemail,welcome_message_filename,moh_context,onhold_prompt_filename,prompt_interval,agent_alert_exten,agent_alert_delay,drop_call_seconds,drop_action,drop_exten,next_agent_call,voicemail_ext,queue_priority,drop_inbound_group,afterhours_xfer_group,play_place_in_line,play_estimate_hold_time,hold_time_option,hold_time_option_seconds,hold_time_option_exten,hold_time_option_voicemail,hold_time_option_xfer_group,hold_time_option_callback_filename,hold_time_option_callback_list_id,hold_recall_xfer_group,no_delay_call_route,play_welcome_message,no_agent_no_queue,no_agent_action,no_agent_action_value,extension_appended_cidname,uniqueid_status_display,uniqueid_status_prefix,hold_time_option_minimum,hold_time_option_press_filename,hold_time_option_callmenu,onhold_prompt_no_block,onhold_prompt_seconds,hold_time_option_no_block,hold_time_option_prompt_seconds,hold_time_second_option,hold_time_third_option,wait_hold_option_priority,wait_time_option,wait_time_second_option,wait_time_third_option,wait_time_option_seconds,wait_time_option_exten,wait_time_option_voicemail,wait_time_option_xfer_group,wait_time_option_callmenu,wait_time_option_callback_filename,wait_time_option_callback_list_id,wait_time_option_press_filename,wait_time_option_no_block,wait_time_option_prompt_seconds,active,calculate_estimated_hold_seconds,add_lead_url,eht_minimum_prompt_filename,eht_minimum_prompt_no_block,eht_minimum_prompt_seconds,on_hook_ring_time,ingroup_recording_override,ingroup_rec_filename,on_hook_cid,action_xfer_cid,drop_callmenu,after_hours_callmenu,max_calls_method,max_calls_count,max_calls_action,populate_lead_ingroup,na_call_url,drop_lead_reset,after_hours_lead_reset,nanq_lead_reset,wait_time_lead_reset,hold_time_lead_reset,routing_initiated_recordings,on_hook_cid_number,populate_lead_province,areacode_filter,areacode_filter_seconds,areacode_filter_action,areacode_filter_action_value,populate_state_areacode,inbound_survey,inbound_survey_filename,inbound_survey_accept_digit,closing_time_action,closing_time_now_trigger,closing_time_filename,closing_time_end_filename,closing_time_lead_reset,closing_time_option_exten,closing_time_option_callmenu,closing_time_option_voicemail,closing_time_option_xfer_group,closing_time_option_callback_list_id,add_lead_timezone,populate_lead_source,populate_lead_vendor,enter_ingroup_url,cid_cb_confirm_number,cid_cb_invalid_filter_phone_group,cid_cb_valid_length,cid_cb_valid_filename,cid_cb_confirmed_filename,cid_cb_enter_filename,cid_cb_you_entered_filename,cid_cb_press_to_confirm_filename,cid_cb_invalid_filename,cid_cb_reenter_filename,cid_cb_error_filename,place_in_line_caller_number_filename,place_in_line_you_next_filename,answer_signal,no_agent_delay,agent_search_method,populate_lead_comments,drop_call_seconds_override FROM vicidial_inbound_groups where group_id = '$channel_group';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
@@ -947,6 +956,7 @@ if ($sthArows > 0)
$no_agent_delay = $aryA[122];
$agent_search_method_OVERRIDE = $aryA[123];
$populate_lead_comments = $aryA[124];
+ $drop_call_seconds_override = $aryA[125];
if ( (length($place_in_line_caller_number_filename) < 1) || ($place_in_line_caller_number_filename =~ /^NULL$/i) )
{$place_in_line_caller_number_filename='queue-thereare';}
@@ -1025,6 +1035,45 @@ if ($wday==6)
$yestSQL=',ct_friday_start,ct_friday_stop';
}
+### Check for drop_call_seconds_override settings container
+if ( ($drop_call_seconds_override !~ /DISABLED/i) && (length($drop_call_seconds_override)>0) )
+ {
+ if ($AGILOG) {$agi_string = "Checking for Drop Call Seconds Override |$drop_call_seconds_override|$callerid|$channel_group| Current drop sec: |$DROP_TIME|"; &agi_output;}
+ # example entry: "ALLDAYS,1200,1300,600", day-of-week,start-time,end-time,drop-seconds-override
+ $stmtA = "SELECT container_entry FROM vicidial_settings_containers where container_id='$drop_call_seconds_override';";
+ if ($DBX) {print " |$stmtA|\n";}
+ $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
+ $sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
+ $sthArows=$sthA->rows;
+ if ($sthArows > 0)
+ {
+ @aryA = $sthA->fetchrow_array;
+ $DCScontainer_entry = $aryA[0];
+ $DCScontainer_entry =~ s/\r|\t|\'|\"//gi;
+ @DCScontainer_array = split(/\n/,$DCScontainer_entry);
+ $DCSc=0;
+ foreach(@DCScontainer_array)
+ {
+ if ( ($DCScontainer_array[$DCSc] !~ /^;/) && (length($DCScontainer_array[$DCSc]) > 10) )
+ {
+ $DCScontainer_array[$DCSc] =~ s/[^,0-9a-zA-Z]//gi;
+ @DCScontainer_line = split(/,/,$DCScontainer_array[$DCSc]);
+ $temp_weekday = $DCScontainer_line[0];
+ $temp_begin = ($DCScontainer_line[1] + 0);
+ $temp_end = ($DCScontainer_line[2] + 0);
+ $temp_sec = ($DCScontainer_line[3] + 0); if ($temp_sec > 9999) {$temp_sec=9999;}
+ if ( ( ($temp_begin <= $hm) && ($temp_end >= $hm) ) && ( ($temp_weekday eq 'ALLDAYS') || ($temp_weekday eq $now_weekday) ) )
+ {
+ $drop_call_seconds = $temp_sec; $DROP_TIME = $drop_call_seconds;
+ if ($AGILOG) {$agi_string = "Drop Call Seconds Override found! |$DCSc|$drop_call_seconds_override|$callerid|$channel_group|$DCScontainer_array[$DCSc]|$temp_weekday|$temp_begin($hm)|$temp_end($hm)|$temp_sec|$DROP_TIME|"; &agi_output;}
+ }
+ }
+ $DCSc++;
+ }
+ }
+ $sthA->finish();
+ }
+
### Grab call_times values from the database
$stmtA = "SELECT ct_default_start,ct_default_stop,default_afterhours_filename_override $daySQL $yestSQL,ct_holidays FROM vicidial_call_times where call_time_id = '$call_time_id';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
diff --git a/extras/MySQL_AST_CREATE_tables.sql b/extras/MySQL_AST_CREATE_tables.sql
index a4bc0ab0..22729802 100644
--- a/extras/MySQL_AST_CREATE_tables.sql
+++ b/extras/MySQL_AST_CREATE_tables.sql
@@ -1066,7 +1066,9 @@ leave_3way_start_recording_exception VARCHAR(40) default 'DISABLED',
calls_waiting_vl_one VARCHAR(25) default 'DISABLED',
calls_waiting_vl_two VARCHAR(25) default 'DISABLED',
calls_inqueue_count_one VARCHAR(40) default 'DISABLED',
-calls_inqueue_count_two VARCHAR(40) default 'DISABLED'
+calls_inqueue_count_two VARCHAR(40) default 'DISABLED',
+in_man_dial_next_ready_seconds SMALLINT(5) UNSIGNED default '0',
+in_man_dial_next_ready_seconds_override VARCHAR(40) default 'DISABLED',
) ENGINE=MyISAM;
CREATE TABLE vicidial_lists (
@@ -1365,7 +1367,8 @@ no_agent_delay SMALLINT(5) default '0',
agent_search_method VARCHAR(2) default '',
qc_scorecard_id VARCHAR(20) DEFAULT '',
qc_statuses_id VARCHAR(20) DEFAULT '',
-populate_lead_comments VARCHAR(40) default 'CALLERID_NAME'
+populate_lead_comments VARCHAR(40) default 'CALLERID_NAME',
+drop_call_seconds_override VARCHAR(40) default 'DISABLED'
) ENGINE=MyISAM;
CREATE TABLE vicidial_stations (
@@ -4947,4 +4950,4 @@ INSERT INTO vicidial_settings_containers(container_id,container_notes,container_
UPDATE system_settings set vdc_agent_api_active='1';
-UPDATE system_settings SET db_schema_version='1634',db_schema_update_date=NOW(),reload_timestamp=NOW();
+UPDATE system_settings SET db_schema_version='1635',db_schema_update_date=NOW(),reload_timestamp=NOW();
diff --git a/extras/upgrade_2.14.sql b/extras/upgrade_2.14.sql
index 62364e01..293bb148 100644
--- a/extras/upgrade_2.14.sql
+++ b/extras/upgrade_2.14.sql
@@ -1701,3 +1701,10 @@ index (db_time)
) ENGINE=MyISAM;
UPDATE system_settings SET db_schema_version='1634',db_schema_update_date=NOW() where db_schema_version < 1634;
+
+ALTER TABLE vicidial_inbound_groups ADD drop_call_seconds_override VARCHAR(40) default 'DISABLED';
+
+ALTER TABLE vicidial_campaigns ADD in_man_dial_next_ready_seconds SMALLINT(5) UNSIGNED default '0';
+ALTER TABLE vicidial_campaigns ADD in_man_dial_next_ready_seconds_override VARCHAR(40) default 'DISABLED';
+
+UPDATE system_settings SET db_schema_version='1635',db_schema_update_date=NOW() where db_schema_version < 1635;
diff --git a/www/agc/vdc_db_query.php b/www/agc/vdc_db_query.php
index 09db3e49..da9b1395 100644
--- a/www/agc/vdc_db_query.php
+++ b/www/agc/vdc_db_query.php
@@ -507,10 +507,11 @@
# 210417-1109 - Added calls_waiting_vl_ options
# 210421-2111 - Added more screen labels
# 210606-0957 - Added TILTX features for pre-carrier call filtering
+# 210609-1045 - Added in_man_dial_next_ready_seconds to update_settings function
#
-$version = '2.14-400';
-$build = '210606-0957';
+$version = '2.14-401';
+$build = '210609-1045';
$php_script = 'vdc_db_query.php';
$mel=1; # Mysql Error Log enabled = 1
$mysql_log_count=850;
@@ -858,6 +859,15 @@ $Ssec = date("s");
$Smon = date("m");
$Smday = date("d");
$Syear = date("Y");
+$hm = date("Hi");
+$wday = date("w");
+if ($wday == '0') {$now_weekday = 'SUNDAY';}
+if ($wday == '1') {$now_weekday = 'MONDAY';}
+if ($wday == '2') {$now_weekday = 'TUESDAY';}
+if ($wday == '3') {$now_weekday = 'WEDNESDAY';}
+if ($wday == '4') {$now_weekday = 'THURSDAY';}
+if ($wday == '5') {$now_weekday = 'FRIDAY';}
+if ($wday == '6') {$now_weekday = 'SATURDAY';}
### Grab Server GMT value from the database
$stmt="SELECT local_gmt FROM servers where active='Y' limit 1;";
@@ -2070,7 +2080,7 @@ if ($ACTION == 'update_settings')
##### grab the data from vicidial_campaigns for the campaign
- $stmt="SELECT wrapup_seconds,dead_max,dispo_max,pause_max,dead_max_dispo,dispo_max_dispo,dial_timeout,wrapup_bypass,wrapup_message,wrapup_after_hotkey,manual_dial_timeout FROM vicidial_campaigns where campaign_id='$campaign' LIMIT 1;";
+ $stmt="SELECT wrapup_seconds,dead_max,dispo_max,pause_max,dead_max_dispo,dispo_max_dispo,dial_timeout,wrapup_bypass,wrapup_message,wrapup_after_hotkey,manual_dial_timeout,in_man_dial_next_ready_seconds,in_man_dial_next_ready_seconds_override FROM vicidial_campaigns where campaign_id='$campaign' LIMIT 1;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00594',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
@@ -2089,6 +2099,8 @@ if ($ACTION == 'update_settings')
$wrapup_message = trim("$row[8]");
$wrapup_after_hotkey = trim("$row[9]");
$manual_dial_timeout = trim("$row[10]");
+ $in_man_dial_next_ready_seconds = trim("$row[11]");
+ $in_man_dial_next_ready_seconds_override = trim("$row[12]");
}
if ( ($manual_dial_timeout < 1) or (strlen($manual_dial_timeout) < 1) )
@@ -2099,6 +2111,41 @@ if ($ACTION == 'update_settings')
{$pause_max=0;}
if ( ($pause_max > 9) and ($pause_max <= $dial_timeout) )
{$pause_max = ($dial_timeout + 10);}
+ if ( (!preg_match("/DISABLED/i",$in_man_dial_next_ready_seconds_override) && (strlen($in_man_dial_next_ready_seconds_override)>0) ) )
+ {
+ # example entry: "ALLDAYS,1200,1300,30", day-of-week,start-time,end-time,inman-ready-seconds-override
+ $stmt = "SELECT container_entry FROM vicidial_settings_containers where container_id='$in_man_dial_next_ready_seconds_override';";
+ $rslt=mysql_to_mysqli($stmt, $link);
+ $SCinfo_ct = mysqli_num_rows($rslt);
+ if ($DB) {echo "$SCinfo_ct|$stmt\n";}
+ if ($SCinfo_ct > 0)
+ {
+ $row=mysqli_fetch_row($rslt);
+ $IMDcontainer_entry = $row[0];
+ $IMDcontainer_entry = preg_replace("/\r|\t|\'|\"/",'',$IMDcontainer_entry);
+ $IMDlines = explode("\n",$IMDcontainer_entry);
+ $IMDlines_ct = count($IMDlines);
+ $IMDc=0;
+ while ($IMDc < $IMDlines_ct)
+ {
+ if ( (!preg_match("/^;/",$IMDlines[$IMDc])) and (strlen($IMDlines[$IMDc]) > 10) )
+ {
+ $IMDline = preg_replace('/[^,0-9a-zA-Z]/','',$IMDlines[$IMDc]);
+ $IMDline = explode(',',$IMDline);
+ $temp_weekday = $IMDline[0];
+ $temp_begin = ($IMDline[1] + 0);
+ $temp_end = ($IMDline[2] + 0);
+ $temp_sec = ($IMDline[3] + 0); if ($temp_sec > 9999) {$temp_sec=9999;}
+ if ( ( ($temp_begin <= $hm) and ($temp_end >= $hm) ) and ( ($temp_weekday == 'ALLDAYS') or ($temp_weekday == "$now_weekday") ) )
+ {
+ $in_man_dial_next_ready_seconds = $temp_sec;
+ if ($DB) {echo "in_man_dial_next_ready_seconds_override: $IMDc|$IMDlines[$IMDc]|$temp_weekday|$temp_begin($hm)|$temp_end($hm)|$temp_sec|$in_man_dial_next_ready_seconds|";}
+ }
+ }
+ $IMDc++;
+ }
+ }
+ }
$SettingS_InfO .= "SETTINGS GATHERED\n";
$SettingS_InfO .= "wrapup_seconds: " . $wrapup_seconds . "\n";
@@ -2112,6 +2159,7 @@ if ($ACTION == 'update_settings')
$SettingS_InfO .= "wrapup_message: " . $wrapup_message . "\n";
$SettingS_InfO .= "wrapup_after_hotkey: " . $wrapup_after_hotkey . "\n";
$SettingS_InfO .= "manual_dial_timeout: " . $manual_dial_timeout . "\n";
+ $SettingS_InfO .= "in_man_dial_next_ready_seconds: " . $in_man_dial_next_ready_seconds . "\n";
$SettingS_InfO .= "\n";
}
echo $SettingS_InfO;
diff --git a/www/agc/vicidial.php b/www/agc/vicidial.php
index 7c0719e1..4d9c6b56 100644
--- a/www/agc/vicidial.php
+++ b/www/agc/vicidial.php
@@ -667,10 +667,11 @@
# 210417-1109 - Added calls_waiting_vl_ campaign options
# 210421-2110 - Added more screen labels
# 210606-0955 - Cleanup of debugbottomspan, testing of TILTX features
+# 210609-0942 - Added in_man_dial_next_ready_seconds campaign options
#
-$version = '2.14-635c';
-$build = '210606-0955';
+$version = '2.14-636c';
+$build = '210609-0942';
$mel=1; # Mysql Error Log enabled = 1
$mysql_log_count=95;
$one_mysql_log=0;
@@ -2259,7 +2260,7 @@ else
$HKstatusnames = substr("$HKstatusnames", 0, -1);
##### grab the campaign settings
- $stmt="SELECT park_ext,park_file_name,web_form_address,allow_closers,auto_dial_level,dial_timeout,dial_prefix,campaign_cid,campaign_vdad_exten,campaign_rec_exten,campaign_recording,campaign_rec_filename,campaign_script,get_call_launch,am_message_exten,xferconf_a_dtmf,xferconf_a_number,xferconf_b_dtmf,xferconf_b_number,alt_number_dialing,scheduled_callbacks,wrapup_seconds,wrapup_message,closer_campaigns,use_internal_dnc,allcalls_delay,omit_phone_code,agent_pause_codes_active,no_hopper_leads_logins,campaign_allow_inbound,manual_dial_list_id,default_xfer_group,xfer_groups,disable_alter_custphone,display_queue_count,manual_dial_filter,agent_clipboard_copy,use_campaign_dnc,three_way_call_cid,dial_method,three_way_dial_prefix,web_form_target,vtiger_screen_login,agent_allow_group_alias,default_group_alias,quick_transfer_button,prepopulate_transfer_preset,view_calls_in_queue,view_calls_in_queue_launch,call_requeue_button,pause_after_each_call,no_hopper_dialing,agent_dial_owner_only,agent_display_dialable_leads,web_form_address_two,agent_select_territories,crm_popup_login,crm_login_address,timer_action,timer_action_message,timer_action_seconds,start_call_url,dispo_call_url,xferconf_c_number,xferconf_d_number,xferconf_e_number,use_custom_cid,scheduled_callbacks_alert,scheduled_callbacks_count,manual_dial_override,blind_monitor_warning,blind_monitor_message,blind_monitor_filename,timer_action_destination,enable_xfer_presets,hide_xfer_number_to_dial,manual_dial_prefix,customer_3way_hangup_logging,customer_3way_hangup_seconds,customer_3way_hangup_action,ivr_park_call,manual_preview_dial,api_manual_dial,manual_dial_call_time_check,my_callback_option,per_call_notes,agent_lead_search,agent_lead_search_method,queuemetrics_phone_environment,auto_pause_precall,auto_pause_precall_code,auto_resume_precall,manual_dial_cid,custom_3way_button_transfer,callback_days_limit,disable_dispo_screen,disable_dispo_status,screen_labels,status_display_fields,pllb_grouping,pllb_grouping_limit,in_group_dial,in_group_dial_select,pause_after_next_call,owner_populate,manual_dial_lead_id,dead_max,dispo_max,pause_max,dead_max_dispo,dispo_max_dispo,max_inbound_calls,manual_dial_search_checkbox,hide_call_log_info,timer_alt_seconds,wrapup_bypass,wrapup_after_hotkey,callback_active_limit,callback_active_limit_override,comments_all_tabs,comments_dispo_screen,comments_callback_screen,qc_comment_history,show_previous_callback,clear_script,manual_dial_search_filter,web_form_address_three,manual_dial_override_field,status_display_ingroup,customer_gone_seconds,agent_display_fields,manual_dial_timeout,manual_auto_next,manual_auto_show,allow_required_fields,dead_to_dispo,agent_xfer_validation,ready_max_logout,callback_display_days,three_way_record_stop,hangup_xfer_record_start,max_inbound_calls_outcome,manual_auto_next_options,agent_screen_time_display,pause_max_dispo,script_top_dispo,routing_initiated_recordings,dead_trigger_seconds,dead_trigger_action,dead_trigger_repeat,dead_trigger_filename,scheduled_callbacks_force_dial,callback_hours_block,callback_display_days,scheduled_callbacks_timezones_container,three_way_volume_buttons,manual_dial_validation,mute_recordings,leave_vm_no_dispo,leave_vm_message_group_id,campaign_script_two,browser_alert_sound,browser_alert_volume,three_way_record_stop_exception,pause_max_exceptions,transfer_button_launch,leave_3way_start_recording,leave_3way_start_recording_exception,calls_waiting_vl_one,calls_waiting_vl_two FROM vicidial_campaigns where campaign_id = '$VD_campaign';";
+ $stmt="SELECT park_ext,park_file_name,web_form_address,allow_closers,auto_dial_level,dial_timeout,dial_prefix,campaign_cid,campaign_vdad_exten,campaign_rec_exten,campaign_recording,campaign_rec_filename,campaign_script,get_call_launch,am_message_exten,xferconf_a_dtmf,xferconf_a_number,xferconf_b_dtmf,xferconf_b_number,alt_number_dialing,scheduled_callbacks,wrapup_seconds,wrapup_message,closer_campaigns,use_internal_dnc,allcalls_delay,omit_phone_code,agent_pause_codes_active,no_hopper_leads_logins,campaign_allow_inbound,manual_dial_list_id,default_xfer_group,xfer_groups,disable_alter_custphone,display_queue_count,manual_dial_filter,agent_clipboard_copy,use_campaign_dnc,three_way_call_cid,dial_method,three_way_dial_prefix,web_form_target,vtiger_screen_login,agent_allow_group_alias,default_group_alias,quick_transfer_button,prepopulate_transfer_preset,view_calls_in_queue,view_calls_in_queue_launch,call_requeue_button,pause_after_each_call,no_hopper_dialing,agent_dial_owner_only,agent_display_dialable_leads,web_form_address_two,agent_select_territories,crm_popup_login,crm_login_address,timer_action,timer_action_message,timer_action_seconds,start_call_url,dispo_call_url,xferconf_c_number,xferconf_d_number,xferconf_e_number,use_custom_cid,scheduled_callbacks_alert,scheduled_callbacks_count,manual_dial_override,blind_monitor_warning,blind_monitor_message,blind_monitor_filename,timer_action_destination,enable_xfer_presets,hide_xfer_number_to_dial,manual_dial_prefix,customer_3way_hangup_logging,customer_3way_hangup_seconds,customer_3way_hangup_action,ivr_park_call,manual_preview_dial,api_manual_dial,manual_dial_call_time_check,my_callback_option,per_call_notes,agent_lead_search,agent_lead_search_method,queuemetrics_phone_environment,auto_pause_precall,auto_pause_precall_code,auto_resume_precall,manual_dial_cid,custom_3way_button_transfer,callback_days_limit,disable_dispo_screen,disable_dispo_status,screen_labels,status_display_fields,pllb_grouping,pllb_grouping_limit,in_group_dial,in_group_dial_select,pause_after_next_call,owner_populate,manual_dial_lead_id,dead_max,dispo_max,pause_max,dead_max_dispo,dispo_max_dispo,max_inbound_calls,manual_dial_search_checkbox,hide_call_log_info,timer_alt_seconds,wrapup_bypass,wrapup_after_hotkey,callback_active_limit,callback_active_limit_override,comments_all_tabs,comments_dispo_screen,comments_callback_screen,qc_comment_history,show_previous_callback,clear_script,manual_dial_search_filter,web_form_address_three,manual_dial_override_field,status_display_ingroup,customer_gone_seconds,agent_display_fields,manual_dial_timeout,manual_auto_next,manual_auto_show,allow_required_fields,dead_to_dispo,agent_xfer_validation,ready_max_logout,callback_display_days,three_way_record_stop,hangup_xfer_record_start,max_inbound_calls_outcome,manual_auto_next_options,agent_screen_time_display,pause_max_dispo,script_top_dispo,routing_initiated_recordings,dead_trigger_seconds,dead_trigger_action,dead_trigger_repeat,dead_trigger_filename,scheduled_callbacks_force_dial,callback_hours_block,callback_display_days,scheduled_callbacks_timezones_container,three_way_volume_buttons,manual_dial_validation,mute_recordings,leave_vm_no_dispo,leave_vm_message_group_id,campaign_script_two,browser_alert_sound,browser_alert_volume,three_way_record_stop_exception,pause_max_exceptions,transfer_button_launch,leave_3way_start_recording,leave_3way_start_recording_exception,calls_waiting_vl_one,calls_waiting_vl_two,in_man_dial_next_ready_seconds,in_man_dial_next_ready_seconds_override FROM vicidial_campaigns where campaign_id = '$VD_campaign';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01013',$VD_login,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
@@ -2434,6 +2435,10 @@ else
$leave_3way_start_recording_exception = $row[167];
$calls_waiting_vl_one = $row[168];
$calls_waiting_vl_two = $row[169];
+ $in_man_dial_next_ready_seconds = $row[170];
+ $in_man_dial_next_ready_seconds_override = $row[171];
+
+ if ($dial_method != 'INBOUND_MAN') {$in_man_dial_next_ready_seconds=0;}
$LTWSRcontainer_entry='';
if ( (strlen($leave_3way_start_recording_exception) > 1) and ($leave_3way_start_recording_exception != 'DISABLED') )
@@ -5489,6 +5494,10 @@ if ($enable_fast_refresh < 1) {echo "\tvar refresh_interval = 1000;\n";}
var SSagent_hidden_sound='';
var SSagent_hidden_sound_volume='';
var last_hidden_sound_UnixTime = '';
+ var in_man_dial_next_ready_seconds = '';
+ var in_man_dial_next_ready_seconds_override = '';
+ var in_man_dial_next_ready_count = 0;
+ var in_man_dial_next_ready_trigger = 0;
var DiaLControl_auto_HTML = "
\" border=\"0\" alt=\"You are paused\" />";
var DiaLControl_auto_HTML_ready = "
\" border=\"0\" alt=\"You are active\" />";
var DiaLControl_auto_HTML_OFF = "
\" border=\"0\" alt=\"pause button disabled\" />";
@@ -10332,7 +10341,16 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
{
auto_dial_level=starting_dial_level;
- document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are paused\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ if ( (in_man_dial_next_ready_seconds > 0) && (in_man_dial_next_ready_count < in_man_dial_next_ready_seconds) )
+ {
+ in_man_dial_next_ready_trigger = 0;
+ in_man_dial_next_ready_count = 0;
+ document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are paused\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ }
+ else
+ {
+ document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are paused\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ }
}
else
{
@@ -10351,6 +10369,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
if (dial_method == "INBOUND_MAN")
{
auto_dial_level=0;
+ in_man_dial_next_ready_count = 0;
if (VDRP_stage != 'PAUSED')
{
@@ -10544,7 +10563,16 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
{
auto_dial_level=starting_dial_level;
- document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are paused\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ if ( (in_man_dial_next_ready_seconds > 0) && (in_man_dial_next_ready_count < in_man_dial_next_ready_seconds) )
+ {
+ in_man_dial_next_ready_trigger = 0;
+ in_man_dial_next_ready_count = 0;
+ document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are paused\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ }
+ else
+ {
+ document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are paused\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ }
}
else
{
@@ -11218,7 +11246,16 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
if (dial_method == "INBOUND_MAN")
{
- document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are paused\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ if ( (in_man_dial_next_ready_seconds > 0) && (in_man_dial_next_ready_count < in_man_dial_next_ready_seconds) )
+ {
+ in_man_dial_next_ready_trigger = 0;
+ in_man_dial_next_ready_count = 0;
+ document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are paused\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ }
+ else
+ {
+ document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are paused\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ }
}
else
{
@@ -11634,7 +11671,16 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
// agents to manual dial.
dial_next_failed=0;
- document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are active\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ if ( (in_man_dial_next_ready_seconds > 0) && (in_man_dial_next_ready_count < in_man_dial_next_ready_seconds) )
+ {
+ in_man_dial_next_ready_trigger = 1;
+ in_man_dial_next_ready_count = 0;
+ document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are active\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ }
+ else
+ {
+ document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are active\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ }
}
else
{
@@ -11651,11 +11697,21 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
pause_code_counter = 0;
dial_next_failed=0;
safe_pause_counter=5;
+ in_man_dial_next_ready_trigger = 0;
if (dial_method == "INBOUND_MAN")
{
auto_dial_level=starting_dial_level;
- document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are paused\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ if ( (in_man_dial_next_ready_seconds > 0) && (in_man_dial_next_ready_count < in_man_dial_next_ready_seconds) )
+ {
+ in_man_dial_next_ready_trigger = 0;
+ in_man_dial_next_ready_count = 0;
+ document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are paused\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ }
+ else
+ {
+ document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are paused\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ }
}
else
{
@@ -16002,6 +16058,8 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
wrapup_after_hotkey=wrapup_after_hotkey_array[1];
var manual_dial_timeout_array=settings_array[12].split("manual_dial_timeout: ");
manual_dial_timeout=manual_dial_timeout_array[1];
+ var in_man_dial_next_ready_seconds_array=settings_array[13].split("in_man_dial_next_ready_seconds: ");
+ in_man_dial_next_ready_seconds=in_man_dial_next_ready_seconds_array[1];
if (wrapup_seconds > 0)
{
@@ -20069,6 +20127,21 @@ function phone_number_format(formatphone) {
}
}
}
+ if (in_man_dial_next_ready_trigger > 0)
+ {
+ in_man_dial_next_ready_count++;
+ document.getElementById("debugbottomspan").innerHTML = 'Inbound Manual Dial, Agent-Ready timer: ' + in_man_dial_next_ready_count + ' <> ' + in_man_dial_next_ready_seconds;
+ if (in_man_dial_next_ready_count > in_man_dial_next_ready_seconds)
+ {
+ agent_events('in_man_dial_next_ready', in_man_dial_next_ready_count, aec); aec++;
+ button_click_log = button_click_log + "" + SQLdate + "-----in_man_dial_next_ready---" + in_man_dial_next_ready_count + "|";
+ in_man_dial_next_ready_trigger=0;
+
+ document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are active\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+
+ document.getElementById("debugbottomspan").innerHTML = '';
+ }
+ }
}
else
{
@@ -20788,7 +20861,16 @@ function phone_number_format(formatphone) {
{
if (dial_method == "INBOUND_MAN")
{
- document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are paused\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ if ( (in_man_dial_next_ready_seconds > 0) && (in_man_dial_next_ready_count < in_man_dial_next_ready_seconds) )
+ {
+ in_man_dial_next_ready_trigger = 0;
+ in_man_dial_next_ready_count = 0;
+ document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are paused\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ }
+ else
+ {
+ document.getElementById("DiaLControl").innerHTML = "
\" border=\"0\" alt=\"You are paused\" />
\" border=\"0\" alt=\"Dial Next Number\" />";
+ }
if (manual_dial_preview == 1)
{buildDiv('DiaLLeaDPrevieW');}
}
diff --git a/www/vicidial/admin.php b/www/vicidial/admin.php
index d1a654d7..30fc0f69 100644
--- a/www/vicidial/admin.php
+++ b/www/vicidial/admin.php
@@ -2646,6 +2646,13 @@ if (isset($_GET["calls_inqueue_count_two"])) {$calls_inqueue_count_two=$_GET["
elseif (isset($_POST["calls_inqueue_count_two"])) {$calls_inqueue_count_two=$_POST["calls_inqueue_count_two"];}
if (isset($_GET["mohsuggest"])) {$mohsuggest=$_GET["mohsuggest"];}
elseif (isset($_POST["mohsuggest"])) {$mohsuggest=$_POST["mohsuggest"];}
+if (isset($_GET["drop_call_seconds_override"])) {$drop_call_seconds_override=$_GET["drop_call_seconds_override"];}
+ elseif (isset($_POST["drop_call_seconds_override"])) {$drop_call_seconds_override=$_POST["drop_call_seconds_override"];}
+if (isset($_GET["in_man_dial_next_ready_seconds"])) {$in_man_dial_next_ready_seconds=$_GET["in_man_dial_next_ready_seconds"];}
+ elseif (isset($_POST["in_man_dial_next_ready_seconds"])) {$in_man_dial_next_ready_seconds=$_POST["in_man_dial_next_ready_seconds"];}
+if (isset($_GET["in_man_dial_next_ready_seconds_override"])) {$in_man_dial_next_ready_seconds_override=$_GET["in_man_dial_next_ready_seconds_override"];}
+ elseif (isset($_POST["in_man_dial_next_ready_seconds_override"])) {$in_man_dial_next_ready_seconds_override=$_POST["in_man_dial_next_ready_seconds_override"];}
+
if (isset($script_id)) {$script_id= mb_strtoupper($script_id,'utf-8');}
if (isset($lead_filter_id)) {$lead_filter_id = mb_strtoupper($lead_filter_id,'utf-8');}
@@ -3126,6 +3133,7 @@ $qc_expire_days = preg_replace('/[^0-9]/','',$qc_expire_days);
$auth_entry = preg_replace('/[^0-9]/','',$auth_entry);
$agent_hidden_sound_volume = preg_replace('/[^0-9]/','',$agent_hidden_sound_volume);
$agent_hidden_sound_seconds = preg_replace('/[^0-9]/','',$agent_hidden_sound_seconds);
+$in_man_dial_next_ready_seconds = preg_replace('/[^0-9]/','',$in_man_dial_next_ready_seconds);
$user_new_lead_limit = preg_replace('/[^-0-9]/','',$user_new_lead_limit);
$drop_call_seconds = preg_replace('/[^-0-9]/','',$drop_call_seconds);
@@ -3724,8 +3732,10 @@ if ($non_latin < 1)
$two_factor_container = preg_replace('/[^-_0-9a-zA-Z]/','',$two_factor_container);
$calls_inqueue_count_one = preg_replace('/[^-_0-9a-zA-Z]/','',$calls_inqueue_count_one);
$calls_inqueue_count_two = preg_replace('/[^-_0-9a-zA-Z]/','',$calls_inqueue_count_two);
+ $drop_call_seconds_override = preg_replace('/[^-_0-9a-zA-Z]/','',$drop_call_seconds_override);
+ $in_man_dial_next_ready_seconds_override = preg_replace('/[^-_0-9a-zA-Z]/','',$in_man_dial_next_ready_seconds_override);
-### ALPHA-NUMERIC and underscore
+ ### ALPHA-NUMERIC and underscore
$qc_statuses_id = preg_replace('/[^_0-9a-zA-Z]/','',$qc_statuses_id);
### ALPHA-NUMERIC and underscore and dash and slash and dot
@@ -4429,6 +4439,8 @@ else
$two_factor_container = preg_replace('/[^-_0-9\p{L}]/u','',$two_factor_container);
$calls_inqueue_count_one = preg_replace('/[^-_0-9\p{L}]/u','',$calls_inqueue_count_one);
$calls_inqueue_count_two = preg_replace('/[^-_0-9\p{L}]/u','',$calls_inqueue_count_two);
+ $drop_call_seconds_override = preg_replace('/[^-_0-9\p{L}]/u','',$drop_call_seconds_override);
+ $in_man_dial_next_ready_seconds_override = preg_replace('/[^-_0-9\p{L}]/u','',$in_man_dial_next_ready_seconds_override);
### ALPHA-NUMERIC and underscore and dash and slash and dot
$menu_timeout_prompt = preg_replace('/[^-\/\|\._0-9\p{L}]/u','',$menu_timeout_prompt);
@@ -5651,12 +5663,13 @@ if ($SSscript_remove_js > 0)
# 210425-1506 - Added calls_inqueue_count_ campaign options
# 210429-1624 - Added mohsuggest phone config option
# 210519-1747 - Fix for Copy Phone conf rebuild, Require prompt be populated on Call Menu creation and modification
+# 210608-2108 - Added In-Group Drop Seconds Override Container and Inbound Manual Dial Agent Forced Ready features
#
# make sure you have added a user to the vicidial_users MySQL table with at least user_level 9 to access this page the first time
-$admin_version = '2.14-813a';
-$build = '210519-1747';
+$admin_version = '2.14-814a';
+$build = '210608-2108';
$STARTtime = date("U");
$SQLdate = date("Y-m-d H:i:s");
@@ -10752,25 +10765,26 @@ if ($ADD==192111111111)
echo "
| "._QXZ("Admin User Group").": | |