Added Agent Search Method override options for campaigns and in-groups.

git-svn-id: svn://192.168.202.10@3341 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
mattf
2021-01-07 20:40:57 +00:00
parent 035d114755
commit 4babb9e0ba
7 changed files with 125 additions and 46 deletions
+2
View File
@@ -560,6 +560,8 @@ OTHER CHANGES:
agent multi-campaign dialing. Read the AGENT_MULTI-CAMPAIGN_DIALING.txt agent multi-campaign dialing. Read the AGENT_MULTI-CAMPAIGN_DIALING.txt
document for more information. document for more information.
159. Added Agent Search Method override options for campaigns and in-groups.
+25 -13
View File
@@ -82,7 +82,7 @@
#exten => _99909*.,2,AGI(agi-VDAD_ALL_inbound.agi) #exten => _99909*.,2,AGI(agi-VDAD_ALL_inbound.agi)
#exten => _99909*.,3,Hangup #exten => _99909*.,3,Hangup
# #
# Copyright (C) 2020 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2 # Copyright (C) 2021 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
# #
# changes: # changes:
# 70828-0924 - First Build # 70828-0924 - First Build
@@ -241,6 +241,7 @@
# 201026-2333 - Fix for AGENTDIRECT issue # 201026-2333 - Fix for AGENTDIRECT issue
# 201101-1058 - Added no_agent_delay option # 201101-1058 - Added no_agent_delay option
# 201106-2146 - Added EXITEMPTY and CALLSTATUS queue_log entry for NANQUE calls # 201106-2146 - Added EXITEMPTY and CALLSTATUS queue_log entry for NANQUE calls
# 210103-1024 - Added agent_search_method override
# #
$script = 'agi-VDAD_ALL_inbound.agi'; $script = 'agi-VDAD_ALL_inbound.agi';
@@ -372,7 +373,7 @@ $sthA->finish();
############################################# #############################################
##### START SYSTEM SETTINGS LOOKUP ##### ##### START SYSTEM SETTINGS LOOKUP #####
$stmtA = "SELECT enable_queuemetrics_logging,queuemetrics_server_ip,queuemetrics_dbname,queuemetrics_login,queuemetrics_pass,queuemetrics_log_id,queuemetrics_eq_prepend,queuemetrics_pe_phone_append,did_agent_log,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,did_ra_extensions_enabled,queuemetrics_socket,queuemetrics_socket_url,enable_did_entry_list_id,enable_drop_lists,inbound_answer_config FROM system_settings;"; $stmtA = "SELECT enable_queuemetrics_logging,queuemetrics_server_ip,queuemetrics_dbname,queuemetrics_login,queuemetrics_pass,queuemetrics_log_id,queuemetrics_eq_prepend,queuemetrics_pe_phone_append,did_agent_log,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,did_ra_extensions_enabled,queuemetrics_socket,queuemetrics_socket_url,enable_did_entry_list_id,enable_drop_lists,inbound_answer_config,agent_search_method FROM system_settings;";
$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;
@@ -400,6 +401,7 @@ if ($sthArows > 0)
$enable_did_entry_list_id = $aryA[17]; $enable_did_entry_list_id = $aryA[17];
$enable_drop_lists = $aryA[18]; $enable_drop_lists = $aryA[18];
$inbound_answer_config = $aryA[19]; $inbound_answer_config = $aryA[19];
$SSagent_search_method = $aryA[20];
} }
$sthA->finish(); $sthA->finish();
##### END SYSTEM SETTINGS LOOKUP ##### ##### END SYSTEM SETTINGS LOOKUP #####
@@ -804,7 +806,7 @@ $affected_rows = $dbhA->do($stmtA);
### Grab inbound groups values from the database ### Grab inbound groups values from the database
$cbc=0; $cbc=0;
$stmtA = "SELECT call_time_id,after_hours_action,after_hours_message_filename,after_hours_exten,after_hours_voicemail,welcome_message_filename,moh_context,onhold_prompt_filename,prompt_interval,agent_alert_exten,agent_alert_delay,drop_call_seconds,drop_action,drop_exten,next_agent_call,voicemail_ext,queue_priority,drop_inbound_group,afterhours_xfer_group,play_place_in_line,play_estimate_hold_time,hold_time_option,hold_time_option_seconds,hold_time_option_exten,hold_time_option_voicemail,hold_time_option_xfer_group,hold_time_option_callback_filename,hold_time_option_callback_list_id,hold_recall_xfer_group,no_delay_call_route,play_welcome_message,no_agent_no_queue,no_agent_action,no_agent_action_value,extension_appended_cidname,uniqueid_status_display,uniqueid_status_prefix,hold_time_option_minimum,hold_time_option_press_filename,hold_time_option_callmenu,onhold_prompt_no_block,onhold_prompt_seconds,hold_time_option_no_block,hold_time_option_prompt_seconds,hold_time_second_option,hold_time_third_option,wait_hold_option_priority,wait_time_option,wait_time_second_option,wait_time_third_option,wait_time_option_seconds,wait_time_option_exten,wait_time_option_voicemail,wait_time_option_xfer_group,wait_time_option_callmenu,wait_time_option_callback_filename,wait_time_option_callback_list_id,wait_time_option_press_filename,wait_time_option_no_block,wait_time_option_prompt_seconds,active,calculate_estimated_hold_seconds,add_lead_url,eht_minimum_prompt_filename,eht_minimum_prompt_no_block,eht_minimum_prompt_seconds,on_hook_ring_time,ingroup_recording_override,ingroup_rec_filename,on_hook_cid,action_xfer_cid,drop_callmenu,after_hours_callmenu,max_calls_method,max_calls_count,max_calls_action,populate_lead_ingroup,na_call_url,drop_lead_reset,after_hours_lead_reset,nanq_lead_reset,wait_time_lead_reset,hold_time_lead_reset,routing_initiated_recordings,on_hook_cid_number,populate_lead_province,areacode_filter,areacode_filter_seconds,areacode_filter_action,areacode_filter_action_value,populate_state_areacode,inbound_survey,inbound_survey_filename,inbound_survey_accept_digit,closing_time_action,closing_time_now_trigger,closing_time_filename,closing_time_end_filename,closing_time_lead_reset,closing_time_option_exten,closing_time_option_callmenu,closing_time_option_voicemail,closing_time_option_xfer_group,closing_time_option_callback_list_id,add_lead_timezone,populate_lead_source,populate_lead_vendor,enter_ingroup_url,cid_cb_confirm_number, cid_cb_invalid_filter_phone_group, cid_cb_valid_length, cid_cb_valid_filename, cid_cb_confirmed_filename, cid_cb_enter_filename, cid_cb_you_entered_filename, cid_cb_press_to_confirm_filename, cid_cb_invalid_filename, cid_cb_reenter_filename, cid_cb_error_filename,place_in_line_caller_number_filename,place_in_line_you_next_filename,answer_signal,no_agent_delay FROM vicidial_inbound_groups where group_id = '$channel_group';"; $stmtA = "SELECT call_time_id,after_hours_action,after_hours_message_filename,after_hours_exten,after_hours_voicemail,welcome_message_filename,moh_context,onhold_prompt_filename,prompt_interval,agent_alert_exten,agent_alert_delay,drop_call_seconds,drop_action,drop_exten,next_agent_call,voicemail_ext,queue_priority,drop_inbound_group,afterhours_xfer_group,play_place_in_line,play_estimate_hold_time,hold_time_option,hold_time_option_seconds,hold_time_option_exten,hold_time_option_voicemail,hold_time_option_xfer_group,hold_time_option_callback_filename,hold_time_option_callback_list_id,hold_recall_xfer_group,no_delay_call_route,play_welcome_message,no_agent_no_queue,no_agent_action,no_agent_action_value,extension_appended_cidname,uniqueid_status_display,uniqueid_status_prefix,hold_time_option_minimum,hold_time_option_press_filename,hold_time_option_callmenu,onhold_prompt_no_block,onhold_prompt_seconds,hold_time_option_no_block,hold_time_option_prompt_seconds,hold_time_second_option,hold_time_third_option,wait_hold_option_priority,wait_time_option,wait_time_second_option,wait_time_third_option,wait_time_option_seconds,wait_time_option_exten,wait_time_option_voicemail,wait_time_option_xfer_group,wait_time_option_callmenu,wait_time_option_callback_filename,wait_time_option_callback_list_id,wait_time_option_press_filename,wait_time_option_no_block,wait_time_option_prompt_seconds,active,calculate_estimated_hold_seconds,add_lead_url,eht_minimum_prompt_filename,eht_minimum_prompt_no_block,eht_minimum_prompt_seconds,on_hook_ring_time,ingroup_recording_override,ingroup_rec_filename,on_hook_cid,action_xfer_cid,drop_callmenu,after_hours_callmenu,max_calls_method,max_calls_count,max_calls_action,populate_lead_ingroup,na_call_url,drop_lead_reset,after_hours_lead_reset,nanq_lead_reset,wait_time_lead_reset,hold_time_lead_reset,routing_initiated_recordings,on_hook_cid_number,populate_lead_province,areacode_filter,areacode_filter_seconds,areacode_filter_action,areacode_filter_action_value,populate_state_areacode,inbound_survey,inbound_survey_filename,inbound_survey_accept_digit,closing_time_action,closing_time_now_trigger,closing_time_filename,closing_time_end_filename,closing_time_lead_reset,closing_time_option_exten,closing_time_option_callmenu,closing_time_option_voicemail,closing_time_option_xfer_group,closing_time_option_callback_list_id,add_lead_timezone,populate_lead_source,populate_lead_vendor,enter_ingroup_url,cid_cb_confirm_number, cid_cb_invalid_filter_phone_group, cid_cb_valid_length, cid_cb_valid_filename, cid_cb_confirmed_filename, cid_cb_enter_filename, cid_cb_you_entered_filename, cid_cb_press_to_confirm_filename, cid_cb_invalid_filename, cid_cb_reenter_filename, cid_cb_error_filename,place_in_line_caller_number_filename,place_in_line_you_next_filename,answer_signal,no_agent_delay,agent_search_method FROM vicidial_inbound_groups where group_id = '$channel_group';";
$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;
@@ -942,6 +944,7 @@ if ($sthArows > 0)
$place_in_line_you_next_filename = $aryA[120]; $place_in_line_you_next_filename = $aryA[120];
$answer_signal = $aryA[121]; $answer_signal = $aryA[121];
$no_agent_delay = $aryA[122]; $no_agent_delay = $aryA[122];
$agent_search_method_OVERRIDE = $aryA[123];
if ( (length($place_in_line_caller_number_filename) < 1) || ($place_in_line_caller_number_filename =~ /^NULL$/i) ) if ( (length($place_in_line_caller_number_filename) < 1) || ($place_in_line_caller_number_filename =~ /^NULL$/i) )
{$place_in_line_caller_number_filename='queue-thereare';} {$place_in_line_caller_number_filename='queue-thereare';}
@@ -2576,17 +2579,26 @@ while ( ($drop_timer <= $DROP_TIME) && ($wait_in_queue > 0) && ($MCdrop_override
################################################################ ################################################################
##### Attempt to send call to an agent on this server only ##### ##### Attempt to send call to an agent on this server only #####
if ($agent_search_method =~ /^SO/) $server_onlySQL='';
{$agent_search_method = 'LO';} if ( ($agent_search_method =~ /^SO/) || ( ( ($SSagent_search_method == 1) || ($SSagent_search_method == 2) ) && ($agent_search_method_OVERRIDE =~ /^SO/) ) )
{
$agent_search_method = 'LO';
if ( ( ($SSagent_search_method == 1) || ($SSagent_search_method == 2) ) && ($agent_search_method_OVERRIDE =~ /^SO/) )
{
$server_onlySQL="and server_ip='$VARserver_ip'";
if ($AGILOG) {$agi_string = "|Agent Search Method In-Group Override: $agent_search_method_OVERRIDE ($SSagent_search_method)$agent_search_method|"; &agi_output;}
$agent_search_method = 'SO';
}
}
if ($agent_search_method =~ /^LO|^LB/) if ($agent_search_method =~ /^LO|^LB|^SO/)
{ {
################################################################################################### ###################################################################################################
##### Attempt to send call to an agent on any server ##### ##### Attempt to send call to an agent on any server #####
$cbc=0; $cbc=0;
$rec_countWAITrem=0; $rec_countWAITrem=0;
### Get count of number of calls in this group that are ahead of this call ### Get count of number of calls in this group that are ahead of this call
$stmtA = "SELECT count(*) FROM vicidial_auto_calls where status = 'LIVE' and campaign_id = '$channel_group' and call_time < \"$SQLdateBEGIN\" and lead_id != '$insert_lead_id' and queue_priority >= '$queue_priority' $ADfindSQL;"; $stmtA = "SELECT count(*) FROM vicidial_auto_calls where status = 'LIVE' and campaign_id = '$channel_group' and call_time < \"$SQLdateBEGIN\" and lead_id != '$insert_lead_id' and queue_priority >= '$queue_priority' $server_onlySQL $ADfindSQL;";
$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;
@@ -2621,7 +2633,7 @@ while ( ($drop_timer <= $DROP_TIME) && ($wait_in_queue > 0) && ($MCdrop_override
$qp_countWAIT=0; $qp_countWAIT=0;
### Get count of number of waiting calls in higher priority groups than this call or the same priority with longer wait time ### Get count of number of waiting calls in higher priority groups than this call or the same priority with longer wait time
$stmtA = "SELECT count(*) FROM vicidial_auto_calls where status = 'LIVE' and lead_id != '$insert_lead_id' $ADfindSQL and ( (queue_priority > '$queue_priority') or (queue_priority = '$queue_priority' and call_time < \"$SQLdateBEGIN\") );"; $stmtA = "SELECT count(*) FROM vicidial_auto_calls where status = 'LIVE' and lead_id != '$insert_lead_id' $server_onlySQL $ADfindSQL and ( (queue_priority > '$queue_priority') or (queue_priority = '$queue_priority' and call_time < \"$SQLdateBEGIN\") );";
$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;
@@ -2686,7 +2698,7 @@ while ( ($drop_timer <= $DROP_TIME) && ($wait_in_queue > 0) && ($MCdrop_override
{ {
### Get group/campaign ids of calls in higher priority groups than this call or the same priority with longer wait time ### Get group/campaign ids of calls in higher priority groups than this call or the same priority with longer wait time
$qp_groupWAIT=''; $qp_groupWAIT='';
$stmtA = "SELECT distinct campaign_id FROM vicidial_auto_calls where status = 'LIVE' and lead_id != '$insert_lead_id' $ADfindSQL and ( (queue_priority > '$queue_priority') or (queue_priority = '$queue_priority' and call_time < \"$SQLdateBEGIN\") );"; $stmtA = "SELECT distinct campaign_id FROM vicidial_auto_calls where status = 'LIVE' and lead_id != '$insert_lead_id' $server_onlySQL $ADfindSQL and ( (queue_priority > '$queue_priority') or (queue_priority = '$queue_priority' and call_time < \"$SQLdateBEGIN\") );";
$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;
@@ -2782,7 +2794,7 @@ while ( ($drop_timer <= $DROP_TIME) && ($wait_in_queue > 0) && ($MCdrop_override
@GRADEuser=@MT; @GRADEuser=@MT;
@GRADEgrade=@MT; @GRADEgrade=@MT;
@userGRADEarray=@MT; @userGRADEarray=@MT;
$stmtA = "SELECT vicidial_live_agents.user,vicidial_live_inbound_agents.group_grade,vicidial_live_agents.campaign_grade from vicidial_live_agents, vicidial_live_inbound_agents WHERE vicidial_live_agents.user=vicidial_live_inbound_agents.user and status IN('CLOSER','READY') and lead_id<1 $ADUfindSQL and vicidial_live_inbound_agents.group_id='$channel_group' and last_update_time > '$BDtsSQLdate' and vicidial_live_agents.user NOT IN($ring_no_answer_agents$vlia_users) and ring_callerid='' $qp_groupWAIT_camp_SQL $AGENTDIRECT_higherSQL limit 1000;"; $stmtA = "SELECT vicidial_live_agents.user,vicidial_live_inbound_agents.group_grade,vicidial_live_agents.campaign_grade from vicidial_live_agents, vicidial_live_inbound_agents WHERE vicidial_live_agents.user=vicidial_live_inbound_agents.user and status IN('CLOSER','READY') and lead_id<1 $server_onlySQL $ADUfindSQL and vicidial_live_inbound_agents.group_id='$channel_group' and last_update_time > '$BDtsSQLdate' and vicidial_live_agents.user NOT IN($ring_no_answer_agents$vlia_users) and ring_callerid='' $qp_groupWAIT_camp_SQL $AGENTDIRECT_higherSQL limit 1000;";
$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;
@@ -2846,7 +2858,7 @@ while ( ($drop_timer <= $DROP_TIME) && ($wait_in_queue > 0) && ($MCdrop_override
### END grade random next-agent-call routing ### ### END grade random next-agent-call routing ###
else else
{ {
$stmtA = "SELECT vicidial_live_agents.conf_exten,vicidial_live_agents.user,vicidial_live_agents.extension,vicidial_live_agents.server_ip,vicidial_live_inbound_agents.group_weight,ra_user,vicidial_live_agents.campaign_id,on_hook_agent,on_hook_ring_time,vicidial_live_inbound_agents.group_grade,vicidial_live_agents.campaign_grade from vicidial_live_agents, vicidial_live_inbound_agents WHERE vicidial_live_agents.user=vicidial_live_inbound_agents.user and status IN('CLOSER','READY') and lead_id<1 $ADUfindSQL and vicidial_live_inbound_agents.group_id='$channel_group' and last_update_time > '$BDtsSQLdate' and vicidial_live_agents.user NOT IN($ring_no_answer_agents$vlia_users) and ring_callerid='' $qp_groupWAIT_camp_SQL $AGENTDIRECT_higherSQL $agent_call_order limit 1;"; $stmtA = "SELECT vicidial_live_agents.conf_exten,vicidial_live_agents.user,vicidial_live_agents.extension,vicidial_live_agents.server_ip,vicidial_live_inbound_agents.group_weight,ra_user,vicidial_live_agents.campaign_id,on_hook_agent,on_hook_ring_time,vicidial_live_inbound_agents.group_grade,vicidial_live_agents.campaign_grade from vicidial_live_agents, vicidial_live_inbound_agents WHERE vicidial_live_agents.user=vicidial_live_inbound_agents.user and status IN('CLOSER','READY') and lead_id<1 $server_onlySQL $ADUfindSQL and vicidial_live_inbound_agents.group_id='$channel_group' and last_update_time > '$BDtsSQLdate' and vicidial_live_agents.user NOT IN($ring_no_answer_agents$vlia_users) and ring_callerid='' $qp_groupWAIT_camp_SQL $AGENTDIRECT_higherSQL $agent_call_order limit 1;";
$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;
@@ -2885,7 +2897,7 @@ while ( ($drop_timer <= $DROP_TIME) && ($wait_in_queue > 0) && ($MCdrop_override
else else
{ {
$SQL_group_id=$channel_group; $SQL_group_id =~ s/_/\\_/gi; $SQL_group_id=$channel_group; $SQL_group_id =~ s/_/\\_/gi;
$stmtA = "SELECT conf_exten,user,extension,server_ip,last_call_time,ra_user,campaign_id,on_hook_agent,on_hook_ring_time FROM vicidial_live_agents where status IN('CLOSER','READY') and lead_id<1 $ADUfindSQL and campaign_id IN($INBOUNDcampsSQL) and closer_campaigns LIKE \"% $SQL_group_id %\" and last_update_time > '$BDtsSQLdate' and vicidial_live_agents.user NOT IN($ring_no_answer_agents'') $qp_groupWAIT_SQL $qp_groupWAIT_camp_SQL $AGENTDIRECT_higherSQL $agent_call_order limit 1;"; $stmtA = "SELECT conf_exten,user,extension,server_ip,last_call_time,ra_user,campaign_id,on_hook_agent,on_hook_ring_time FROM vicidial_live_agents where status IN('CLOSER','READY') and lead_id<1 $server_onlySQL $ADUfindSQL and campaign_id IN($INBOUNDcampsSQL) and closer_campaigns LIKE \"% $SQL_group_id %\" and last_update_time > '$BDtsSQLdate' and vicidial_live_agents.user NOT IN($ring_no_answer_agents'') $qp_groupWAIT_SQL $qp_groupWAIT_camp_SQL $AGENTDIRECT_higherSQL $agent_call_order limit 1;";
$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;
@@ -3123,7 +3135,7 @@ while ( ($drop_timer <= $DROP_TIME) && ($wait_in_queue > 0) && ($MCdrop_override
{ {
### gather all available agents phones information (don't call more than 50 phones at once) ### gather all available agents phones information (don't call more than 50 phones at once)
$SQL_group_id=$channel_group; $SQL_group_id =~ s/_/\\_/gi; $SQL_group_id=$channel_group; $SQL_group_id =~ s/_/\\_/gi;
$stmtA = "SELECT conf_exten,user,extension,server_ip,ra_user,on_hook_ring_time from vicidial_live_agents where status IN('CLOSER','READY') and on_hook_agent='Y' and lead_id<1 $ADUfindSQL and campaign_id IN($INBOUNDcampsSQL) and closer_campaigns LIKE \"% $SQL_group_id %\" and last_update_time > '$BDtsSQLdate' $qp_groupWAIT_SQL $qp_groupWAIT_camp_SQL $agent_call_order limit 50;"; $stmtA = "SELECT conf_exten,user,extension,server_ip,ra_user,on_hook_ring_time from vicidial_live_agents where status IN('CLOSER','READY') and on_hook_agent='Y' and lead_id<1 $server_onlySQL $ADUfindSQL and campaign_id IN($INBOUNDcampsSQL) and closer_campaigns LIKE \"% $SQL_group_id %\" and last_update_time > '$BDtsSQLdate' $qp_groupWAIT_SQL $qp_groupWAIT_camp_SQL $agent_call_order limit 50;";
$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;
$sthArowsAR=$sthA->rows; $sthArowsAR=$sthA->rows;
+12 -5
View File
@@ -18,7 +18,7 @@
# ; - SURVEYCAMPCEP - Survery question, campaign settings, cepstral name # ; - SURVEYCAMPCEP - Survery question, campaign settings, cepstral name
# ; - REMINDER - Reminder campaign # ; - REMINDER - Reminder campaign
# ; - REMINDX - Reminder with transfer to agent # ; - REMINDX - Reminder with transfer to agent
# ; 2. the method of searching for an available agent: # ; 2. the method of searching for an available agent: (agent_search_method)
# ; - LB - <default> Load Balance total system # ; - LB - <default> Load Balance total system
# ; - LO - Load Balance Overflow only (priority to home server) # ; - LO - Load Balance Overflow only (priority to home server)
# ; - SO - Home server only # ; - SO - Home server only
@@ -244,7 +244,7 @@ $dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VA
############################################# #############################################
##### Gather system_settings ##### ##### Gather system_settings #####
$stmtA = "SELECT sip_event_logging,call_quota_lead_ranking FROM system_settings;"; $stmtA = "SELECT sip_event_logging,call_quota_lead_ranking,agent_search_method FROM system_settings;";
$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;
@@ -253,6 +253,7 @@ if ($sthArows > 0)
@aryA = $sthA->fetchrow_array; @aryA = $sthA->fetchrow_array;
$SSsip_event_logging = $aryA[0]; $SSsip_event_logging = $aryA[0];
$SScall_quota_lead_ranking = $aryA[1]; $SScall_quota_lead_ranking = $aryA[1];
$SSagent_search_method = $aryA[2];
} }
$sthA->finish(); $sthA->finish();
########################################### ###########################################
@@ -785,7 +786,7 @@ if ($VDACaffected_rows > 0)
##### END - Max call stats ##### END - Max call stats
### Grab campaign values from the database ### Grab campaign values from the database
$stmtA = "SELECT drop_call_seconds,drop_action,safe_harbor_exten,concurrent_transfers,next_agent_call,voicemail_ext,drop_inbound_group,use_internal_dnc,use_campaign_dnc,cpd_amd_action,am_message_exten,three_way_call_cid,campaign_cid,survey_first_audio_file,survey_opt_in_audio_file,survey_ni_audio_file,survey_third_audio_file,survey_fourth_audio_file,extension_appended_cidname,queue_priority,closer_campaigns,queuemetrics_phone_environment,campaign_recording,campaign_rec_filename,safe_harbor_audio,safe_harbor_menu_id,survey_recording,safe_harbor_audio_field,use_other_campaign_dnc,cpd_unknown_action,routing_initiated_recordings,campaign_rec_exten,call_quota_lead_ranking,sip_event_logging,amd_type FROM vicidial_campaigns where campaign_id = '$VDADcampaign';"; $stmtA = "SELECT drop_call_seconds,drop_action,safe_harbor_exten,concurrent_transfers,next_agent_call,voicemail_ext,drop_inbound_group,use_internal_dnc,use_campaign_dnc,cpd_amd_action,am_message_exten,three_way_call_cid,campaign_cid,survey_first_audio_file,survey_opt_in_audio_file,survey_ni_audio_file,survey_third_audio_file,survey_fourth_audio_file,extension_appended_cidname,queue_priority,closer_campaigns,queuemetrics_phone_environment,campaign_recording,campaign_rec_filename,safe_harbor_audio,safe_harbor_menu_id,survey_recording,safe_harbor_audio_field,use_other_campaign_dnc,cpd_unknown_action,routing_initiated_recordings,campaign_rec_exten,call_quota_lead_ranking,sip_event_logging,amd_type,agent_search_method FROM vicidial_campaigns where campaign_id = '$VDADcampaign';";
$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;
@@ -831,6 +832,7 @@ if ($VDACaffected_rows > 0)
$VD_call_quota_lead_ranking = $aryA[32]; $VD_call_quota_lead_ranking = $aryA[32];
$CAMPsip_event_logging = $aryA[33]; $CAMPsip_event_logging = $aryA[33];
$amd_type = $aryA[34]; $amd_type = $aryA[34];
$agent_search_method_OVERRIDE = $aryA[35];
if (length($closer_campaigns) > 2) if (length($closer_campaigns) > 2)
{ {
$closer_campaigns =~ s/^ | -$//gi; $closer_campaigns =~ s/^ | -$//gi;
@@ -2488,10 +2490,15 @@ while ($drop_timer <= $DROP_TIME)
##### Attempt to send call to an agent on this server only ##### ##### Attempt to send call to an agent on this server only #####
if ($agent_search_method =~ /^SO|^LO/) if ( ($agent_search_method =~ /^SO|^LO/) || ( ( ($SSagent_search_method == 1) || ($SSagent_search_method == 3) ) && ($agent_search_method_OVERRIDE =~ /^SO|^LO/) ) )
{ {
if ($agent_search_method =~ /^SO/) if ($agent_search_method =~ /^SO/)
{$agent_search_method = 'LO';} {$agent_search_method = 'LO';}
if ( ( ($SSagent_search_method == 1) || ($SSagent_search_method == 3) ) && ($agent_search_method_OVERRIDE =~ /^SO/) )
{
if ($AGILOG) {$agi_string = "|Agent Search Method Campaign Override: $agent_search_method_OVERRIDE ($SSagent_search_method)$agent_search_method|"; &agi_output;}
$agent_search_method = 'SO';
}
if ($DBconcurrent_transfers =~ /AUTO/) if ($DBconcurrent_transfers =~ /AUTO/)
{ {
@@ -3755,7 +3762,7 @@ while ($drop_timer <= $DROP_TIME)
### END routing-initiated agent call recording for ALLCALLS/ALLFORCE ### ### END routing-initiated agent call recording for ALLCALLS/ALLFORCE ###
} }
if ($extension_appended_cidname =~ /Y/) if ($extension_appended_cidname =~ /Y|USER/)
{ {
$eac_extension=''; $eac_extension='';
$stmtA = "SELECT extension,campaign_id FROM vicidial_live_agents where user='$VDADuser' order by last_call_time limit 1;"; $stmtA = "SELECT extension,campaign_id FROM vicidial_live_agents where user='$VDADuser' order by last_call_time limit 1;";
@@ -1053,7 +1053,8 @@ hopper_drop_run_trigger VARCHAR(1) default 'N',
daily_call_count_limit TINYINT(3) UNSIGNED default '0', daily_call_count_limit TINYINT(3) UNSIGNED default '0',
daily_limit_manual VARCHAR(20) default 'DISABLED', daily_limit_manual VARCHAR(20) default 'DISABLED',
transfer_button_launch VARCHAR(12) default 'NONE', transfer_button_launch VARCHAR(12) default 'NONE',
shared_dial_rank TINYINT(3) default '99' shared_dial_rank TINYINT(3) default '99',
agent_search_method VARCHAR(2) default ''
) ENGINE=MyISAM; ) ENGINE=MyISAM;
CREATE TABLE vicidial_lists ( CREATE TABLE vicidial_lists (
@@ -1345,7 +1346,8 @@ ingroup_script_two VARCHAR(20) default '',
browser_alert_sound VARCHAR(20) default '---NONE---', browser_alert_sound VARCHAR(20) default '---NONE---',
browser_alert_volume TINYINT(3) UNSIGNED default '50', browser_alert_volume TINYINT(3) UNSIGNED default '50',
answer_signal ENUM('START','ROUTE','NONE') DEFAULT 'START', answer_signal ENUM('START','ROUTE','NONE') DEFAULT 'START',
no_agent_delay SMALLINT(5) default '0' no_agent_delay SMALLINT(5) default '0',
agent_search_method VARCHAR(2) default ''
) ENGINE=MyISAM; ) ENGINE=MyISAM;
CREATE TABLE vicidial_stations ( CREATE TABLE vicidial_stations (
@@ -1881,7 +1883,8 @@ enable_international_dncs ENUM('0','1') default '0',
web_loader_phone_strip VARCHAR(10) default 'DISABLED', web_loader_phone_strip VARCHAR(10) default 'DISABLED',
manual_dial_phone_strip VARCHAR(10) default 'DISABLED', manual_dial_phone_strip VARCHAR(10) default 'DISABLED',
daily_call_count_limit ENUM('0','1') default '0', daily_call_count_limit ENUM('0','1') default '0',
allow_shared_dial ENUM('0','1') default '0' allow_shared_dial ENUM('0','1') default '0',
agent_search_method ENUM('0','1','2','3','4','5','6') default '0'
) ENGINE=MyISAM; ) ENGINE=MyISAM;
CREATE TABLE vicidial_campaigns_list_mix ( CREATE TABLE vicidial_campaigns_list_mix (
@@ -4708,4 +4711,4 @@ INSERT INTO vicidial_settings_containers VALUES ('INTERNATIONAL_DNC_IMPORT','Pro
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='1614',db_schema_update_date=NOW(),reload_timestamp=NOW(); UPDATE system_settings SET db_schema_version='1615',db_schema_update_date=NOW(),reload_timestamp=NOW();
+8
View File
@@ -1385,3 +1385,11 @@ index (campaign_id)
CREATE UNIQUE INDEX vadc_key on vicidial_agent_dial_campaigns(campaign_id, user); CREATE UNIQUE INDEX vadc_key on vicidial_agent_dial_campaigns(campaign_id, user);
UPDATE system_settings SET db_schema_version='1614',db_schema_update_date=NOW() where db_schema_version < 1614; UPDATE system_settings SET db_schema_version='1614',db_schema_update_date=NOW() where db_schema_version < 1614;
ALTER TABLE system_settings ADD agent_search_method ENUM('0','1','2','3','4','5','6') default '0';
ALTER TABLE vicidial_campaigns ADD agent_search_method VARCHAR(2) default '';
ALTER TABLE vicidial_inbound_groups ADD agent_search_method VARCHAR(2) default '';
UPDATE system_settings SET db_schema_version='1615',db_schema_update_date=NOW() where db_schema_version < 1615;
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
# version: 20201219200201 # version: 20210103084501
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. 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. 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>
@@ -168,7 +168,8 @@ campaigns-inbound_no_agents_no_dial_threshold Inbound No-Agents No-Dial Threshol
campaigns-auto_alt_dial Auto Alt-Number Dialing <QXZ>This setting is used to automatically dial alternate number fields while dialing in the RATIO and ADAPT dial methods when there is no contact at the main phone number for a lead, the statuses to trigger alt dial can be set in the Auto Alt Dial page. This setting is not used by the MANUAL dial method. EXTENDED alternate numbers are numbers loaded into the system outside of the standard lead information screen. Using EXTENDED you can have hundreds of phone numbers for a single customer record. Using MULTI_LEAD allows you to use a separate lead for each number on a customer account that all share a common vendor_lead_code, and the type of phone number for each is defined with a label in the Owner field. This option will disable some options on the Modify Campaign screen and show a link to the Multi-Alt Settings page which allows you to set which phone number types, defined by the label of each lead, will be dialed and in what order. This will create a special lead filter and will alter the Rank field of all of the leads inside the lists set to this campaign in order to call them in the order you have specified.</QXZ> campaigns-auto_alt_dial Auto Alt-Number Dialing <QXZ>This setting is used to automatically dial alternate number fields while dialing in the RATIO and ADAPT dial methods when there is no contact at the main phone number for a lead, the statuses to trigger alt dial can be set in the Auto Alt Dial page. This setting is not used by the MANUAL dial method. EXTENDED alternate numbers are numbers loaded into the system outside of the standard lead information screen. Using EXTENDED you can have hundreds of phone numbers for a single customer record. Using MULTI_LEAD allows you to use a separate lead for each number on a customer account that all share a common vendor_lead_code, and the type of phone number for each is defined with a label in the Owner field. This option will disable some options on the Modify Campaign screen and show a link to the Multi-Alt Settings page which allows you to set which phone number types, defined by the label of each lead, will be dialed and in what order. This will create a special lead filter and will alter the Rank field of all of the leads inside the lists set to this campaign in order to call them in the order you have specified.</QXZ>
campaigns-dial_timeout Dial Timeout <QXZ>If defined, calls that would normally hang up after the timeout defined in extensions.conf would instead timeout at this amount of seconds if it is less than the extensions.conf timeout. This allows for quickly changing dial timeouts from server to server and limiting the effects to a single campaign. If you are having a lot of Answering Machine or Voicemail calls you may want to try changing this value to between 21-26 and see if results improve.</QXZ> campaigns-dial_timeout Dial Timeout <QXZ>If defined, calls that would normally hang up after the timeout defined in extensions.conf would instead timeout at this amount of seconds if it is less than the extensions.conf timeout. This allows for quickly changing dial timeouts from server to server and limiting the effects to a single campaign. If you are having a lot of Answering Machine or Voicemail calls you may want to try changing this value to between 21-26 and see if results improve.</QXZ>
campaigns-dial_timeout_lead_container Dial Timeout Lead Container <QXZ>This option allows you to select a Settings Container of the DIAL_TIMEOUTS type that will allow you to override the campaign dial timeouts on a per lead basis using a lead field value defined in the container. You can enable manual dialing and auto dialing overrides separately by defining which lead field is to be looked at for a dial timeout key value. If you wanted to use the -comments- lead field for manual dial timeouts, you would define manual_dial_field => comments. If you wanted to use the -comments- lead field for auto dial timeouts, you would define auto_dial_field => comments. after either or both of these are defined, you will need to define the key and value pairs for the dial timeouts. For example, if a key of -A- in the comments field should trigger a 50 second dial timeout override for the lead, you would define A => 50. You can define multiple key and value pairs in the settings container. Lead field names should be in lower case letters only. You must define the Lead Field Name above any Field Values that you define. Field value matching is case sensitive. We recommend not matching to field values that have spaces or special characters in them.</QXZ> campaigns-dial_timeout_lead_container Dial Timeout Lead Container <QXZ>This option allows you to select a Settings Container of the DIAL_TIMEOUTS type that will allow you to override the campaign dial timeouts on a per lead basis using a lead field value defined in the container. You can enable manual dialing and auto dialing overrides separately by defining which lead field is to be looked at for a dial timeout key value. If you wanted to use the -comments- lead field for manual dial timeouts, you would define manual_dial_field => comments. If you wanted to use the -comments- lead field for auto dial timeouts, you would define auto_dial_field => comments. after either or both of these are defined, you will need to define the key and value pairs for the dial timeouts. For example, if a key of -A- in the comments field should trigger a 50 second dial timeout override for the lead, you would define A => 50. You can define multiple key and value pairs in the settings container. Lead field names should be in lower case letters only. You must define the Lead Field Name above any Field Values that you define. Field value matching is case sensitive. We recommend not matching to field values that have spaces or special characters in them.</QXZ>
campaigns-campaign_vdad_exten Routing Extension <QXZ>This field allows for a custom outbound routing extension. This allows you to use different call handling methods depending upon how you want to route calls through your outbound campaign. Formerly called Campaign VDAD extension.</QXZ><BR>- <QXZ>8364 - same as 8368</QXZ><BR>- <QXZ>8365 - Will send the call only to an agent on the same server as the call is placed on</QXZ><BR>- <QXZ>8366 - Used for press-1, broadcast and survey campaigns</QXZ><BR>- <QXZ>8367 - Will try to first send the call to an agent on the local server, then it will look on other servers</QXZ><BR>- <QXZ>8368 - DEFAULT - Will send the call to the next available agent no matter what server they are on</QXZ><BR>- <QXZ>8369 - Used for Answering Machine Detection after that, same behavior as 8368</QXZ><BR>- <QXZ>8373 - Used for Answering Machine Detection after that same behavior as 8366</QXZ><BR>- <QXZ>8374 - Used for press-1, broadcast and survey campaigns with Cepstral Text-to-speech</QXZ><BR>- <QXZ>8375 - Used for Answering Machine Detection then press-1, broadcast and survey campaigns with Cepstral Text-to-speech</QXZ> campaigns-campaign_vdad_exten Routing Extension <QXZ>This field allows for a custom outbound routing extension. This allows you to use different call handling methods depending upon how you want to route calls through your outbound campaign. Formerly called Campaign VDAD extension.</QXZ><BR>- <QXZ>8364 - same as 8368</QXZ><BR>- <QXZ>8365 - Will send the call only to an agent on the same server as the call is placed on, DISABLED, now same as 8367</QXZ><BR>- <QXZ>8366 - Used for press-1, broadcast and survey campaigns</QXZ><BR>- <QXZ>8367 - Will try to first send the call to an agent on the local server, then it will look on other servers</QXZ><BR>- <QXZ>8368 - DEFAULT - Will send the call to the next available agent no matter what server they are on</QXZ><BR>- <QXZ>8369 - Used for Answering Machine Detection after that, same behavior as 8368</QXZ><BR>- <QXZ>8373 - Used for Answering Machine Detection after that same behavior as 8366</QXZ><BR>- <QXZ>8374 - Used for press-1, broadcast and survey campaigns with Cepstral Text-to-speech</QXZ><BR>- <QXZ>8375 - Used for Answering Machine Detection then press-1, broadcast and survey campaigns with Cepstral Text-to-speech</QXZ>
campaigns-agent_search_method Agent Search Method Override <QXZ>This setting will allow you to override the dialplan agent search method and force one only for this campaign. LB will search for the next agent on any server to send the answered call to. LO will first search on the originating server then search for agents on other servers. SO will only search on the originating server for an agent to send the answered call to. Default is blank for disabled. WARNING, setting this to -SO- can result in a much higher number of dropped calls.</QXZ>
campaigns-am_message_exten Answering Machine Message <QXZ>This field is for entering the prompt to play when the agent gets an answering machine and clicks on the Answering Machine Message button in the transfer conference frame. You must set this to either an audio file in the audio store or a TTS prompt if TTS is enabled on your system. You can also use lead fields to generate audio filenames using the DYN flag, for instance using DYN--A--user--B-- for agent 1234 would look for a file named 1234.wav in your audio store to play. If you need more space to build your message with files, you can put them into a Settings Container and the use STC and then the container ID to use that settings container as your answering machine message. Another advanced option is LTT, if you have custom programming on your system to construct answering maching messages on a per-call basis. If you will be using the Agent API function vm_message, you will want to put LTTagent in this field.</QXZ> campaigns-am_message_exten Answering Machine Message <QXZ>This field is for entering the prompt to play when the agent gets an answering machine and clicks on the Answering Machine Message button in the transfer conference frame. You must set this to either an audio file in the audio store or a TTS prompt if TTS is enabled on your system. You can also use lead fields to generate audio filenames using the DYN flag, for instance using DYN--A--user--B-- for agent 1234 would look for a file named 1234.wav in your audio store to play. If you need more space to build your message with files, you can put them into a Settings Container and the use STC and then the container ID to use that settings container as your answering machine message. Another advanced option is LTT, if you have custom programming on your system to construct answering maching messages on a per-call basis. If you will be using the Agent API function vm_message, you will want to put LTTagent in this field.</QXZ>
campaigns-vmm_daily_limit Voicemail Message Daily Limit <QXZ>This option allows you to limit the number of times a voicemail message plays to a lead for a single day. After the defined limit is reached, the call will be hung up instead of playing a message. If this feature is active then it will be in effect for all calls sent to play a voicemail message, even if an agent manually sends a call to a VM message. The default is 0, for disabled.</QXZ> campaigns-vmm_daily_limit Voicemail Message Daily Limit <QXZ>This option allows you to limit the number of times a voicemail message plays to a lead for a single day. After the defined limit is reached, the call will be hung up instead of playing a message. If this feature is active then it will be in effect for all calls sent to play a voicemail message, even if an agent manually sends a call to a VM message. The default is 0, for disabled.</QXZ>
campaigns-waitforsilence_options WaitForSilence Options <QXZ>If Wait For Silence is desired on calls that are detected as Answering Machines then this field has those options. There are three settings separated by a comma, the first option is how long to detect silence in milliseconds, the second option is for how many times to detect that before playing the message, the third is the maximum number of seconds to wait before timing out and playing the message. Default is EMPTY for disabled. A standard value for this would be wait for 2 seconds of silence twice: 2000,2,30</QXZ> campaigns-waitforsilence_options WaitForSilence Options <QXZ>If Wait For Silence is desired on calls that are detected as Answering Machines then this field has those options. There are three settings separated by a comma, the first option is how long to detect silence in milliseconds, the second option is for how many times to detect that before playing the message, the third is the maximum number of seconds to wait before timing out and playing the message. Default is EMPTY for disabled. A standard value for this would be wait for 2 seconds of silence twice: 2000,2,30</QXZ>
@@ -468,6 +469,7 @@ inbound_groups-next_agent_call Next Agent Call <QXZ>This determines which agent
inbound_groups-on_hook_ring_time On-Hook Ring Time <QXZ>This option is only used for agents that are logged in with phones that have the agent-on-hook feature enabled. This is the number of seconds that each call attempt to the agent will ring for until the system will wait one second and start ringing the available agent phones again. This field can be overridden if the agent phones are set to a lower ring time which may be necessary to prevent calls from being sent one phones voicemail. Default is 15.</QXZ> inbound_groups-on_hook_ring_time On-Hook Ring Time <QXZ>This option is only used for agents that are logged in with phones that have the agent-on-hook feature enabled. This is the number of seconds that each call attempt to the agent will ring for until the system will wait one second and start ringing the available agent phones again. This field can be overridden if the agent phones are set to a lower ring time which may be necessary to prevent calls from being sent one phones voicemail. Default is 15.</QXZ>
inbound_groups-on_hook_cid On-Hook CID <QXZ>This option is only used for agents that are logged in with phones that have the agent-on-hook feature enabled. This is the caller ID that will show up on their agent phones when the calls are ringing. GENERIC is a generic RINGAGENT00000000001 type of notification. INGROUP will show only the in-group the call came from. CUSTOMER_PHONE will show only the customer phone number. CUSTOMER_PHONE_RINGAGENT will show RINGAGENT_3125551212 with the RINGAGENT as part of the CID with the customer phone number. CUSTOMER_PHONE_INGROUP will show the first 10 characters of the in-group followed by the customer phone number. Default is GENERIC. If you are using Asterisk 13 or higher, only the RINGAGENT options will work properly.</QXZ> inbound_groups-on_hook_cid On-Hook CID <QXZ>This option is only used for agents that are logged in with phones that have the agent-on-hook feature enabled. This is the caller ID that will show up on their agent phones when the calls are ringing. GENERIC is a generic RINGAGENT00000000001 type of notification. INGROUP will show only the in-group the call came from. CUSTOMER_PHONE will show only the customer phone number. CUSTOMER_PHONE_RINGAGENT will show RINGAGENT_3125551212 with the RINGAGENT as part of the CID with the customer phone number. CUSTOMER_PHONE_INGROUP will show the first 10 characters of the in-group followed by the customer phone number. Default is GENERIC. If you are using Asterisk 13 or higher, only the RINGAGENT options will work properly.</QXZ>
inbound_groups-on_hook_cid_number On-Hook CID Number <QXZ>This option allows you to set a CID Number to be sent out with the On-Hook CID. If you put a Y, YES or CUSTOMER in this field, then the customer CID number will be sent to the ringing agent phone. If you put a different phone number, that number will be sent. Default is blank for disabled.</QXZ> inbound_groups-on_hook_cid_number On-Hook CID Number <QXZ>This option allows you to set a CID Number to be sent out with the On-Hook CID. If you put a Y, YES or CUSTOMER in this field, then the customer CID number will be sent to the ringing agent phone. If you put a different phone number, that number will be sent. Default is blank for disabled.</QXZ>
inbound_groups-agent_search_method Agent Search Method Override <QXZ>This setting will allow you to override the dialplan agent search method and force one only for this inbound group. LB will search for the next agent on any server to send the answered call to. SO will only search on the originating server for an agent to send the answered call to. Default is blank for disabled. WARNING, setting this to -SO- can result in a much higher number of dropped calls.</QXZ>
inbound_groups-queue_priority Queue Priority <QXZ>This setting is used to define the order in which the calls from this inbound group should be answered in relation to calls from other inbound groups.</QXZ> inbound_groups-queue_priority Queue Priority <QXZ>This setting is used to define the order in which the calls from this inbound group should be answered in relation to calls from other inbound groups.</QXZ>
inbound_groups-fronter_display Fronter Display <QXZ>This field determines whether the inbound agent would have the fronter name - if there is one - displayed in the Status field when the call comes to the agent.</QXZ> inbound_groups-fronter_display Fronter Display <QXZ>This field determines whether the inbound agent would have the fronter name - if there is one - displayed in the Status field when the call comes to the agent.</QXZ>
inbound_groups-ingroup_script Campaign Script <QXZ>This menu allows you to choose the script that will appear on the agents screen for this campaign. Select NONE to show no script for this campaign.</QXZ> inbound_groups-ingroup_script Campaign Script <QXZ>This menu allows you to choose the script that will appear on the agents screen for this campaign. Select NONE to show no script for this campaign.</QXZ>
@@ -1044,6 +1046,7 @@ settings-active_voicemail_server Active Voicemail Server <QXZ>In multi-server sy
settings-allow_voicemail_greeting Allow Voicemail Greeting Chooser <QXZ>If this setting is enabled it will allow you to choose an audio file from the audio store to be played as the voicemail greeting to a specific voicemail box. Default is 0 for disabled.</QXZ> settings-allow_voicemail_greeting Allow Voicemail Greeting Chooser <QXZ>If this setting is enabled it will allow you to choose an audio file from the audio store to be played as the voicemail greeting to a specific voicemail box. Default is 0 for disabled.</QXZ>
settings-outbound_autodial_active Outbound Auto-Dial Active <QXZ>This option allows you to enable or disable outbound auto-dialing within the system, setting this field to 0 will remove the LISTS and FILTERS sections and many fields from the Campaign Modification screens. Manual entry dialing will still be allowable from within the agent screen, but no list dialing will be possible. Default is 1 for active.</QXZ> settings-outbound_autodial_active Outbound Auto-Dial Active <QXZ>This option allows you to enable or disable outbound auto-dialing within the system, setting this field to 0 will remove the LISTS and FILTERS sections and many fields from the Campaign Modification screens. Manual entry dialing will still be allowable from within the agent screen, but no list dialing will be possible. Default is 1 for active.</QXZ>
settings-allow_shared_dial Shared Agent Campaign Dialing <QXZ>This option will allow you to set SHARED campaign Dial Methods in order to share agents across multiple outbound campaigns. For more details on how to set this up properly, read the AGENT_MULTI-CAMPAIGN_DIALING.txt document. Default is 0 for disabled.</QXZ> settings-allow_shared_dial Shared Agent Campaign Dialing <QXZ>This option will allow you to set SHARED campaign Dial Methods in order to share agents across multiple outbound campaigns. For more details on how to set this up properly, read the AGENT_MULTI-CAMPAIGN_DIALING.txt document. Default is 0 for disabled.</QXZ>
settings-agent_search_method Agent Search Method Override <QXZ>This option will allow you to override the agent search method that is defined in the dialplan on your dialers on a per in-group and-or per campaign basis. Setting this to -1- will enable the override for both in-groups and campaigns. -2- will enable only for in-groups. -3- will enable only for campaigns. Default is 0 for disabled. WARNING, we do not recommend enabling this setting, it can lead to greatly increased dropped calls if improperly used.</QXZ>
settings-ofcom_uk_drop_calc UK OFCOM Drop Calculation <QXZ>This option allows you to enable the new UK OFCOM Drop calculation formula for individual campaigns. As of December 2015, OFCOM in the UK changed their method for calculating the drop,or abandon, percentage for an outbound dialing campaign. The new formula includes an estimate of the number of drops that were answering machines. They do this by using the agent-answered percentage of answering machines and subtracting that percentage from the number of drops. Then that new drop number is divided by the total agent-answered human-answered calls PLUS the number of drops. This differs in several ways from the way it had been done, as well as the way the drop percentage has been calculated in the USA and Canada. This new UK drop calculation method can be activated as a system setting AND a campaign option. Both must be enabled for the campaign to use the new method. In order for agent-statused answering machines to be calculated properly, we have added an answering machine status flag that is used to gather those statuses. Default is 0 for inactive.</QXZ> settings-ofcom_uk_drop_calc UK OFCOM Drop Calculation <QXZ>This option allows you to enable the new UK OFCOM Drop calculation formula for individual campaigns. As of December 2015, OFCOM in the UK changed their method for calculating the drop,or abandon, percentage for an outbound dialing campaign. The new formula includes an estimate of the number of drops that were answering machines. They do this by using the agent-answered percentage of answering machines and subtracting that percentage from the number of drops. Then that new drop number is divided by the total agent-answered human-answered calls PLUS the number of drops. This differs in several ways from the way it had been done, as well as the way the drop percentage has been calculated in the USA and Canada. This new UK drop calculation method can be activated as a system setting AND a campaign option. Both must be enabled for the campaign to use the new method. In order for agent-statused answering machines to be calculated properly, we have added an answering machine status flag that is used to gather those statuses. Default is 0 for inactive.</QXZ>
settings-disable_auto_dial Disable Auto-Dial <QXZ>This option is only editable by a system administrator. It will not remove any options from the management web interface, but it will prevent any auto-dialing of leads from happening on the system. Only Manual Dial outbound calls triggered directly by agents will function if this option is enabled. Default is 0 for inactive.</QXZ> settings-disable_auto_dial Disable Auto-Dial <QXZ>This option is only editable by a system administrator. It will not remove any options from the management web interface, but it will prevent any auto-dialing of leads from happening on the system. Only Manual Dial outbound calls triggered directly by agents will function if this option is enabled. Default is 0 for inactive.</QXZ>
settings-auto_dial_limit Ratio Dial Limit <QXZ>This is the maximum limit of the auto dial level in the campaign screen.</QXZ> settings-auto_dial_limit Ratio Dial Limit <QXZ>This is the maximum limit of the auto dial level in the campaign screen.</QXZ>