Added 'Agent In-Call Tally Seconds Threshold' campaign setting, to better handle dialing volume on campaigns with long agent talk time.

git-svn-id: svn://192.168.202.10@3531 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
mattf
2021-10-22 17:53:13 +00:00
parent 5a6c74a076
commit 75752f6c53
7 changed files with 129 additions and 14 deletions
+3
View File
@@ -686,6 +686,9 @@ OTHER CHANGES:
191. Added 'batch_update_lead' Non-Agent API function 191. Added 'batch_update_lead' Non-Agent API function
192. Added 'Agent In-Call Tally Seconds Threshold' campaign setting, to better
handle dialing volume on campaigns with long agent talk time.
+31 -3
View File
@@ -56,9 +56,10 @@
# 201214-0857 - Added SHARED_ campaign agent rotation functions # 201214-0857 - Added SHARED_ campaign agent rotation functions
# 210207-1205 - Added more logging and debug code for SHARED agent campaigns # 210207-1205 - Added more logging and debug code for SHARED agent campaigns
# 210707-2215 - Fixes for several rare logging and stats issues # 210707-2215 - Fixes for several rare logging and stats issues
# 211022-1638 - Added incall_tally_threshold_seconds campaign feature
# #
$build='210707-2215'; $build='211022-1638';
# constants # constants
$DB=0; # Debug flag, set to 0 for no debug messages, On an active system this will generate lots of lines of output per minute $DB=0; # Debug flag, set to 0 for no debug messages, On an active system this will generate lots of lines of output per minute
$US='__'; $US='__';
@@ -477,16 +478,17 @@ while ($master_loop < $CLIloops)
@drop_rate_group=@MT; @drop_rate_group=@MT;
@available_only_tally_threshold=@MT; @available_only_tally_threshold=@MT;
@available_only_tally_threshold_agents=@MT; @available_only_tally_threshold_agents=@MT;
@incall_tally_threshold_seconds=@MT;
@dial_level_threshold=@MT; @dial_level_threshold=@MT;
@dial_level_threshold_agents=@MT; @dial_level_threshold_agents=@MT;
if ($CLIcampaign) if ($CLIcampaign)
{ {
$stmtA = "SELECT campaign_id,lead_order,hopper_level,auto_dial_level,local_call_time,lead_filter_id,use_internal_dnc,dial_method,available_only_ratio_tally,adaptive_dropped_percentage,adaptive_maximum_level,adaptive_latest_server_time,adaptive_intensity,adaptive_dl_diff_target,UNIX_TIMESTAMP(campaign_changedate),campaign_stats_refresh,campaign_allow_inbound,drop_rate_group,UNIX_TIMESTAMP(campaign_calldate),realtime_agent_time_stats,available_only_tally_threshold,available_only_tally_threshold_agents,dial_level_threshold,dial_level_threshold_agents,ofcom_uk_drop_calc from vicidial_campaigns where campaign_id='$CLIcampaign'"; $stmtA = "SELECT campaign_id,lead_order,hopper_level,auto_dial_level,local_call_time,lead_filter_id,use_internal_dnc,dial_method,available_only_ratio_tally,adaptive_dropped_percentage,adaptive_maximum_level,adaptive_latest_server_time,adaptive_intensity,adaptive_dl_diff_target,UNIX_TIMESTAMP(campaign_changedate),campaign_stats_refresh,campaign_allow_inbound,drop_rate_group,UNIX_TIMESTAMP(campaign_calldate),realtime_agent_time_stats,available_only_tally_threshold,available_only_tally_threshold_agents,dial_level_threshold,dial_level_threshold_agents,ofcom_uk_drop_calc,drop_call_seconds,drop_action,drop_inbound_group,incall_tally_threshold_seconds from vicidial_campaigns where campaign_id='$CLIcampaign'";
} }
else else
{ {
$stmtA = "SELECT campaign_id,lead_order,hopper_level,auto_dial_level,local_call_time,lead_filter_id,use_internal_dnc,dial_method,available_only_ratio_tally,adaptive_dropped_percentage,adaptive_maximum_level,adaptive_latest_server_time,adaptive_intensity,adaptive_dl_diff_target,UNIX_TIMESTAMP(campaign_changedate),campaign_stats_refresh,campaign_allow_inbound,drop_rate_group,UNIX_TIMESTAMP(campaign_calldate),realtime_agent_time_stats,available_only_tally_threshold,available_only_tally_threshold_agents,dial_level_threshold,dial_level_threshold_agents,ofcom_uk_drop_calc,drop_call_seconds,drop_action,drop_inbound_group from vicidial_campaigns where ( (active='Y') or (campaign_stats_refresh='Y') )"; $stmtA = "SELECT campaign_id,lead_order,hopper_level,auto_dial_level,local_call_time,lead_filter_id,use_internal_dnc,dial_method,available_only_ratio_tally,adaptive_dropped_percentage,adaptive_maximum_level,adaptive_latest_server_time,adaptive_intensity,adaptive_dl_diff_target,UNIX_TIMESTAMP(campaign_changedate),campaign_stats_refresh,campaign_allow_inbound,drop_rate_group,UNIX_TIMESTAMP(campaign_calldate),realtime_agent_time_stats,available_only_tally_threshold,available_only_tally_threshold_agents,dial_level_threshold,dial_level_threshold_agents,ofcom_uk_drop_calc,drop_call_seconds,drop_action,drop_inbound_group,incall_tally_threshold_seconds from vicidial_campaigns where ( (active='Y') or (campaign_stats_refresh='Y') )";
} }
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
@@ -526,6 +528,7 @@ while ($master_loop < $CLIloops)
$drop_call_seconds[$rec_count] = $aryA[25]; $drop_call_seconds[$rec_count] = $aryA[25];
$drop_action[$rec_count] = $aryA[26]; $drop_action[$rec_count] = $aryA[26];
$drop_inbound_group[$rec_count] = $aryA[27]; $drop_inbound_group[$rec_count] = $aryA[27];
$incall_tally_threshold_seconds[$rec_count] = $aryA[28];
$rec_count++; $rec_count++;
} }
@@ -6346,6 +6349,8 @@ sub calculate_dial_level
{ {
$RESETdiff_ratio_updater++; $RESETdiff_ratio_updater++;
$VCSINCALL[$i]=0; $VCSINCALL[$i]=0;
$VCSINCALLthresh[$i]=0;
$VCSINCALLdiff[$i]=0;
$VCSREADY[$i]=0; $VCSREADY[$i]=0;
$VCSCLOSER[$i]=0; $VCSCLOSER[$i]=0;
$VCSPAUSED[$i]=0; $VCSPAUSED[$i]=0;
@@ -6375,7 +6380,30 @@ sub calculate_dial_level
$VCSagents[$i] = ($VCSagents[$i] + $VCSagent_count[$i]); $VCSagents[$i] = ($VCSagents[$i] + $VCSagent_count[$i]);
} }
$sthA->finish(); $sthA->finish();
$VCSINCALLthresh[$i] = $VCSINCALL[$i];
# If Agent In-Call Tally Seconds Threshold is enabled, find the number of agents INCALL at-or-below the incall_tally_threshold_seconds
if ($incall_tally_threshold_seconds[$i] > 0)
{
$VCSINCALLthresh[$i]=0;
$stmtA = "SELECT count(*) from vicidial_live_agents where ( (campaign_id='$campaign_id[$i]') or (dial_campaign_id='$campaign_id[$i]') $drop_ingroup_SQL[$i] ) and last_update_time > '$VDL_one' and status IN('INCALL','QUEUE') and ( (UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(last_call_time)) <= $incall_tally_threshold_seconds[$i]);";
$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;
$VCSINCALLthresh[$i] = ($VCSINCALLthresh[$i] + $aryA[0]);
}
$sthA->finish();
$VCSINCALLdiff[$i] = ($VCSINCALL[$i] - $VCSINCALLthresh[$i]);
$adaptive_string .= " !! AGENT IN-CALL TALLY SECONDS THRESHOLD ENABLED for INCALL AGENTS: $incall_tally_threshold_seconds[$i] seconds |all: $VCSINCALL[$i] under thresh: $VCSINCALLthresh[$i] (diff: $VCSINCALLdiff[$i])|\n";
$VCSINCALL[$i] = $VCSINCALLthresh[$i];
}
# If AVAILABLE ONLY TALLY is enabled, find proper agent counts
if ($available_only_ratio_tally[$i] =~ /Y/) if ($available_only_ratio_tally[$i] =~ /Y/)
{$VCSagents_calc[$i] = $VCSREADY[$i];} {$VCSagents_calc[$i] = $VCSREADY[$i];}
else else
+74 -3
View File
@@ -145,9 +145,10 @@
# 210731-0952 - Added cid_group_id_two campaign option # 210731-0952 - Added cid_group_id_two campaign option
# 210827-1044 - Fix for Extended auto-alt-dialing issue #1323 # 210827-1044 - Fix for Extended auto-alt-dialing issue #1323
# 210901-1020 - Another fix for Extended auto-alt-dialing issue #1323 # 210901-1020 - Another fix for Extended auto-alt-dialing issue #1323
# 211022-1637 - Added incall_tally_threshold_seconds campaign feature
# #
$build='210901-1020'; $build='211022-1637';
$script='AST_VDauto_dial'; $script='AST_VDauto_dial';
### begin parsing run-time options ### ### begin parsing run-time options ###
if (length($ARGV[0])>1) if (length($ARGV[0])>1)
@@ -424,8 +425,12 @@ while($one_day_interval > 0)
@DBIPactive=@MT; @DBIPactive=@MT;
@DBIPvdadexten=@MT; @DBIPvdadexten=@MT;
@DBIPcount=@MT; @DBIPcount=@MT;
@DBIPcountT=@MT;
@DBIPACTIVEcount=@MT; @DBIPACTIVEcount=@MT;
@DBIPINCALLcount=@MT; @DBIPINCALLcount=@MT;
@DBIPINCALLthresh=@MT;
@DBIPINCALLdiff=@MT;
@DBIPINCALLdeadT=@MT;
@DBIPDEADcount=@MT; @DBIPDEADcount=@MT;
@DBIPadlevel=@MT; @DBIPadlevel=@MT;
@DBIPdialtimeout=@MT; @DBIPdialtimeout=@MT;
@@ -464,6 +469,7 @@ while($one_day_interval > 0)
@DBIPavailable_only_tally=@MT; @DBIPavailable_only_tally=@MT;
@DBIPavailable_only_tally_threshold=@MT; @DBIPavailable_only_tally_threshold=@MT;
@DBIPavailable_only_tally_threshold_agents=@MT; @DBIPavailable_only_tally_threshold_agents=@MT;
@DBIPincall_tally_threshold_seconds=@MT;
@DBIPdial_level_threshold=@MT; @DBIPdial_level_threshold=@MT;
@DBIPdial_level_threshold_agents=@MT; @DBIPdial_level_threshold_agents=@MT;
@DBIPadaptive_dl_diff_target=@MT; @DBIPadaptive_dl_diff_target=@MT;
@@ -817,6 +823,7 @@ while($one_day_interval > 0)
{ {
@camp_sort_line = split(/---/,$DBIPcampaign_sorted[$user_CIPct_sort]); @camp_sort_line = split(/---/,$DBIPcampaign_sorted[$user_CIPct_sort]);
$user_CIPct = $camp_sort_line[3]; $user_CIPct = $camp_sort_line[3];
$user_last_call_epoch_CIP = $camp_sort_line[1];
$debug_string=''; $debug_string='';
$user_counter=0; $user_counter=0;
foreach(@DBlive_campaign) foreach(@DBlive_campaign)
@@ -932,7 +939,7 @@ while($one_day_interval > 0)
### grab the dial_level and multiply by active agents to get your goalcalls ### grab the dial_level and multiply by active agents to get your goalcalls
$DBIPadlevel[$user_CIPct]=0; $DBIPadlevel[$user_CIPct]=0;
$stmtA = "SELECT auto_dial_level,local_call_time,dial_timeout,dial_prefix,campaign_cid,active,campaign_vdad_exten,closer_campaigns,omit_phone_code,available_only_ratio_tally,auto_alt_dial,campaign_allow_inbound,queue_priority,dial_method,use_custom_cid,inbound_queue_no_dial,available_only_tally_threshold,available_only_tally_threshold_agents,dial_level_threshold,dial_level_threshold_agents,adaptive_dl_diff_target,dl_diff_target_method,inbound_no_agents_no_dial_container,inbound_no_agents_no_dial_threshold,cid_group_id,scheduled_callbacks_auto_reschedule,call_quota_lead_ranking,dial_timeout_lead_container,drop_call_seconds,drop_action,drop_inbound_group,call_limit_24hour_method,call_limit_24hour_scope,call_limit_24hour,call_limit_24hour_override,cid_group_id_two FROM vicidial_campaigns where campaign_id='$DBIPcampaign[$user_CIPct]'"; $stmtA = "SELECT auto_dial_level,local_call_time,dial_timeout,dial_prefix,campaign_cid,active,campaign_vdad_exten,closer_campaigns,omit_phone_code,available_only_ratio_tally,auto_alt_dial,campaign_allow_inbound,queue_priority,dial_method,use_custom_cid,inbound_queue_no_dial,available_only_tally_threshold,available_only_tally_threshold_agents,dial_level_threshold,dial_level_threshold_agents,adaptive_dl_diff_target,dl_diff_target_method,inbound_no_agents_no_dial_container,inbound_no_agents_no_dial_threshold,cid_group_id,scheduled_callbacks_auto_reschedule,call_quota_lead_ranking,dial_timeout_lead_container,drop_call_seconds,drop_action,drop_inbound_group,call_limit_24hour_method,call_limit_24hour_scope,call_limit_24hour,call_limit_24hour_override,cid_group_id_two,incall_tally_threshold_seconds FROM vicidial_campaigns where campaign_id='$DBIPcampaign[$user_CIPct]'";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows; $sthArows=$sthA->rows;
@@ -980,6 +987,7 @@ while($one_day_interval > 0)
$DBIPcall_limit_24hour[$user_CIPct] = $aryA[33]; $DBIPcall_limit_24hour[$user_CIPct] = $aryA[33];
$DBIPcall_limit_24hour_override[$user_CIPct] = $aryA[34]; $DBIPcall_limit_24hour_override[$user_CIPct] = $aryA[34];
$DBIPcid_group_id_two[$user_CIPct] = $aryA[35]; $DBIPcid_group_id_two[$user_CIPct] = $aryA[35];
$DBIPincall_tally_threshold_seconds[$user_CIPct] = $aryA[36];
# check for Dial Timeout Lead override # check for Dial Timeout Lead override
if ( (length($DBIPdial_timeout_lead_container[$user_CIPct]) > 1) && ($DBIPdial_timeout_lead_container[$user_CIPct] !~ /^DISABLED$/i) ) if ( (length($DBIPdial_timeout_lead_container[$user_CIPct]) > 1) && ($DBIPdial_timeout_lead_container[$user_CIPct] !~ /^DISABLED$/i) )
@@ -998,6 +1006,64 @@ while($one_day_interval > 0)
$sthC->finish(); $sthC->finish();
} }
$DBIPINCALLdiff[$user_CIPct]=0;
$DBIPINCALLdeadT[$user_CIPct]=0;
# If Agent In-Call Tally Seconds Threshold is enabled, find the number of agents INCALL at-or-below the incall_tally_threshold_seconds
if ($DBIPincall_tally_threshold_seconds[$user_CIPct] > 0)
{
$all_callerids='';
$stmtC = "SELECT callerid from vicidial_auto_calls;";
$sthC = $dbhC->prepare($stmtC) or die "preparing: ",$dbhC->errstr;
$sthC->execute or die "executing: $stmtC ", $dbhC->errstr;
$sthCrows=$sthC->rows;
$Crc=0;
while ($sthCrows > $Crc)
{
@aryC = $sthC->fetchrow_array;
if ($Crc > 0) {$all_callerids .= ",";}
$all_callerids .= "'$aryC[0]'";
$Crc++;
}
$sthC->finish();
if ($DBX) {print " DEBUG2: |$sthCrows|$all_callerids|$stmtC|\n";}
if ($Crc < 1) {$all_callerids = "''";}
$DBIPINCALLthresh[$user_CIPct]=0;
$stmtC = "SELECT count(*) from vicidial_live_agents where ( (campaign_id='$DBIPcampaign[$user_CIPct]') or (dial_campaign_id='$DBIPcampaign[$user_CIPct]') ) and last_update_time > '$BDtsSQLdate' and status IN('INCALL','QUEUE') and ( (UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(last_call_time)) <= $DBIPincall_tally_threshold_seconds[$user_CIPct]) and (callerid IN($all_callerids));";
$sthC = $dbhC->prepare($stmtC) or die "preparing: ",$dbhC->errstr;
$sthC->execute or die "executing: $stmtC ", $dbhC->errstr;
$sthCrows=$sthC->rows;
if ($sthCrows > 0)
{
@aryC = $sthC->fetchrow_array;
$DBIPINCALLthresh[$user_CIPct] = $aryC[0];
}
$sthC->finish();
$stmtC = "SELECT count(*) from vicidial_live_agents where ( (campaign_id='$DBIPcampaign[$user_CIPct]') or (dial_campaign_id='$DBIPcampaign[$user_CIPct]') ) and last_update_time > '$BDtsSQLdate' and status IN('INCALL','QUEUE') and (callerid NOT IN($all_callerids));";
$sthC = $dbhC->prepare($stmtC) or die "preparing: ",$dbhC->errstr;
$sthC->execute or die "executing: $stmtC ", $dbhC->errstr;
$sthCrows=$sthC->rows;
if ($sthCrows > 0)
{
@aryC = $sthC->fetchrow_array;
$DBIPINCALLdeadT[$user_CIPct] = $aryC[0];
}
$sthC->finish();
$DBIPcountT[$user_CIPct] = ($DBIPACTIVEcount[$user_CIPct] + $DBIPINCALLthresh[$user_CIPct]);
if ($DBX) {print " DEBUG1: |$sthCrows|$DBIPACTIVEcount[$user_CIPct]|$DBIPINCALLthresh[$user_CIPct]|$stmtC|\n";}
$DBIPINCALLdiff[$user_CIPct] = ($DBIPINCALLcount[$user_CIPct] - $DBIPINCALLthresh[$user_CIPct]);
if ($DB) {print " Debug: AGENT IN-CALL TALLY SECONDS THRESHOLD: $DBIPcampaign[$user_CIPct] $DBIPincall_tally_threshold_seconds[$user_CIPct] seconds |all: $DBIPINCALLcount[$user_CIPct] thresh: $DBIPINCALLthresh[$user_CIPct] (diff: $DBIPINCALLdiff[$user_CIPct] dead: $DBIPINCALLdeadT[$user_CIPct])| |total: $DBIPcount[$user_CIPct] thresh tot: $DBIPcountT[$user_CIPct]|$stmtC|\n";}
$debug_string .= " !! AGENT IN-CALL TALLY SECONDS THRESHOLD ENABLED for INCALL AGENTS: $DBIPincall_tally_threshold_seconds[$user_CIPct] seconds |all: $DBIPINCALLcount[$user_CIPct] thresh: $DBIPINCALLthresh[$user_CIPct] (diff: $DBIPINCALLdiff[$user_CIPct] dead: $DBIPINCALLdeadT[$user_CIPct])| |total: $DBIPcount[$user_CIPct] thresh tot: $DBIPcountT[$user_CIPct]|\n";
$DBIPINCALLcount[$user_CIPct] = $DBIPINCALLthresh[$user_CIPct];
$DBIPcount[$user_CIPct] = $DBIPcountT[$user_CIPct];
}
# BEGIN check if drop-in-group agents should be included ---NONE--- # # BEGIN check if drop-in-group agents should be included ---NONE--- #
if ( ($DBIPdrop_call_seconds[$user_CIPct] < 0) && ($DBIPdrop_action[$user_CIPct] =~ /IN_GROUP/i) && ($DBIPdrop_inbound_group[$user_CIPct] !~ /^---NONE---$/) && (length($DBIPdrop_inbound_group[$user_CIPct]) > 0) && ($new_agent_multicampaign > 0) && ($DBIPdial_method[$user_CIPct] !~ /SHARED_/i) ) if ( ($DBIPdrop_call_seconds[$user_CIPct] < 0) && ($DBIPdrop_action[$user_CIPct] =~ /IN_GROUP/i) && ($DBIPdrop_inbound_group[$user_CIPct] !~ /^---NONE---$/) && (length($DBIPdrop_inbound_group[$user_CIPct]) > 0) && ($new_agent_multicampaign > 0) && ($DBIPdial_method[$user_CIPct] !~ /SHARED_/i) )
{ {
@@ -1076,7 +1142,10 @@ while($one_day_interval > 0)
if ($active_only > 0) if ($active_only > 0)
{$DBIPcount[$user_CIPct] = $DBIPACTIVEcount[$user_CIPct];} {$DBIPcount[$user_CIPct] = $DBIPACTIVEcount[$user_CIPct];}
else else
{$DBIPcount[$user_CIPct] = ($DBIPcount[$user_CIPct] - $DBIPDEADcount[$user_CIPct]);} {
if ($DBX > 0) {print " DEBUG: dialable agent count: ($DBIPcount[$user_CIPct] - $DBIPDEADcount[$user_CIPct] + $DBIPINCALLdeadT[$user_CIPct])\n";}
$DBIPcount[$user_CIPct] = ($DBIPcount[$user_CIPct] - $DBIPDEADcount[$user_CIPct] + $DBIPINCALLdeadT[$user_CIPct]);
}
if ($DBIPcount[$user_CIPct] < 0) if ($DBIPcount[$user_CIPct] < 0)
{$DBIPcount[$user_CIPct]=0;} {$DBIPcount[$user_CIPct]=0;}
@@ -1326,6 +1395,8 @@ while($one_day_interval > 0)
$DBIPexistcalls[$user_CIPct] = $DBIPexistcalls_OUT[$user_CIPct]; $DBIPexistcalls[$user_CIPct] = $DBIPexistcalls_OUT[$user_CIPct];
} }
if ( ($DBIPINCALLdiff[$user_CIPct] > 0) && ($DBIPexistcalls[$user_CIPct] >= $DBIPINCALLdiff[$user_CIPct]) )
{$DBIPexistcalls[$user_CIPct] = ($DBIPexistcalls[$user_CIPct] - $DBIPINCALLdiff[$user_CIPct])}
$active_line_goal=0; $active_line_goal=0;
$DBIPmakecalls[$user_CIPct] = ($DBIPgoalcalls[$user_CIPct] - $DBIPexistcalls[$user_CIPct]); $DBIPmakecalls[$user_CIPct] = ($DBIPgoalcalls[$user_CIPct] - $DBIPexistcalls[$user_CIPct]);
@@ -1077,7 +1077,8 @@ call_limit_24hour_method ENUM('DISABLED','PHONE_NUMBER','LEAD') default 'DISABLE
call_limit_24hour_scope ENUM('SYSTEM_WIDE','CAMPAIGN_LISTS') default 'SYSTEM_WIDE', call_limit_24hour_scope ENUM('SYSTEM_WIDE','CAMPAIGN_LISTS') default 'SYSTEM_WIDE',
call_limit_24hour TINYINT(3) UNSIGNED default '0', call_limit_24hour TINYINT(3) UNSIGNED default '0',
call_limit_24hour_override VARCHAR(40) default 'DISABLED', call_limit_24hour_override VARCHAR(40) default 'DISABLED',
cid_group_id_two VARCHAR(20) default '---DISABLED---' cid_group_id_two VARCHAR(20) default '---DISABLED---',
incall_tally_threshold_seconds SMALLINT(5) UNSIGNED default '0'
) ENGINE=MyISAM; ) ENGINE=MyISAM;
CREATE TABLE vicidial_lists ( CREATE TABLE vicidial_lists (
@@ -5024,4 +5025,4 @@ INSERT INTO vicidial_settings_containers(container_id,container_notes,container_
UPDATE system_settings set vdc_agent_api_active='1'; UPDATE system_settings set vdc_agent_api_active='1';
UPDATE system_settings SET db_schema_version='1645',db_schema_update_date=NOW(),reload_timestamp=NOW(); UPDATE system_settings SET db_schema_version='1646',db_schema_update_date=NOW(),reload_timestamp=NOW();
+4
View File
@@ -1822,3 +1822,7 @@ UPDATE system_settings SET db_schema_version='1644',db_schema_update_date=NOW()
ALTER TABLE vicidial_inbound_groups ADD populate_lead_owner VARCHAR(20) default 'DISABLED'; ALTER TABLE vicidial_inbound_groups ADD populate_lead_owner VARCHAR(20) default 'DISABLED';
UPDATE system_settings SET db_schema_version='1645',db_schema_update_date=NOW() where db_schema_version < 1645; UPDATE system_settings SET db_schema_version='1645',db_schema_update_date=NOW() where db_schema_version < 1645;
ALTER TABLE vicidial_campaigns ADD incall_tally_threshold_seconds SMALLINT(5) UNSIGNED default '0';
UPDATE system_settings SET db_schema_version='1646',db_schema_update_date=NOW() where db_schema_version < 1646;
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
# version: 20210911200201 # version: 20211012091801
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-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-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> 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>
@@ -159,6 +159,7 @@ campaigns-auto_dial_level Auto Dial Level <QXZ>This is where you set how many li
campaigns-dial_level_threshold Auto Dial Level Threshold <QXZ>This setting only works with an ADAPT or RATIO Dial Method, and it must be set to something other than DISABLED and the number of agents setting must be above 0. This feature allows you to set a minimum number agents that predictive algorithm will work at. If the number of agents falls below the number that you have set, then the dial level will go to 1.0 until more agents log in or go into the selected state. LOGGED-IN_AGENTS will count all agents logged into the campaign, NON-PAUSED_AGENTS will only count agents that are waiting or talking, and WAITING_AGENTS will only count agents that are waiting for a call. Default is DISABLED.</QXZ> campaigns-dial_level_threshold Auto Dial Level Threshold <QXZ>This setting only works with an ADAPT or RATIO Dial Method, and it must be set to something other than DISABLED and the number of agents setting must be above 0. This feature allows you to set a minimum number agents that predictive algorithm will work at. If the number of agents falls below the number that you have set, then the dial level will go to 1.0 until more agents log in or go into the selected state. LOGGED-IN_AGENTS will count all agents logged into the campaign, NON-PAUSED_AGENTS will only count agents that are waiting or talking, and WAITING_AGENTS will only count agents that are waiting for a call. Default is DISABLED.</QXZ>
campaigns-available_only_ratio_tally Available Only Tally <QXZ>This field if set to Y will leave out INCALL and QUEUE status agents when calculating the number of calls to dial when not in MANUAL dial mode. Default is N.</QXZ> campaigns-available_only_ratio_tally Available Only Tally <QXZ>This field if set to Y will leave out INCALL and QUEUE status agents when calculating the number of calls to dial when not in MANUAL dial mode. Default is N.</QXZ>
campaigns-available_only_tally_threshold Available Only Tally Threshold <QXZ>This setting only works with an ADAPT or RATIO Dial Method, Available Only Tally must be set to N, this setting must be set to something other than DISABLED and the number of agents setting must be above 0. This feature allows you to set the number of agents below which Available Only Tally will be enabled. If the number of agents falls below the number that you have set, then the Available Only Tally setting will go to Y temporarily until more agents log in or go into the selected state. LOGGED-IN_AGENTS will count all agents logged into the campaign, NON-PAUSED_AGENTS will only count agents that are waiting or talking, and WAITING_AGENTS will only count agents that are waiting for a call. Default is DISABLED.</QXZ> campaigns-available_only_tally_threshold Available Only Tally Threshold <QXZ>This setting only works with an ADAPT or RATIO Dial Method, Available Only Tally must be set to N, this setting must be set to something other than DISABLED and the number of agents setting must be above 0. This feature allows you to set the number of agents below which Available Only Tally will be enabled. If the number of agents falls below the number that you have set, then the Available Only Tally setting will go to Y temporarily until more agents log in or go into the selected state. LOGGED-IN_AGENTS will count all agents logged into the campaign, NON-PAUSED_AGENTS will only count agents that are waiting or talking, and WAITING_AGENTS will only count agents that are waiting for a call. Default is DISABLED.</QXZ>
campaigns-incall_tally_threshold_seconds Agent In-Call Tally Seconds Threshold <QXZ>This feature allows you to specify the amount of time an agent is in a phone call past which the agent is not counted for dialing additional outbound calls while in an auto-dial mode. This feature only works when Available Only Tally is not active. Default is 0 for disabled.</QXZ>
campaigns-adaptive_dropped_percentage Drop Percentage Limit <QXZ>This field is where you set the limit of the percentage of dropped calls you would like while using an adaptive-predictive dial method, not MANUAL or RATIO.</QXZ> campaigns-adaptive_dropped_percentage Drop Percentage Limit <QXZ>This field is where you set the limit of the percentage of dropped calls you would like while using an adaptive-predictive dial method, not MANUAL or RATIO.</QXZ>
campaigns-adaptive_maximum_level Maximum Adapt Dial Level <QXZ>This field is where you set the limit of the limit to the number of lines you would like dialed per agent while using an adaptive-predictive dial method, not MANUAL or RATIO. This number can be higher than the Auto Dial Level if your hardware will support it. Value must be a positive number greater than one and can have decimal places Default 3.0.</QXZ> campaigns-adaptive_maximum_level Maximum Adapt Dial Level <QXZ>This field is where you set the limit of the limit to the number of lines you would like dialed per agent while using an adaptive-predictive dial method, not MANUAL or RATIO. This number can be higher than the Auto Dial Level if your hardware will support it. Value must be a positive number greater than one and can have decimal places Default 3.0.</QXZ>
campaigns-adaptive_latest_server_time Latest Server Time <QXZ>This field is only used by the ADAPT_TAPERED dial method. You should enter in the hour and minute that you will stop calling on this campaign, 2100 would mean that you will stop dialing this campaign at 9PM server time. This allows the Tapered algorithm to decide how aggressively to dial by how long you have until you will be finished calling.</QXZ> campaigns-adaptive_latest_server_time Latest Server Time <QXZ>This field is only used by the ADAPT_TAPERED dial method. You should enter in the hour and minute that you will stop calling on this campaign, 2100 would mean that you will stop dialing this campaign at 9PM server time. This allows the Tapered algorithm to decide how aggressively to dial by how long you have until you will be finished calling.</QXZ>