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("Container ID").": $NWB#settings_containers-container_id$NWE\n"; echo ""._QXZ("Container Notes").": $NWB#settings_containers-container_notes$NWE\n"; echo ""._QXZ("Container Type").": $NWB#settings_containers-container_type$NWE\n"; echo ""._QXZ("Admin User Group").": $NWB#campaigns-ready_max_logout$NWE\n"; + echo ""._QXZ("Inbound Manual Dial Agent Forced Ready Seconds").": $NWB#campaigns-in_man_dial_next_ready_seconds$NWE\n"; + + ##### get container listings for dynamic WEEKDAY_TIMERANGE_SECONDS container pulldown menu + $stmt="SELECT container_id,container_notes from vicidial_settings_containers where container_type='WEEKDAY_TIMERANGE_SECONDS' $LOGadmin_viewable_groupsSQL order by container_id;"; + $rslt=mysql_to_mysqli($stmt, $link); + $dtlc_to_print = mysqli_num_rows($rslt); + $in_man_dial_next_ready_seconds_override_menu=''; + $dtlc_selected=0; + $o=0; + while ($dtlc_to_print > $o) + { + $rowx=mysqli_fetch_row($rslt); + if (mb_strlen($rowx[1],'utf-8')>40) + {$rowx[1] = mb_substr($rowx[1],0,40,'utf-8') . '...';} + $in_man_dial_next_ready_seconds_override_menu .= "\n"; + $o++; + } + + echo ""; + if ($dtlc_selected > 0) + {echo ""._QXZ("InMan Agent Forced Ready Override Container")."";} + else + {echo _QXZ("InMan Agent Forced Ready Override Container");} + echo ": $NWB#campaigns-in_man_dial_next_ready_seconds_override$NWE\n"; + echo ""._QXZ("Customer Gone Warning Seconds").": $NWB#campaigns-customer_gone_seconds$NWE\n"; if ($SSsip_event_logging > 0) @@ -31215,7 +31262,7 @@ if ($ADD==3111) echo "\n"; + ##### get container listings for dynamic WEEKDAY_TIMERANGE_SECONDS container pulldown menu + $stmt="SELECT container_id,container_notes from vicidial_settings_containers where container_type='WEEKDAY_TIMERANGE_SECONDS' $LOGadmin_viewable_groupsSQL order by container_id;"; + $rslt=mysql_to_mysqli($stmt, $link); + $dtlc_to_print = mysqli_num_rows($rslt); + $drop_call_seconds_override_menu=''; + $dtlc_selected=0; + $o=0; + while ($dtlc_to_print > $o) + { + $rowx=mysqli_fetch_row($rslt); + if (mb_strlen($rowx[1],'utf-8')>40) + {$rowx[1] = mb_substr($rowx[1],0,40,'utf-8') . '...';} + $drop_call_seconds_override_menu .= "\n"; + $o++; + } + + echo "\n"; + echo "\n"; echo "\n"; @@ -39426,25 +39503,26 @@ if ($ADD==392111111111) echo "\n"; echo "\n"; @@ -39469,6 +39547,42 @@ if ($ADD==392111111111) echo "
\n"; echo ""; - $stmt="SELECT group_id,group_name,group_color,active,web_form_address,voicemail_ext,next_agent_call,fronter_display,ingroup_script,get_call_launch,xferconf_a_dtmf,xferconf_a_number,xferconf_b_dtmf,xferconf_b_number,drop_call_seconds,drop_action,drop_exten,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,default_xfer_group,queue_priority,drop_inbound_group,ingroup_recording_override,ingroup_rec_filename,afterhours_xfer_group,qc_enabled,qc_statuses,qc_shift_id,qc_get_record_launch,qc_show_recording,qc_web_form_address,qc_script,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,answer_sec_pct_rt_stat_one,answer_sec_pct_rt_stat_two,default_group_alias,no_agent_no_queue,no_agent_action,no_agent_action_value,web_form_address_two,timer_action,timer_action_message,timer_action_seconds,start_call_url,dispo_call_url,xferconf_c_number,xferconf_d_number,xferconf_e_number,ignore_list_script_override,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,timer_action_destination,calculate_estimated_hold_seconds,add_lead_url,eht_minimum_prompt_filename,eht_minimum_prompt_no_block,eht_minimum_prompt_seconds,on_hook_ring_time,na_call_url,on_hook_cid,group_calldate,action_xfer_cid,drop_callmenu,after_hours_callmenu,user_group,max_calls_method,max_calls_count,max_calls_action,dial_ingroup_cid,group_handling,web_form_address_three,populate_lead_ingroup,drop_lead_reset,after_hours_lead_reset,nanq_lead_reset,wait_time_lead_reset,hold_time_lead_reset,status_group_id,routing_initiated_recordings,on_hook_cid_number,customer_chat_screen_colors,customer_chat_survey_link,customer_chat_survey_text,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,inbound_survey_question_filename,inbound_survey_callmenu,icbq_expiration_hours,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,icbq_call_time_id,add_lead_timezone,icbq_dial_filter,populate_lead_source,populate_lead_vendor,park_file_name,waiting_call_url_on,waiting_call_url_off,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,ingroup_script_two,browser_alert_sound,browser_alert_volume,answer_signal,no_agent_delay,agent_search_method,qc_scorecard_id,qc_statuses_id,populate_lead_comments from vicidial_inbound_groups where group_id='$group_id' $LOGadmin_viewable_groupsSQL;"; + $stmt="SELECT group_id,group_name,group_color,active,web_form_address,voicemail_ext,next_agent_call,fronter_display,ingroup_script,get_call_launch,xferconf_a_dtmf,xferconf_a_number,xferconf_b_dtmf,xferconf_b_number,drop_call_seconds,drop_action,drop_exten,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,default_xfer_group,queue_priority,drop_inbound_group,ingroup_recording_override,ingroup_rec_filename,afterhours_xfer_group,qc_enabled,qc_statuses,qc_shift_id,qc_get_record_launch,qc_show_recording,qc_web_form_address,qc_script,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,answer_sec_pct_rt_stat_one,answer_sec_pct_rt_stat_two,default_group_alias,no_agent_no_queue,no_agent_action,no_agent_action_value,web_form_address_two,timer_action,timer_action_message,timer_action_seconds,start_call_url,dispo_call_url,xferconf_c_number,xferconf_d_number,xferconf_e_number,ignore_list_script_override,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,timer_action_destination,calculate_estimated_hold_seconds,add_lead_url,eht_minimum_prompt_filename,eht_minimum_prompt_no_block,eht_minimum_prompt_seconds,on_hook_ring_time,na_call_url,on_hook_cid,group_calldate,action_xfer_cid,drop_callmenu,after_hours_callmenu,user_group,max_calls_method,max_calls_count,max_calls_action,dial_ingroup_cid,group_handling,web_form_address_three,populate_lead_ingroup,drop_lead_reset,after_hours_lead_reset,nanq_lead_reset,wait_time_lead_reset,hold_time_lead_reset,status_group_id,routing_initiated_recordings,on_hook_cid_number,customer_chat_screen_colors,customer_chat_survey_link,customer_chat_survey_text,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,inbound_survey_question_filename,inbound_survey_callmenu,icbq_expiration_hours,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,icbq_call_time_id,add_lead_timezone,icbq_dial_filter,populate_lead_source,populate_lead_vendor,park_file_name,waiting_call_url_on,waiting_call_url_off,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,ingroup_script_two,browser_alert_sound,browser_alert_volume,answer_signal,no_agent_delay,agent_search_method,qc_scorecard_id,qc_statuses_id,populate_lead_comments,drop_call_seconds_override from vicidial_inbound_groups where group_id='$group_id' $LOGadmin_viewable_groupsSQL;"; $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); @@ -31399,6 +31446,7 @@ if ($ADD==3111) $qc_scorecard_id = $row[177]; $qc_statuses_id = $row[178]; $populate_lead_comments = $row[179]; + $drop_call_seconds_override = $row[180]; ##### get callmenu listings for dynamic pulldown $stmt="SELECT menu_id,menu_name from vicidial_call_menu $whereLOGadmin_viewable_groupsSQL order by menu_id;"; @@ -31789,6 +31837,35 @@ if ($ADD==3111) echo "
"._QXZ("Drop Call Seconds").": $NWB#inbound_groups-drop_call_seconds$NWE
"; + if ($dtlc_selected > 0) + {echo ""._QXZ("Drop Seconds Override Container")."";} + else + {echo _QXZ("Drop Seconds Override Container");} + echo ": $NWB#inbound_groups-drop_call_seconds_override$NWE
"._QXZ("Drop Action").": $NWB#inbound_groups-drop_action$NWE
"._QXZ("Drop Lead Reset").": $NWB#inbound_groups-drop_lead_reset$NWE
"._QXZ("Container Notes").": $NWB#settings_containers-container_notes$NWE
"._QXZ("Container Type").": $NWB#settings_containers-container_type$NWE


