Added leave_3way_start_recording campaign options

git-svn-id: svn://192.168.202.10@3402 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
mattf
2021-03-25 02:14:25 +00:00
parent 269521dece
commit 84966aa96f
8 changed files with 230 additions and 26 deletions
+5
View File
@@ -605,6 +605,11 @@ OTHER CHANGES:
169. Added WAV audio file validation for Audio Store, and display of badly
formatted WAV files in the audio chooser in admin.php
170. Added "Leave 3-Way Start Recording" campaign feature that will start a new
recording after the agent clicks on the LEAVE 3WAY button and leaves the
call. Also includes an "Exception" option to disable/enable only for
specific 3-way call numbers.
+4 -2
View File
@@ -1059,7 +1059,9 @@ shared_dial_rank TINYINT(3) default '99',
agent_search_method VARCHAR(2) default '',
qc_scorecard_id VARCHAR(20) DEFAULT '',
qc_statuses_id VARCHAR(20) DEFAULT '',
clear_form ENUM('DISABLED','ENABLED','ACKNOWLEDGE') default 'ACKNOWLEDGE'
clear_form ENUM('DISABLED','ENABLED','ACKNOWLEDGE') default 'ACKNOWLEDGE',
leave_3way_start_recording ENUM('DISABLED','ALL_CALLS','ALL_BUT_EXCEPTIONS','ONLY_EXCEPTIONS') default 'DISABLED',
leave_3way_start_recording_exception VARCHAR(40) default 'DISABLED'
) ENGINE=MyISAM;
CREATE TABLE vicidial_lists (
@@ -4871,4 +4873,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='1625',db_schema_update_date=NOW(),reload_timestamp=NOW();
UPDATE system_settings SET db_schema_version='1626',db_schema_update_date=NOW(),reload_timestamp=NOW();
+5
View File
@@ -1599,3 +1599,8 @@ ALTER TABLE audio_store_details ADD wav_format_details VARCHAR(255) default '';
ALTER TABLE audio_store_details ADD wav_asterisk_valid ENUM('','GOOD','BAD','NA') default '';
UPDATE system_settings SET db_schema_version='1625',db_schema_update_date=NOW() where db_schema_version < 1625;
ALTER TABLE vicidial_campaigns ADD leave_3way_start_recording ENUM('DISABLED','ALL_CALLS','ALL_BUT_EXCEPTIONS','ONLY_EXCEPTIONS') default 'DISABLED';
ALTER TABLE vicidial_campaigns ADD leave_3way_start_recording_exception VARCHAR(40) default 'DISABLED';
UPDATE system_settings SET db_schema_version='1626',db_schema_update_date=NOW() where db_schema_version < 1626;
+67 -3
View File
@@ -501,10 +501,11 @@
# 201122-1038 - Added Daily call count limit features
# 210309-2343 - Small change to Fake-call-logging in QM for some queuemetrics_pausereason settings
# 210315-2105 - Added CALLBACK manual dial filter option
# 210324-1606 - Added leave_3way_start_recording campaign options
#
$version = '2.14-394';
$build = '210315-2105';
$version = '2.14-395';
$build = '210324-1606';
$php_script = 'vdc_db_query.php';
$mel=1; # Mysql Error Log enabled = 1
$mysql_log_count=850;
@@ -809,7 +810,12 @@ if (isset($_GET["end_date"])) {$end_date=$_GET["end_date"];}
elseif (isset($_POST["end_date"])) {$end_date=$_POST["end_date"];}
if (isset($_GET["customer_sec"])) {$customer_sec=$_GET["customer_sec"];}
elseif (isset($_POST["customer_sec"])) {$customer_sec=$_POST["customer_sec"];}
if (isset($_GET["leave_3way_start_recording_trigger"])) {$leave_3way_start_recording_trigger=$_GET["leave_3way_start_recording_trigger"];}
elseif (isset($_POST["leave_3way_start_recording_trigger"])) {$leave_3way_start_recording_trigger=$_POST["leave_3way_start_recording_trigger"];}
if (isset($_GET["leave_3way_start_recording_filename"])) {$leave_3way_start_recording_filename=$_GET["leave_3way_start_recording_filename"];}
elseif (isset($_POST["leave_3way_start_recording_filename"])) {$leave_3way_start_recording_filename=$_POST["leave_3way_start_recording_filename"];}
if (isset($_GET["channelrec"])) {$channelrec=$_GET["channelrec"];}
elseif (isset($_POST["channelrec"])) {$channelrec=$_POST["channelrec"];}
header ("Content-type: text/html; charset=utf-8");
header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
@@ -1109,6 +1115,9 @@ $manual_dial_validation = preg_replace('/[^-_0-9a-zA-Z]/','',$manual_dial_valida
$start_date = preg_replace('/[^-_0-9]/','',$start_date);
$end_date = preg_replace('/[^-_0-9]/','',$end_date);
$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);
if ($non_latin < 1)
{
@@ -8643,6 +8652,61 @@ if ($stage == "end")
}
}
##### BEGIN leave_3way_start_recording if triggered ##### $ACTION == 'manDiaLlogCaLL' and $stage == "end" leave_3way_start_recording_trigger
if ( ($leave_3way_start_recording_trigger > 0) and (strlen($leave_3way_start_recording_filename) > 3) )
{
$recFULLDATE = date("Ymd-His");
$recTINYDATE = date("ymdHis");
$leave_3way_start_recording_filename = preg_replace("/FULLDATE/","$recFULLDATE",$leave_3way_start_recording_filename);
$leave_3way_start_recording_filename = preg_replace("/TINYDATE/","$recTINYDATE",$leave_3way_start_recording_filename);
$leave_3way_start_recording_filename = preg_replace("/EPOCH/","$StarTtime",$leave_3way_start_recording_filename);
$leave_3way_start_recording_filename = preg_replace("/\"|\'/",'',$leave_3way_start_recording_filename);
if (preg_match("/RECID/",$leave_3way_start_recording_filename) )
{
$stmt = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,filename,lead_id,user,vicidial_id,length_in_sec) values('$channel','$server_ip','$exten','$NOW_TIME','$StarTtime','$leave_3way_start_recording_filename','$lead_id','$user','$uniqueid','0')";
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);}
$RLaffected_rows = mysqli_affected_rows($link);
if ($RLaffected_rows > 0)
{
$recording_id = mysqli_insert_id($link);
}
$leave_3way_start_recording_filename = preg_replace("/RECID/","$recording_id",$leave_3way_start_recording_filename);
$stmt = "UPDATE recording_log SET filename='$leave_3way_start_recording_filename' where recording_id='$recording_id';";
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);}
$vmgr_callerid = substr($leave_3way_start_recording_filename, 0, 17) . '...';
$stmt="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$server_ip','','Originate','$vmgr_callerid','Channel: $channelrec','Context: $ext_context','Exten: $exten','Priority: 1','Callerid: $leave_3way_start_recording_filename','','','','','');";
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);}
}
else
{
$vmgr_callerid = substr($leave_3way_start_recording_filename, 0, 17) . '...';
$stmt="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$server_ip','','Originate','$vmgr_callerid','Channel: $channelrec','Context: $ext_context','Exten: $exten','Priority: 1','Callerid: $leave_3way_start_recording_filename','','','','','');";
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);}
$stmt = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,filename,lead_id,user,vicidial_id,length_in_sec) values('$channel','$server_ip','$exten','$NOW_TIME','$StarTtime','$leave_3way_start_recording_filename','$lead_id','$user','$uniqueid','0')";
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);}
$RLaffected_rows = mysqli_affected_rows($link);
if ($RLaffected_rows > 0)
{
$recording_id = mysqli_insert_id($link);
}
}
}
##### END leave_3way_start_recording if triggered #####
if ($log_no_enter > 0)
{
$fp = fopen ("./vicidial_debug.txt", "a");
+93 -8
View File
@@ -661,10 +661,11 @@
# 210319-1500 - Small change for agent screen visibility logging on logout
# 210320-2348 - Added additional update_fields options: scriptreload,script2reload
# 210322-1301 - Fixed issue with agent_hidden_sound
# 210324-1604 - Added leave_3way_start_recording campaign options
#
$version = '2.14-629c';
$build = '210322-1301';
$version = '2.14-630c';
$build = '210324-1604';
$mel=1; # Mysql Error Log enabled = 1
$mysql_log_count=95;
$one_mysql_log=0;
@@ -2222,7 +2223,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 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 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";}
@@ -2393,11 +2394,33 @@ else
$three_way_record_stop_exception = $row[163];
$pause_max_exceptions = $row[164];
$transfer_button_launch = $row[165];
$leave_3way_start_recording = $row[166];
$leave_3way_start_recording_exception = $row[167];
$LTWSRcontainer_entry='';
if ( (strlen($leave_3way_start_recording_exception) > 1) and ($leave_3way_start_recording_exception != 'DISABLED') )
{
# Gather details on Leave 3-Way Start Recording Exception settings container
$stmt = "SELECT container_entry FROM vicidial_settings_containers where container_id='$leave_3way_start_recording_exception';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01XXX',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$SCinfo_ct = mysqli_num_rows($rslt);
if ($SCinfo_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$LTWSRcontainer_entry = $row[0];
$LTWSRcontainer_entry = preg_replace("/\r|\t|\'|\"/",'',$LTWSRcontainer_entry);
$LTWSRcontainer_entry = preg_replace("/\n/",'x',$LTWSRcontainer_entry);
if (strlen($LTWSRcontainer_entry) > 2) {$LTWSRcontainer_entry = 'x'.$LTWSRcontainer_entry.'x';}
echo "<!-- LEAVE 3WAY START REC EXCEPTION: |$leave_3way_start_recording_exception($LTWSRcontainer_entry)| -->\n";
}
}
$TWRSEcontainer_entry='';
if ( (strlen($three_way_record_stop_exception) > 1) and ($three_way_record_stop_exception != 'DISABLED') )
{
# Gather details on Dial Timeout Lead settings container
# Gather details on 3-Way Recording Stop Exception settings container
$stmt = "SELECT container_entry FROM vicidial_settings_containers where container_id='$three_way_record_stop_exception';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01092',$user,$server_ip,$session_name,$one_mysql_log);}
@@ -2410,7 +2433,7 @@ else
$TWRSEcontainer_entry = preg_replace("/\r|\t|\'|\"/",'',$TWRSEcontainer_entry);
$TWRSEcontainer_entry = preg_replace("/\n/",'x',$TWRSEcontainer_entry);
if (strlen($TWRSEcontainer_entry) > 2) {$TWRSEcontainer_entry = 'x'.$TWRSEcontainer_entry.'x';}
echo "<!-- 3WAY STOP REC EXEPTION: |$three_way_record_stop_exception($TWRSEcontainer_entry)| -->\n";
echo "<!-- 3WAY STOP REC EXCEPTION: |$three_way_record_stop_exception($TWRSEcontainer_entry)| -->\n";
}
}
@@ -5260,6 +5283,10 @@ if ($enable_fast_refresh < 1) {echo "\tvar refresh_interval = 1000;\n";}
var ready_max_logout='<?php echo $ready_max_logout ?>';
var three_way_record_stop='<?php echo $three_way_record_stop ?>';
var three_way_record_stop_exception='<?php echo $TWRSEcontainer_entry ?>';
var leave_3way_start_recording='<?php echo $leave_3way_start_recording ?>';
var leave_3way_start_recording_exception='<?php echo $LTWSRcontainer_entry ?>';
var leave_3way_start_recording_trigger=0;
var leave_3way_start_recording_filename='';
var hangup_xfer_record_start='<?php echo $hangup_xfer_record_start ?>';
var hangup_both=0;
var agent_push_events='<?php echo $agent_push_events ?>';
@@ -5907,7 +5934,7 @@ window.addEventListener('blur', function()
function leave_3way_call(tempvarattempt,LTCclick)
{
if (LTCclick=='YES')
{button_click_log = button_click_log + "" + SQLdate + "-----leave_3way_call---" + tempvarattempt + "|";}
{button_click_log = button_click_log + "" + SQLdate + "-----leave_3way_call---" + tempvarattempt + " " + leave_3way_start_recording_trigger + " " + leave_3way_start_recording_filename + "|";}
threeway_end=0;
leaving_threeway=1;
@@ -5939,6 +5966,8 @@ window.addEventListener('blur', function()
function SendManualDial(taskFromConf,SMDclick)
{
conf_dialed=1;
leave_3way_start_recording_trigger=0;
leave_3way_start_recording_filename='';
var sending_group_alias = 0;
// Dial With Customer button
if (taskFromConf == 'YES')
@@ -5960,6 +5989,7 @@ window.addEventListener('blur', function()
var testXFregstr = 'x' + manual_string + 'x'
var regXFSRvars = new RegExp(testXFregstr,"g");
// test for three_way_record_stop and exception
if (three_way_record_stop == 'Y')
{
if (three_way_record_stop_exception == '')
@@ -5985,6 +6015,56 @@ window.addEventListener('blur', function()
}
}
// test for leave_3way_start_recording and exception
if ( (leave_3way_start_recording == '') || (leave_3way_start_recording == 'DISABLED') )
{var do_nothing=1;}
else
{
if (leave_3way_start_recording == 'ALL_CALLS')
{leave_3way_start_recording_trigger=1;}
else
{
if (leave_3way_start_recording_exception.match(regXFSRvars))
{
if (leave_3way_start_recording == 'ALL_BUT_EXCEPTIONS')
{leave_3way_start_recording_trigger=0;}
if (leave_3way_start_recording == 'ONLY_EXCEPTIONS')
{leave_3way_start_recording_trigger=1;}
}
else
{
if (leave_3way_start_recording == 'ALL_BUT_EXCEPTIONS')
{leave_3way_start_recording_trigger=1;}
if (leave_3way_start_recording == 'ONLY_EXCEPTIONS')
{leave_3way_start_recording_trigger=0;}
}
}
}
if (leave_3way_start_recording_trigger > 0)
{
var REGrecCLEANvlc = new RegExp(" ","g");
var recVendorLeadCode = document.vicidial_form.vendor_lead_code.value;
recVendorLeadCode = recVendorLeadCode.replace(REGrecCLEANvlc, '');
var recLeadID = document.vicidial_form.lead_id.value;
var REGrecCAMPAIGN = new RegExp("CAMPAIGN","g");
var REGrecINGROUP = new RegExp("INGROUP","g");
var REGrecCUSTPHONE = new RegExp("CUSTPHONE","g");
var REGrecAGENT = new RegExp("AGENT","g");
var REGrecVENDORLEADCODE = new RegExp("VENDORLEADCODE","g");
var REGrecLEADID = new RegExp("LEADID","g");
var REGrecCALLID = new RegExp("CALLID","g");
//temp_filename = campaign_rec_filename;
temp_filename = LIVE_campaign_rec_filename;
temp_filename = temp_filename.replace(REGrecCAMPAIGN, campaign);
temp_filename = temp_filename.replace(REGrecINGROUP, VDCL_group_id);
temp_filename = temp_filename.replace(REGrecCUSTPHONE, lead_dial_number);
temp_filename = temp_filename.replace(REGrecAGENT, user);
temp_filename = temp_filename.replace(REGrecVENDORLEADCODE, recVendorLeadCode);
temp_filename = temp_filename.replace(REGrecLEADID, recLeadID);
temp_filename = temp_filename.replace(REGrecCALLID, LasTCID);
leave_3way_start_recording_filename = temp_filename;
}
threeway_cid = '';
if (three_way_call_cid == 'CAMPAIGN')
{threeway_cid = campaign_cid;}
@@ -7592,7 +7672,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
DispO3wayCalLxfernumber = document.vicidial_form.xfernumber.value;
DispO3wayCalLcamptail = '';
xferredirect_query = "server_ip=" + server_ip + "&session_name=" + session_name + "&user=" + user + "&pass=" + pass + "&ACTION=" + redirecttype + "&format=text&channel=" + redirectvalue + "&call_server_ip=" + redirectserverip + "&queryCID=" + queryCID + "&exten=" + redirectdestination + "&ext_context=" + ext_context + "&ext_priority=1&extrachannel=" + redirectXTRAvalue + "&lead_id=" + document.vicidial_form.lead_id.value + "&phone_code=" + document.vicidial_form.phone_code.value + "&phone_number=" + document.vicidial_form.phone_number.value + "&filename=" + taskdebugnote + "&campaign=" + XfeR_GrouP + "&session_id=" + session_id + "&agentchannel=" + agentchannel + "&protocol=" + protocol + "&extension=" + extension + "&auto_dial_level=" + auto_dial_level + "&CalLCID=" + CalLCID + "&customerparked=" + customerparked;
xferredirect_query = "server_ip=" + server_ip + "&session_name=" + session_name + "&user=" + user + "&pass=" + pass + "&ACTION=" + redirecttype + "&format=text&channel=" + redirectvalue + "&call_server_ip=" + redirectserverip + "&queryCID=" + queryCID + "&exten=" + redirectdestination + "&ext_context=" + ext_context + "&ext_priority=1&extrachannel=" + redirectXTRAvalue + "&lead_id=" + document.vicidial_form.lead_id.value + "&phone_code=" + document.vicidial_form.phone_code.value + "&phone_number=" + document.vicidial_form.phone_number.value + "&filename=" + taskdebugnote + "&campaign=" + XfeR_GrouP + "&session_id=" + session_id + "&agentchannel=" + agentchannel + "&protocol=" + protocol + "&extension=" + extension + "&auto_dial_level=" + auto_dial_level + "&CalLCID=" + CalLCID + "&customerparked=" + customerparked + "&leave_3way_start_recording_trigger=" + leave_3way_start_recording_trigger + "&leave_3way_start_recording_filename=" + leave_3way_start_recording_filename;
if (taskdebugnote == 'FIRST')
{
@@ -7982,13 +8062,14 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
}
if (xmlhttp)
{
var channelrec = "Local/" + conf_silent_prefix + '' + session_id + "@" + ext_context;
manDiaLlog_query = "format=text&server_ip=" + server_ip + "&session_name=" + session_name + "&ACTION=manDiaLlogCaLL&stage=" + taskMDstage + "&uniqueid=" + document.vicidial_form.uniqueid.value +
"&user=" + user + "&pass=" + pass + "&campaign=" + campaign +
"&lead_id=" + document.vicidial_form.lead_id.value +
"&list_id=" + document.vicidial_form.list_id.value +
"&length_in_sec=0&phone_code=" + document.vicidial_form.phone_code.value +
"&phone_number=" + lead_dial_number +
"&exten=" + extension + "&channel=" + lastcustchannel + "&start_epoch=" + MDlogEPOCH + "&auto_dial_level=" + auto_dial_level + "&VDstop_rec_after_each_call=" + VDstop_rec_after_each_call + "&conf_silent_prefix=" + conf_silent_prefix + "&protocol=" + protocol + "&extension=" + extension + "&ext_context=" + ext_context + "&conf_exten=" + session_id + "&user_abb=" + user_abb + "&agent_log_id=" + agent_log_id + "&MDnextCID=" + LasTCID + "&inOUT=" + inOUT + "&alt_dial=" + dialed_label + "&DB=0" + "&agentchannel=" + agentchannel + "&conf_dialed=" + conf_dialed + "&leaving_threeway=" + leaving_threeway + "&hangup_all_non_reserved=" + hangup_all_non_reserved + "&blind_transfer=" + blind_transfer + "&dial_method=" + dial_method + "&nodeletevdac=" + nodeletevdac + "&alt_num_status=" + alt_num_status + "&qm_extension=" + qm_extension + "&called_count=" + document.vicidial_form.called_count.value;
"&exten=" + recording_exten + "&channel=" + lastcustchannel + "&start_epoch=" + MDlogEPOCH + "&auto_dial_level=" + auto_dial_level + "&VDstop_rec_after_each_call=" + VDstop_rec_after_each_call + "&conf_silent_prefix=" + conf_silent_prefix + "&protocol=" + protocol + "&extension=" + extension + "&ext_context=" + ext_context + "&conf_exten=" + session_id + "&user_abb=" + user_abb + "&agent_log_id=" + agent_log_id + "&MDnextCID=" + LasTCID + "&inOUT=" + inOUT + "&alt_dial=" + dialed_label + "&DB=0" + "&agentchannel=" + agentchannel + "&conf_dialed=" + conf_dialed + "&leaving_threeway=" + leaving_threeway + "&hangup_all_non_reserved=" + hangup_all_non_reserved + "&blind_transfer=" + blind_transfer + "&dial_method=" + dial_method + "&nodeletevdac=" + nodeletevdac + "&alt_num_status=" + alt_num_status + "&qm_extension=" + qm_extension + "&called_count=" + document.vicidial_form.called_count.value + "&leave_3way_start_recording_trigger=" + leave_3way_start_recording_trigger + "&leave_3way_start_recording_filename=" + leave_3way_start_recording_filename + "&channelrec=" + channelrec;
xmlhttp.open('POST', 'vdc_db_query.php');
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
// document.getElementById("busycallsdebug").innerHTML = "vdc_db_query.php?" + manDiaLlog_query;
@@ -11034,6 +11115,8 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
SCRIPTweb_form_vars='';
SCRIPT2web_form_vars='';
MDcheck_for_answer=0;
leave_3way_start_recording_trigger=0;
leave_3way_start_recording_filename='';
three_way_call_cid = orig_three_way_call_cid;
if (manual_dial_preview < 1)
{
@@ -15258,6 +15341,8 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
SCRIPTweb_form_vars='';
SCRIPT2web_form_vars='';
MDcheck_for_answer=0;
leave_3way_start_recording_trigger=0;
leave_3way_start_recording_filename='';
three_way_call_cid = orig_three_way_call_cid;
if (manual_auto_next > 0)
{manual_auto_next_trigger=1; manual_auto_next_count=manual_auto_next;}
+6 -4
View File
@@ -56,6 +56,7 @@
# 180502-2215 - Added new help display, added CONNECTED column
# 191013-0846 - Fixes for PHP7
# 210318-1558 - Added agent screen visibility stats
# 210324-2010 - Added agent visibility stats to HTML graphs
#
$startMS = microtime();
@@ -1023,7 +1024,7 @@ else
if ($PCpause_sec[$i]>$$max_varname) {$$max_varname=$PCpause_sec[$i];}
$graph_stats_sub[$m][$n]=$PCpause_sec[$i];
$n1=($n+19); # THIS IS FOR THE GRAPHING FURTHER DOWN; COULDN'T THINK OF A BETTER WAY TO DO THIS.
$n1=($n+21); # THIS IS FOR THE GRAPHING FURTHER DOWN; COULDN'T THINK OF A BETTER WAY TO DO THIS.
$graph_stats[$m][$n1]=$PCpause_sec[$i];
$SstatusTXT = sprintf("%10s", $pfUSERcodePAUSE_MS);
@@ -1105,7 +1106,8 @@ else
$graph_stats[$m][17]=trim($park_array[$Suser[$m]][1]+0);
$graph_stats[$m][18]=trim(round(MathZDC(($park_array[$Suser[$m]][1]+0), $user_holds)));
$graph_stats[$m][19]=trim($user_hpc);
$graph_stats[$m][20]=trim($VISIBLE_sec);
$graph_stats[$m][21]=trim($HIDDEN_sec);
if ($file_download<1)
{
@@ -1372,14 +1374,14 @@ else
{
array_push($graph_array, "ATD_PARKSdata|16|PARKS|integer|", "ATD_PARKTIMEdata|17|PARKTIME|time|", "ATD_AVGPARKdata|18|AVGPARK|time|", "ATD_PARKSCALLdata|19|PARKS/CALL|decimal|");
}
array_push($graph_array, "ATD_WAITdata|4|WAIT|time|", "ATD_WAITPCTdata|15|WAIT %|percent|", "ATD_TALKdata|5|TALK|time|", "ATD_TALKTIMEPCTdata|11|TALKTIME%|percent|", "ATD_DISPOdata|6|DISPO|time|", "ATD_DISPOTIMEPCTdata|12|DISPOTIME%|percent|", "ATD_PAUSEdata|7|PAUSE|time|", "ATD_PAUSETIMEPCTdata|13|PAUSETIME%|percent|", "ATD_DEADdata|8|DEAD|time|", "ATD_DEADTIMEPCTdata|14|DEADTIME%|percent|", "ATD_CUSTOMERdata|9|CUSTOMER|time|", "ATD_CONNECTEDdata|10|CONNECTED|time|");
array_push($graph_array, "ATD_WAITdata|4|WAIT|time|", "ATD_WAITPCTdata|15|WAIT %|percent|", "ATD_TALKdata|5|TALK|time|", "ATD_TALKTIMEPCTdata|11|TALKTIME%|percent|", "ATD_DISPOdata|6|DISPO|time|", "ATD_DISPOTIMEPCTdata|12|DISPOTIME%|percent|", "ATD_PAUSEdata|7|PAUSE|time|", "ATD_PAUSETIMEPCTdata|13|PAUSETIME%|percent|", "ATD_DEADdata|8|DEAD|time|", "ATD_DEADTIMEPCTdata|14|DEADTIME%|percent|", "ATD_CUSTOMERdata|9|CUSTOMER|time|", "ATD_CONNECTEDdata|10|CONNECTED|time|", "ATD_USERVISIBLEdata|20|VISIBLE|time|", "ATD_USERHIDDENdata|21|HIDDEN|time|");
for ($e=0; $e<count($sub_statusesARY); $e++)
{
$Sstatus=$sub_statusesARY[$e];
$SstatusTXT=$Sstatus;
if ($Sstatus=="") {$SstatusTXT="(blank)";}
array_push($graph_array, "ATD_SUBSTATUS".$e."data|".($e+19)."|".$SstatusTXT."|time|");
array_push($graph_array, "ATD_SUBSTATUS".$e."data|".($e+21)."|".$SstatusTXT."|time|");
}
$default_graph="bar"; # Graph that is initally displayed when page loads
+47 -8
View File
File diff suppressed because one or more lines are too long
+3 -1
View File
@@ -1,4 +1,4 @@
# version: 20210321012401
# version: 20210324101201
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>
@@ -273,6 +273,8 @@ campaigns-customer_3way_hangup_seconds Customer 3-Way Hangup Seconds <QXZ>If Cus
campaigns-customer_3way_hangup_action Customer 3-Way Hangup Action <QXZ>If Customer 3-way logging is enabled, this option allows you to have the agent screen automatically hang up on the call and go to the DISPO screen if this option is set to DISPO. Default is NONE.</QXZ>
campaigns-three_way_record_stop 3-Way Recording Stop <QXZ>If this option is enabled, recording of the session will stop when an agent clicks on the DIAL WITH CUSTOMER or PARK CUSTOMER DIAL transfer buttons. Default is N for disabled.</QXZ>
campaigns-three_way_record_stop_exception 3-Way Recording Stop Exception <QXZ>If not set to DISABLED, this setting allows you to exempt the 3-Way Recording Stop feature above for a set list of phone numbers, that you define in a PHONE_NUMBERS type of Settings Container. If 3-Way Recording Stop is set to -N-, then 3-way calls to the number in this list will have recordings stopped when the 3-way call is started. If 3-Way Recording Stop is set to -Y-, then 3-way calls to the number in this list will not have recordings stopped when the 3-way call is started. Default is DISABLED. If you use this feature, it is important that the settings container for it does not have any carriage returns, newlines or blank lines at the bottom of the Container Entry, or this feature may not work properly.</QXZ>
campaigns-leave_3way_start_recording Leave 3-Way Start Recording <QXZ>If this option is enabled, a recording will be started when the agent clicks the LEAVE 3WAY button while in a 3-way call with a customer, and the recording will continue after the agent has left the call. The ALL_BUT_EXCEPTIONS option will enable this feature for all 3-way calls except for calls to the phone numbers in the below Exception List of phone numbers. The ONLY_EXCEPTIONS option will disable this feature for all 3-way calls except for calls to the phone numbers in the below Exception List of phone numbers. Default is DISABLED. WARNING, this may result in these call recordings having several extra minutes of silence at the end of the recordings, after the customer and 3way call have hung up, unless your System Administrator enables the --cu3way and --no-vc-3way-check options on your dialers.</QXZ>
campaigns-leave_3way_start_recording_exception Leave 3-Way Start Recording Exception <QXZ>If the Leave 3-Way Start Recording feature above is enabled with one of the EXCEPTIONS options, this will be a Settings Container of phone numbers, one per line, for 3way call phone numbers. Must be a Settings Container of the type PHONE_NUMBERS to be available as an option on this menu. Default is DISABLED.</QXZ>
campaigns-hangup_xfer_record_start Hangup Xfer Recording Start <QXZ>If this option is enabled, recording of the session will start when the agent clicks on the HANGUP XFER button in the transfer conference section. Default is N for disabled.</QXZ>
campaigns-ivr_park_call Park Call IVR <QXZ>This option will allow an agent to park a call with a separate IVR PARK CALL button on their agent interface if this is ENABLED or ENABLED_PARK_ONLY. The ENABLED_PARK_ONLY option will allow the agent to send the call to park but not click to retrieve the call like the ENABLED option. The ENABLED_BUTTON_HIDDEN option allows the function through the API only. Default is DISABLED. This feature requires Asterisk 1.8 or higher to work.</QXZ>
campaigns-ivr_park_call_agi Park Call IVR AGI <QXZ>If the Park Call IVR field is not DISABLED, then this field is used as the AGI application string that the customer is sent to. This is a setting that should be set by your administrator if possible. This feature requires Asterisk 1.8 or higher to work.</QXZ>