Added more logging of dial alerts, force PauseCode MDSKIP when skipping previewed lead in vicidial.php
Added pause_max_url campaign feature Updated CALL_URL_FEATURES.txt doc git-svn-id: svn://192.168.202.10@3561 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
@@ -708,6 +708,8 @@ OTHER CHANGES:
|
||||
|
||||
197. Added 'update_alt_url' Non-Agent API function
|
||||
|
||||
198. Added "Pause Max URL" Campaign feature
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Call URL features(start call url, dispo call url, etc...)
|
||||
Call URL features(start call url, dispo call url, etc...) Updated: 2022-02-12
|
||||
|
||||
|
||||
|
||||
@@ -123,6 +123,31 @@ populated just like the web form address, with the VAR in the front and using
|
||||
--A--user_custom_one--B-- to define variables.
|
||||
|
||||
|
||||
################################################################################
|
||||
# DEAD CALL TRIGGER URL
|
||||
################################################################################
|
||||
|
||||
Dead Call Trigger URL - Similar to the Start Call URL feature, this is sent if
|
||||
the Dead Call Seconds Trigger is met while an agent is on a call and the
|
||||
customer hangs up the phone. You can use the agc/dispo_call_url.php script with
|
||||
this feature to send an email upon its triggering. (example at bottom of page)
|
||||
|
||||
|
||||
################################################################################
|
||||
# PAUSE MAX URL
|
||||
################################################################################
|
||||
|
||||
Pause Max URL - This feature is different because no call details are available
|
||||
because the agent is on pause at the time of the trigger. Because of this, only
|
||||
the user_custom... variables and other user variables are available to this
|
||||
function: --A--user--B--, --A--campaign--B--, --A--fullname--B--,
|
||||
--A--user_custom_one--B--, --A--user_custom_two--B--,
|
||||
--A--user_custom_three--B--, --A--user_custom_four--B--,
|
||||
--A--user_custom_five--B--, --A--user_group--B--, --A--agent_email--B--
|
||||
You can use the agc/dispo_call_url.php script with this feature to send an email
|
||||
upon its triggering. (example at bottom of page)
|
||||
|
||||
|
||||
|
||||
|
||||
################################################################################
|
||||
@@ -174,3 +199,8 @@ VARhttp://192.168.192.3/agc/vdc_call_url_test.php?leadID=--A--lead_id--B--&listI
|
||||
|
||||
VARhttp://www.server.org/env.php?one=--A--user_custom_one--B--&two=--A--user_custom_two--B--
|
||||
(http://www.server.org/env.php?one=asmith&two=hS87yt2)
|
||||
|
||||
https://www.server.org/agc/dispo_send_email.php?container_id=TEST_DEAD_EMAIL&lead_id=--A--lead_id--B--&call_id=--A--call_id--B--&dispo=DEAD&user=NOAGENTURL--A--user--B--&pass=--A--call_id--B--&sale_status=ALL-STATUSES&called_count=--A--called_count--B--&log_to_file=1
|
||||
|
||||
https://www.server.org/agc/dispo_send_email.php?container_id=TEST_PAUSE_MAX_EMAIL&lead_id=PAUSEMAX&call_id=PAUSEMAX&user=NOAGENTURL--A--user--B--&pass=--A--user--B--&sale_status=ALL-STATUSES&log_to_file=1
|
||||
|
||||
|
||||
@@ -1084,7 +1084,8 @@ call_limit_24hour TINYINT(3) UNSIGNED default '0',
|
||||
call_limit_24hour_override VARCHAR(40) default 'DISABLED',
|
||||
cid_group_id_two VARCHAR(20) default '---DISABLED---',
|
||||
incall_tally_threshold_seconds SMALLINT(5) UNSIGNED default '0',
|
||||
auto_alt_threshold TINYINT(3) UNSIGNED default '0'
|
||||
auto_alt_threshold TINYINT(3) UNSIGNED default '0',
|
||||
pause_max_url TEXT
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
CREATE TABLE vicidial_lists (
|
||||
@@ -5046,4 +5047,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='1652',db_schema_update_date=NOW(),reload_timestamp=NOW();
|
||||
UPDATE system_settings SET db_schema_version='1653',db_schema_update_date=NOW(),reload_timestamp=NOW();
|
||||
|
||||
@@ -1866,3 +1866,7 @@ UPDATE system_settings SET db_schema_version='1651',db_schema_update_date=NOW()
|
||||
ALTER TABLE vicidial_users ADD download_invalid_files ENUM('0','1') default '0';
|
||||
|
||||
UPDATE system_settings SET db_schema_version='1652',db_schema_update_date=NOW() where db_schema_version < 1652;
|
||||
|
||||
ALTER TABLE vicidial_campaigns ADD pause_max_url TEXT;
|
||||
|
||||
UPDATE system_settings SET db_schema_version='1653',db_schema_update_date=NOW() where db_schema_version < 1653;
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
# 210823-1623 - Fix for security issue, removed absolute path attachments, now must be in "agc/attachments" directory
|
||||
# 210823-1947 - Fix to allow for legacy attachment file locations in "agc" directory
|
||||
# 220127-0942 - Added email_header_attach and allow_sendmail_bypass options.php settings
|
||||
# 220213-0849 - Added code for Pause Max Email functionality
|
||||
#
|
||||
|
||||
$api_script = 'send_email';
|
||||
@@ -201,7 +202,7 @@ if ($qm_conf_ct > 0)
|
||||
###########################################
|
||||
|
||||
$call_id = preg_replace('/[^-_0-9a-zA-Z]/', '', $call_id);
|
||||
$lead_id = preg_replace('/[^_0-9]/', '', $lead_id);
|
||||
$lead_id = preg_replace('/[^_0-9a-zA-Z]/', '', $lead_id);
|
||||
$call_notes=preg_replace("/\\\\/","",$call_notes);
|
||||
$stage = preg_replace('/[^-_0-9a-zA-Z]/', '', $stage);
|
||||
$additional_notes=preg_replace("/\\\\/","",$additional_notes);
|
||||
@@ -286,6 +287,26 @@ if ($match_found > 0)
|
||||
{
|
||||
if (strlen($user) > 11) {$user = preg_replace("/NOAGENTURL/",'',$user);}
|
||||
$PADlead_id = sprintf("%010s", $lead_id);
|
||||
|
||||
if ( (preg_match("/PAUSEMAX/",$lead_id)) and (preg_match("/$user$/",$pass)) )
|
||||
{
|
||||
$one_minute_ago = date("Y-m-d H:i:s", mktime(date("H"),date("i")-1,date("s"),date("m"),date("d"),date("Y")));
|
||||
|
||||
$stmt="SELECT count(*) from vicidial_user_log where user='$user' and event_date > \"$one_minute_ago\" and event='TIMEOUTLOGOUT';";
|
||||
if ($DB) {echo "|$stmt|\n";}
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'60XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
$authlive=$row[0];
|
||||
$auth=$row[0];
|
||||
if ($authlive < 1)
|
||||
{
|
||||
echo _QXZ("User Not Found:")." 3|$user|$authlive|\n";
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( (strlen($pass) > 15) and (preg_match("/$PADlead_id$/",$pass)) )
|
||||
{
|
||||
$four_hours_ago = date("Y-m-d H:i:s", mktime(date("H")-4,date("i"),date("s"),date("m"),date("d"),date("Y")));
|
||||
@@ -309,6 +330,7 @@ if ($match_found > 0)
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$auth=0;
|
||||
|
||||
@@ -521,10 +521,11 @@
|
||||
# 210827-0749 - Added PJSIP compatibility
|
||||
# 211117-2033 - Added ALT Dispo Call URL url_call_length setting
|
||||
# 220119-1014 - Added auto_alt_threshold feature
|
||||
# 220212-0919 - Added pause_max_url_trigger input
|
||||
#
|
||||
|
||||
$version = '2.14-414';
|
||||
$build = '220119-1014';
|
||||
$version = '2.14-415';
|
||||
$build = '220212-0919';
|
||||
$php_script = 'vdc_db_query.php';
|
||||
$mel=1; # Mysql Error Log enabled = 1
|
||||
$mysql_log_count=876;
|
||||
@@ -839,6 +840,8 @@ if (isset($_GET["calls_waiting_vl_oneLABEL"])) {$calls_waiting_vl_oneLABEL=$_G
|
||||
elseif (isset($_POST["calls_waiting_vl_oneLABEL"])) {$calls_waiting_vl_oneLABEL=$_POST["calls_waiting_vl_oneLABEL"];}
|
||||
if (isset($_GET["calls_waiting_vl_twoLABEL"])) {$calls_waiting_vl_twoLABEL=$_GET["calls_waiting_vl_twoLABEL"];}
|
||||
elseif (isset($_POST["calls_waiting_vl_twoLABEL"])) {$calls_waiting_vl_twoLABEL=$_POST["calls_waiting_vl_twoLABEL"];}
|
||||
if (isset($_GET["pause_max_url_trigger"])) {$pause_max_url_trigger=$_GET["pause_max_url_trigger"];}
|
||||
elseif (isset($_POST["pause_max_url_trigger"])) {$pause_max_url_trigger=$_POST["pause_max_url_trigger"];}
|
||||
|
||||
# if options file exists, use the override values for the above variables
|
||||
# see the options-example.php file for more information
|
||||
@@ -1158,6 +1161,7 @@ $customer_sec = preg_replace('/[^-_0-9]/','',$customer_sec);
|
||||
$leave_3way_start_recording_trigger = preg_replace('/[^0-9]/','',$leave_3way_start_recording_trigger);
|
||||
$leave_3way_start_recording_filename = preg_replace('/[^-_0-9a-zA-Z]/','',$leave_3way_start_recording_filename);
|
||||
$channelrec = preg_replace("/\'|\"|\\\\|;/","",$channelrec);
|
||||
$pause_max_url_trigger = preg_replace('/[^0-9]/','',$pause_max_url_trigger);
|
||||
|
||||
if ($non_latin < 1)
|
||||
{
|
||||
@@ -16352,6 +16356,116 @@ if ($ACTION == 'userLOGout')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
##### send URL request if Pause Max URL is set and triggered
|
||||
if ($pause_max_url_trigger > 0)
|
||||
{
|
||||
$stmt="SELECT pause_max_url FROM vicidial_campaigns where campaign_id='$campaign';";
|
||||
if ($format=='debug') {echo "\n<!-- $stmt -->";}
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
if ($rslt)
|
||||
{
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
$pause_max_url = "$row[0]";
|
||||
if ($format=='debug') {echo "\n<!-- $row[0] -->";}
|
||||
|
||||
if (strlen($pause_max_url) > 5)
|
||||
{
|
||||
if ( (preg_match('/--A--user_custom_/i',$pause_max_url)) or (preg_match('/--A--fullname/i',$pause_max_url)) or (preg_match('/--A--user_group/i',$pause_max_url)) or (preg_match('/--A--agent_email--B--/i',$pause_max_url)) )
|
||||
{
|
||||
$stmt = "SELECT custom_one,custom_two,custom_three,custom_four,custom_five,full_name,user_group,email from vicidial_users where user='$user';";
|
||||
if ($DB) {echo "$stmt\n";}
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
$VUC_ct = mysqli_num_rows($rslt);
|
||||
if ($VUC_ct > 0)
|
||||
{
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
$user_custom_one = urlencode(trim($row[0]));
|
||||
$user_custom_two = urlencode(trim($row[1]));
|
||||
$user_custom_three = urlencode(trim($row[2]));
|
||||
$user_custom_four = urlencode(trim($row[3]));
|
||||
$user_custom_five = urlencode(trim($row[4]));
|
||||
$fullname = urlencode(trim($row[5]));
|
||||
$user_group = urlencode(trim($row[6]));
|
||||
$agent_email = urlencode(trim($row[7]));
|
||||
}
|
||||
}
|
||||
|
||||
$pause_max_url = preg_replace('/^VAR/','',$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--user--B--/i',"$user",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--pass--B--/i',"$orig_pass",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--campaign--B--/i',"$campaign",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--phone_login--B--/i',"$phone_login",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--original_phone_login--B--/i',"$original_phone_login",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--phone_pass--B--/i',"$phone_pass",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--SQLdate--B--/i',urlencode(trim($SQLdate)),$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--epoch--B--/i',"$epoch",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--server_ip--B--/i',"$server_ip",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--SIPexten--B--/i',urlencode(trim($exten)),$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--session_id--B--/i',"$conf_exten",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--fullname--B--/i',"$fullname",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--user_custom_one--B--/i',"$user_custom_one",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--user_custom_two--B--/i',"$user_custom_two",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--user_custom_three--B--/i',"$user_custom_three",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--user_custom_four--B--/i',"$user_custom_four",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--user_custom_five--B--/i',"$user_custom_five",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--agent_log_id--B--/i',"$CALL_agent_log_id",$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--user_group--B--/i',urlencode(trim($user_group)),$pause_max_url);
|
||||
$pause_max_url = preg_replace('/--A--agent_email--B--/i',urlencode(trim($agent_email)),$pause_max_url);
|
||||
|
||||
### insert a new url log entry
|
||||
$SQL_log = "$pause_max_url";
|
||||
$SQL_log = preg_replace('/;/','',$SQL_log);
|
||||
$SQL_log = addslashes($SQL_log);
|
||||
$stmt = "INSERT INTO vicidial_url_log SET uniqueid='$uniqueid',url_date='$NOW_TIME',url_type='pause_max',url='$SQL_log',url_response='';";
|
||||
if ($DB) {echo "$stmt\n";}
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
$affected_rows = mysqli_affected_rows($link);
|
||||
$url_id = mysqli_insert_id($link);
|
||||
|
||||
$URLstart_sec = date("U");
|
||||
|
||||
### grab the call_start_url ###
|
||||
if ($DB > 0) {echo "$pause_max_url<BR>\n";}
|
||||
$SCUfile = file("$pause_max_url");
|
||||
if ( !($SCUfile) )
|
||||
{
|
||||
$error_array = error_get_last();
|
||||
$error_type = $error_array["type"];
|
||||
$error_message = $error_array["message"];
|
||||
$error_line = $error_array["line"];
|
||||
$error_file = $error_array["file"];
|
||||
}
|
||||
|
||||
if ($DB > 0) {echo "$SCUfile[0]<BR>\n";}
|
||||
|
||||
### update url log entry
|
||||
$URLend_sec = date("U");
|
||||
$URLdiff_sec = ($URLend_sec - $URLstart_sec);
|
||||
if ($SCUfile)
|
||||
{
|
||||
$SCUfile_contents = implode("", $SCUfile);
|
||||
$SCUfile_contents = preg_replace('/;/','',$SCUfile_contents);
|
||||
$SCUfile_contents = addslashes($SCUfile_contents);
|
||||
}
|
||||
else
|
||||
{
|
||||
$SCUfile_contents = "PHP ERROR: Type=$error_type - Message=$error_message - Line=$error_line - File=$error_file";
|
||||
}
|
||||
$stmt = "UPDATE vicidial_url_log SET response_sec='$URLdiff_sec',url_response='$SCUfile_contents' where url_log_id='$url_id';";
|
||||
if ($DB) {echo "$stmt\n";}
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
$affected_rows = mysqli_affected_rows($link);
|
||||
|
||||
$stage .= "|SCU|$URLdiff_sec";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo "$vul_insert|$vc_remove|$vla_delete|$wcs_delete|$agent_channel|$vlia_delete\n";
|
||||
}
|
||||
$stage .= " $version $build";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
# vicidial.php - the web-based version of the astVICIDIAL client application
|
||||
#
|
||||
# Copyright (C) 2021 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
# Copyright (C) 2022 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
#
|
||||
# Other scripts that this application depends on:
|
||||
# - vdc_db_query.php: Updates information in the database
|
||||
@@ -683,10 +683,12 @@
|
||||
# 210913-0831 - Fix for alternate number auto-dial logging issues
|
||||
# 211223-0824 - Fix for API hangup post-call survey issue #1338
|
||||
# 211223-0906 - Fix for API transfer if AGENTDIRECT selected, issue #1330
|
||||
# 220128-0030 - Added more logging of dial alerts, force PauseCode MDSKIP when skipping previewed lead
|
||||
# 220212-0813 - Added pause_max_url triggering
|
||||
#
|
||||
|
||||
$version = '2.14-651c';
|
||||
$build = '211223-0906';
|
||||
$version = '2.14-653c';
|
||||
$build = '220212-0813';
|
||||
$php_script = 'vicidial.php';
|
||||
$mel=1; # Mysql Error Log enabled = 1
|
||||
$mysql_log_count=98;
|
||||
@@ -2281,7 +2283,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,in_man_dial_next_ready_seconds,in_man_dial_next_ready_seconds_override,transfer_no_dispo,local_call_time 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,transfer_no_dispo,local_call_time,pause_max_url 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";}
|
||||
@@ -2460,6 +2462,7 @@ else
|
||||
$in_man_dial_next_ready_seconds_override = $row[171];
|
||||
$transfer_no_dispo = $row[172];
|
||||
$local_call_time = $row[173];
|
||||
$pause_max_url = $row[174];
|
||||
|
||||
if ( (strlen($VU_manual_dial_filter) > 0) and ($VU_manual_dial_filter != 'DISABLED') )
|
||||
{
|
||||
@@ -2588,6 +2591,9 @@ else
|
||||
echo "<!-- PAUSE MAX EXEPTION CODES: |$pause_max_exceptions($PMEcontainer_entry)| -->\n";
|
||||
}
|
||||
}
|
||||
$pause_max_url_trigger=0;
|
||||
if ( (strlen($pause_max_url) > 5) and ($pause_max > 10) ) {$pause_max_url_trigger=1;}
|
||||
|
||||
if ( ($queuemetrics_pe_phone_append > 0) and (strlen($qm_phone_environment)>0) )
|
||||
{$qm_phone_environment .= "-$qm_extension";}
|
||||
|
||||
@@ -5597,6 +5603,7 @@ if ($enable_fast_refresh < 1) {echo "\tvar refresh_interval = 1000;\n";}
|
||||
var user_pass_webform = '<?php echo $user_pass_webform ?>';
|
||||
var phone_login_webform = '<?php echo $phone_login_webform ?>';
|
||||
var recording_active=0;
|
||||
var pause_max_url_trigger = '<?php echo $pause_max_url_trigger ?>';
|
||||
var DiaLControl_auto_HTML = "<a href=\"#\" onclick=\"AutoDial_ReSume_PauSe('VDADready','','','','','','','YES');\"><img src=\"./images/<?php echo _QXZ("vdc_LB_paused.gif") ?>\" border=\"0\" alt=\"You are paused\" /></a>";
|
||||
var DiaLControl_auto_HTML_ready = "<a href=\"#\" onclick=\"AutoDial_ReSume_PauSe('VDADpause','','','','','','','YES');\"><img src=\"./images/<?php echo _QXZ("vdc_LB_active.gif") ?>\" border=\"0\" alt=\"You are active\" /></a>";
|
||||
var DiaLControl_auto_HTML_OFF = "<img src=\"./images/<?php echo _QXZ("vdc_LB_blank_OFF.gif") ?>\" border=\"0\" alt=\"pause button disabled\" />";
|
||||
@@ -6851,7 +6858,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
api_logout_flag=1;
|
||||
button_click_log = button_click_log + "" + SQLdate + "-----api_logout---" + AGLogiN + " " + api_logout_flag + "|";
|
||||
if ( (MD_channel_look < 1) && (VD_live_customer_call < 1) && (alt_dial_status_display < 1) )
|
||||
{LogouT('API','');}
|
||||
{LogouT('API','','');}
|
||||
}
|
||||
}
|
||||
var VLAStatuS_array = check_time_array[4].split("Status: ");
|
||||
@@ -9864,6 +9871,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
var XDerrorDescSIP = MDlookResponse_array[4];
|
||||
var DiaLAlerTMessagE = "<?php echo _QXZ("Call Rejected:"); ?> " + XDchannel + "\n" + XDerrorDesc + "\n" + XDerrorDescSIP;
|
||||
TimerActionRun("DiaLAlerT",DiaLAlerTMessagE,0);
|
||||
button_click_log = button_click_log + "" + SQLdate + "-----DiaLAlerT---Call-Rejected" + XDerrorDesc + "|";
|
||||
agent_events('agent_alert', "Call Rejected: " + XDerrorDesc + ' ' + XDerrorDescSIP, aec); aec++;
|
||||
}
|
||||
if ( (XDchannel.match(regMDL)) && (asterisk_version != '1.0.8') && (asterisk_version != '1.0.9') && (MD_ring_secondS < 10) )
|
||||
@@ -9924,6 +9932,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
var MDerrorDescSIP = MDlookResponse_array[4];
|
||||
var DiaLAlerTMessagE = "<?php echo _QXZ("Call Rejected:"); ?> " + MDchannel + "\n" + MDerrorDesc + "\n" + MDerrorDescSIP;
|
||||
TimerActionRun("DiaLAlerT",DiaLAlerTMessagE,0);
|
||||
button_click_log = button_click_log + "" + SQLdate + "-----DiaLAlerT---Call-Rejected" + MDerrorDesc + "|";
|
||||
agent_events('agent_alert', "Call Rejected: " + MDerrorDesc + ' ' + MDerrorDescSIP, aec); aec++;
|
||||
}
|
||||
if ( (MDchannel.match(regMDL)) && (asterisk_version != '1.0.8') && (asterisk_version != '1.0.9') )
|
||||
@@ -11496,6 +11505,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
hideDiv("DiaLLeaDPrevieW");
|
||||
}
|
||||
// document.getElementById('vcFormIFrame').src='./vdc_form_display.php?lead_id=&list_id=&stage=WELCOME';
|
||||
PauseCodeSelect_submit('MDSKIP');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15903,7 +15913,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
showDiv('LogouTBox');
|
||||
}
|
||||
else
|
||||
{LogouT('API','');}
|
||||
{LogouT('API','','');}
|
||||
}
|
||||
if (focus_blur_enabled==1)
|
||||
{
|
||||
@@ -16951,7 +16961,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
{
|
||||
AutoDial_ReSume_PauSe("VDADpause",'','','',"LOGOUT");
|
||||
}
|
||||
LogouT('CLOSE','');
|
||||
LogouT('CLOSE','','');
|
||||
// removing alert because onbeforeunload function invalidates it
|
||||
// alert("<?php echo _QXZ("PLEASE CLICK THE LOGOUT LINK TO LOG OUT NEXT TIME."); ?>\n");
|
||||
}
|
||||
@@ -16971,16 +16981,16 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
pausetrigger='PAUSE';
|
||||
// AutoDial_ReSume_PauSe("VDADpause",'','','',"LOGOUT");
|
||||
}
|
||||
LogouT('NORMAL',pausetrigger);
|
||||
LogouT('NORMAL',pausetrigger,'');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ################################################################################
|
||||
// Log the user out of the system, if active call or active dial is occuring, don't let them.
|
||||
function LogouT(tempreason,temppause)
|
||||
function LogouT(tempreason,temppause,temp_pause_max_url_trigger)
|
||||
{
|
||||
button_click_log = button_click_log + "" + SQLdate + "-----LogouT---" + tempreason + " " + temppause + "|";
|
||||
button_click_log = button_click_log + "" + SQLdate + "-----LogouT---" + tempreason + " " + temppause + " " + temp_pause_max_url_trigger + "|";
|
||||
if (isVisible)
|
||||
{
|
||||
onHidden('1');
|
||||
@@ -17034,7 +17044,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
}
|
||||
if (xmlhttp)
|
||||
{
|
||||
VDlogout_query = "server_ip=" + server_ip + "&session_name=" + session_name + "&ACTION=userLOGout&format=text&user=" + user + "&pass=" + pass + "&campaign=" + campaign + "&conf_exten=" + session_id + "&extension=" + extension + "&protocol=" + protocol + "&agent_log_id=" + agent_log_id + "&no_delete_sessions=" + no_delete_sessions + "&phone_ip=" + phone_ip + "&enable_sipsak_messages=" + enable_sipsak_messages + "&LogouTKicKAlL=" + LogouTKicKAlL + "&ext_context=" + ext_context + "&qm_extension=" + qm_extension + "&stage=" + tempreason + "&pause_trigger=" + temppause + "&dial_method=" + dial_method;
|
||||
VDlogout_query = "server_ip=" + server_ip + "&session_name=" + session_name + "&ACTION=userLOGout&format=text&user=" + user + "&pass=" + pass + "&campaign=" + campaign + "&conf_exten=" + session_id + "&extension=" + extension + "&protocol=" + protocol + "&agent_log_id=" + agent_log_id + "&no_delete_sessions=" + no_delete_sessions + "&phone_ip=" + phone_ip + "&enable_sipsak_messages=" + enable_sipsak_messages + "&LogouTKicKAlL=" + LogouTKicKAlL + "&ext_context=" + ext_context + "&qm_extension=" + qm_extension + "&stage=" + tempreason + "&pause_trigger=" + temppause + "&dial_method=" + dial_method + "&pause_max_url_trigger=" + temp_pause_max_url_trigger;
|
||||
xmlhttp.open('POST', 'vdc_db_query.php');
|
||||
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
|
||||
xmlhttp.send(VDlogout_query);
|
||||
@@ -20442,7 +20452,7 @@ function phone_number_format(formatphone) {
|
||||
{trigger_shift_logout =(trigger_shift_logout - 1);}
|
||||
else
|
||||
{
|
||||
LogouT('SHIFT','');
|
||||
LogouT('SHIFT','','');
|
||||
trigger_shift_logout=0;
|
||||
}
|
||||
}
|
||||
@@ -20694,14 +20704,14 @@ function phone_number_format(formatphone) {
|
||||
|
||||
if ( (ready_max_logout > 0) && (VDRP_stage_seconds > ready_max_logout) )
|
||||
{
|
||||
LogouT('READY_TIMEOUT','');
|
||||
LogouT('READY_TIMEOUT','','');
|
||||
}
|
||||
}
|
||||
if (pause_max_finish > 0)
|
||||
{
|
||||
if (pause_max_finish < 2)
|
||||
{
|
||||
LogouT('TIMEOUT','');
|
||||
LogouT('TIMEOUT','',pause_max_url_trigger);
|
||||
}
|
||||
pause_max_finish--;
|
||||
}
|
||||
@@ -22345,7 +22355,7 @@ if ($agent_display_dialable_leads > 0)
|
||||
</span>
|
||||
|
||||
<span style="position:absolute;left:0px;top:0px;z-index:<?php $zi++; echo $zi ?>;" id="AgenTDisablEBoX">
|
||||
<table border="0" bgcolor="#FFFFFF" width="<?php echo $CAwidth ?>px" height="<?php echo $WRheight ?>px"><tr><td align="center"><font class="sd_text"><?php echo _QXZ("Your session has been disabled"); ?><br /><a href="#" onclick="LogouT('DISABLED','');return false;"><?php echo _QXZ("CLICK HERE TO RESET YOUR SESSION"); ?></a></font><br /><br /><!--<a href="#" onclick="hideDiv('AgenTDisablEBoX');return false;">Go Back</a>-->
|
||||
<table border="0" bgcolor="#FFFFFF" width="<?php echo $CAwidth ?>px" height="<?php echo $WRheight ?>px"><tr><td align="center"><font class="sd_text"><?php echo _QXZ("Your session has been disabled"); ?><br /><a href="#" onclick="LogouT('DISABLED','','');return false;"><?php echo _QXZ("CLICK HERE TO RESET YOUR SESSION"); ?></a></font><br /><br /><!--<a href="#" onclick="hideDiv('AgenTDisablEBoX');return false;">Go Back</a>-->
|
||||
</td></tr></table>
|
||||
</span>
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
# version: 20220120090501
|
||||
# version: 20220212080401
|
||||
users-user User ID <QXZ>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.</QXZ>
|
||||
users-pass Password <QXZ>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.</QXZ>
|
||||
users-force_change_password Force Change Password <QXZ>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.</QXZ>
|
||||
@@ -330,6 +330,7 @@ campaigns-dispo_max_dispo Dispo Call Max Status <QXZ>If Dispo Call Max Seconds i
|
||||
campaigns-pause_max Agent Pause Max Seconds <QXZ>If this is set to greater than 0, and the agent has not gone out of PAUSED status in this number of seconds, the agent will automatically be logged out of the agent screen. Default is 0 for disabled.</QXZ>
|
||||
campaigns-pause_max_dispo Agent Pause Max Status <QXZ>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.</QXZ>
|
||||
campaigns-pause_max_exceptions Agent Pause Max Exceptions <QXZ>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.</QXZ>
|
||||
campaigns-pause_max_url Pause Max URL <QXZ>If Agent Pause Max Seconds is enabled and triggered in the agent screen, then this URL will be requested from the back-end of the webserver. Default is blank for inactive.</QXZ>
|
||||
campaigns-ready_max_logout Agent Ready Max Seconds Logout <QXZ>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.</QXZ>
|
||||
campaigns-in_man_dial_next_ready_seconds Inbound Manual Dial Agent Forced Ready Seconds <QXZ>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.</QXZ>
|
||||
campaigns-in_man_dial_next_ready_seconds_override InMan Agent Forced Ready Override Container <QXZ>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,<br>day-of-week,start-time,end-time,inman-force-ready-seconds-override<br>The <U>day-of-week</U> 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.<br>The <U>start-time</U> and <U>end-time</U> both need to each be set to a four-digit time, based on 24-hour time, such as 1700 for 5:00pm server time.<br>The <U>inman-force-ready-seconds-override</U> needs to be a number of seconds.<br>For example, if you have a line like the following,<br>MONDAY,0900,0930,30<br>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.<br>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.<br>Here is an example WEEKDAY_TIMERANGE_SECONDS Settings Container entry,<br><br>;day-of-week,start-time,end-time,inman-force-ready-seconds-override<br>ALLDAYS,1200,1300,30<br>MONDAY,0900,0930,20<br>FRIDAY,1515,1700,60<br>FRIDAY,1725,1730,5</QXZ>
|
||||
|
||||
Reference in New Issue
Block a user