\n"; + if ($container_type == 'WEEKDAY_TIMERANGE_SECONDS') + { + echo ""._QXZ("CAMPAIGNS USING THIS SETTINGS CONTAINER").":
\n"; + echo "\n"; + + $stmt="SELECT campaign_id,campaign_name from vicidial_campaigns where in_man_dial_next_ready_seconds_override='$container_id' $LOGallowed_campaignsSQL;"; + $rslt=mysql_to_mysqli($stmt, $link); + $ig_to_print = mysqli_num_rows($rslt); + $o=0; + while ($ig_to_print > $o) + { + $row=mysqli_fetch_row($rslt); + echo "\n"; + $o++; + } + + echo "
$row[0] $row[1]

\n"; + + echo ""._QXZ("IN-GROUPS USING THIS SETTINGS CONTAINER").":
\n"; + echo "\n"; + + $stmt="SELECT group_id,group_name from vicidial_inbound_groups where drop_call_seconds_override='$container_id' $LOGadmin_viewable_groupsSQL;"; + $rslt=mysql_to_mysqli($stmt, $link); + $ig_to_print = mysqli_num_rows($rslt); + $o=0; + while ($ig_to_print > $o) + { + $row=mysqli_fetch_row($rslt); + echo "\n"; + $o++; + } + + echo "
$row[0] $row[1]

\n"; + + } + if ($LOGast_delete_phones > 0) { echo "

"._QXZ("DELETE THIS SETTINGS CONTAINER")."\n"; diff --git a/www/vicidial/help_documentation.txt b/www/vicidial/help_documentation.txt index b38ff2a2..e3609ba3 100644 --- a/www/vicidial/help_documentation.txt +++ b/www/vicidial/help_documentation.txt @@ -1,4 +1,4 @@ -# version: 20210605085501 +# version: 20210608215501 users-user User ID This field is where you put the users ID number, can be up to 8 digits in length, Must be at least 2 characters in length. users-pass Password This field is where you put the users password. Must be at least 2 characters in length. Only letters and numbers are allowed in user passwords. A medium strength user password will be at least 10 characters in length, and a strong user password will be at least 20 characters in length and have letters as well as at least one number. It is recommended that you use a longer password if possible, stringing together several unrelated words with no spaces, and a number somewhere in the string. The maximum size of a password is 100 characters. users-force_change_password Force Change Password If this option is set to Y then the user will be prompted to change their password the next time they log in to the administration webpage or the agent screen. Default is N. @@ -320,6 +320,8 @@ campaigns-pause_max Agent Pause Max Seconds If this is set to greater than campaigns-pause_max_dispo Agent Pause Max Status If Agent Pause Max Seconds is enabled, this is the status set for the call when the agent has not selected a status past the number of seconds set above. This situation can happen when manual alt dial is enabled and the agent has not finished the lead they are on. Default is PAUSMX. campaigns-pause_max_exceptions Agent Pause Max Exceptions This setting will allow you to define a set of Pause Codes that do not trigger the Agent Pause Max Seconds feature if it is active if the agent has selected one of them as their current pause code. These pause codes must be defined within a Settings Container of the PAUSE_CODES_LIST type with one pause code per line. Default is blank for disabled. campaigns-ready_max_logout Agent Ready Max Seconds Logout If this is set to greater than 0, and the agent has not gone out of READY or CLOSER status in this number of seconds, the agent will automatically be logged out of the agent screen. Default is 0 for disabled. +campaigns-in_man_dial_next_ready_seconds Inbound Manual Dial Agent Forced Ready Seconds If the Dial Method is set to INBOUND_MAN, and this setting is set to a number greater than 0, this will be the number of seconds the agent has to be in the READY state, able to take an inbound call, before the DIAL NEXT NUMBER agent screen button can be clicked each time. Default is 0, for disabled. +campaigns-in_man_dial_next_ready_seconds_override InMan Agent Forced Ready Override Container If the Inbound Manual Dial Agent Forced Ready Seconds setting above is active, this setting will allow you to override that setting based upon the day-of-the-week and the time-of-day. In a WEEKDAY_TIMERANGE_SECONDS Settings Container you can set multiple lines of overrides, one per line, for this Campaign using the following format with each field separated by commas,
day-of-week,start-time,end-time,inman-force-ready-seconds-override
The day-of-week can be a single day, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY or it can be set to ALLDAYS for all 7 days a week.
The start-time and end-time both need to each be set to a four-digit time, based on 24-hour time, such as 1700 for 5:00pm server time.
The inman-force-ready-seconds-override needs to be a number of seconds.
For example, if you have a line like the following,
MONDAY,0900,0930,30
Then on Mondays only from 9:00am to 9:30am, the Agent Forced Ready Seconds will be 30 seconds instead of what it is set to in the Campaign Agent Forced Ready Seconds setting.
NOTE, if there is more than one entry that will match the day and time, the last one in the settings container will be the one that is used.
Here is an example WEEKDAY_TIMERANGE_SECONDS Settings Container entry,

;day-of-week,start-time,end-time,inman-force-ready-seconds-override
ALLDAYS,1200,1300,30
MONDAY,0900,0930,20
FRIDAY,1515,1700,60
FRIDAY,1725,1730,5
campaigns-customer_gone_seconds Customer Gone Warning Seconds This setting controls the number of seconds after a customer hangs up before a warning that the customer has hung up will appear on the agent screen. Default is 30. campaigns-sip_event_logging SIP Event Actions SIP Event Logging Actions allows you to select a SIP_EVENT_ACTIONS Settings Container that contains all of the rules that you want followed for calls based upon different SIP Event Log triggers. Default is DISABLED. campaigns-screen_labels Agent Screen Labels You can select a set of agent screen labels to use with this option. Default is --SYSTEM-SETTINGS-- for the default labels. @@ -494,6 +496,7 @@ inbound_groups-timer_action_message Timer Action Message This is the messag inbound_groups-timer_action_seconds Timer Action Seconds This is the amount of time after the call is connected to the customer that the Timer Action is triggered. Default is -1 which is also inactive. inbound_groups-timer_action_destination Timer Action Destination This field is where you specify the Call Menu, Extension or In-Group that you want the call sent to if the Time Action is set to CALLMENU, EXTENSION or IN_GROUP. Default is empty. inbound_groups-drop_call_seconds Drop Call Seconds The number of seconds a call will stay in queue before being considered a DROP. +inbound_groups-drop_call_seconds_override Drop Seconds Override Container This setting will allow you to override the In-Group Drop Seconds setting based upon the day-of-the-week and the time-of-day. In a WEEKDAY_TIMERANGE_SECONDS Settings Container you can set multiple lines of overrides, one per line, for this In-Group using the following format with each field separated by commas,
day-of-week,start-time,end-time,drop-seconds-override
The day-of-week can be a single day, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY or it can be set to ALLDAYS for all 7 days a week.
The start-time and end-time both need to each be set to a four-digit time, based on 24-hour time, such as 1700 for 5:00pm server time.
The drop-seconds-override needs to be a number of seconds.
For example, if you have a line like the following,
MONDAY,0900,0930,300
Then on Mondays only from 9:00am to 9:30am, the Drop Seconds will be 300 seconds instead of what it is set to in the In-Group Drop Seconds setting.
NOTE, if there is more than one entry that will match the day and time, the last one in the settings container will be the one that is used.
Here is an example DROP_SECONDS_OVERRIDE Settings Container entry,

;day-of-week,start-time,end-time,drop-seconds-override
ALLDAYS,1200,1300,600
MONDAY,0900,0930,300
FRIDAY,1515,1700,900
FRIDAY,1725,1730,60
inbound_groups-drop_action Drop Action This menu allows you to choose what happens to a call when it has been waiting for longer than what is set in the Drop Call Seconds field. HANGUP will simply hang up the call, MESSAGE will send the call the Drop Exten that you have defined below, VOICEMAIL will send the call to the voicemail box that you have defined below and IN_GROUP will send the call to the Inbound Group that is defined below. VMAIL_NO_INST will send the call to the voicemail box that you have defined below and will not play instructions after the voicemail message. inbound_groups-drop_lead_reset Drop Lead Reset This option if set to Y, will set the lead called-since-last-reset field to N when the call is dropped and sent to an action like Message, Voicemail or Hangup. Default is N for disabled. inbound_groups-drop_exten Drop Exten If Drop Action is set to MESSAGE, this is the dial plan extension that the call will be sent to if it reaches Drop Call Seconds. For AGENTDIRECT in-groups, if the user is unavailable, you can put AGENTEXT in this field and the system will look up the user custom five field and send the call to that dialplan number.