Added In-Group in_queue_nanque options
Added optional phone_number search for lead_all_info function Fix for Inbound Report with optional campaign-select AHT calc git-svn-id: svn://192.168.202.10@3535 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
@@ -248,6 +248,7 @@
|
||||
# 210819-0029 - Added vicidial_inbound_caller_codes logging
|
||||
# 210908-0851 - Added OWNERCUSTOMx options for call_handle_method
|
||||
# 210911-2008 - Added populate_lead_owner in-group option
|
||||
# 211106-1523 - Added in_queue_nanque options
|
||||
#
|
||||
|
||||
$script = 'agi-VDAD_ALL_inbound.agi';
|
||||
@@ -828,7 +829,7 @@ $affected_rows = $dbhA->do($stmtA);
|
||||
|
||||
### Grab inbound groups values from the database
|
||||
$cbc=0;
|
||||
$stmtA = "SELECT call_time_id,after_hours_action,after_hours_message_filename,after_hours_exten,after_hours_voicemail,welcome_message_filename,moh_context,onhold_prompt_filename,prompt_interval,agent_alert_exten,agent_alert_delay,drop_call_seconds,drop_action,drop_exten,next_agent_call,voicemail_ext,queue_priority,drop_inbound_group,afterhours_xfer_group,play_place_in_line,play_estimate_hold_time,hold_time_option,hold_time_option_seconds,hold_time_option_exten,hold_time_option_voicemail,hold_time_option_xfer_group,hold_time_option_callback_filename,hold_time_option_callback_list_id,hold_recall_xfer_group,no_delay_call_route,play_welcome_message,no_agent_no_queue,no_agent_action,no_agent_action_value,extension_appended_cidname,uniqueid_status_display,uniqueid_status_prefix,hold_time_option_minimum,hold_time_option_press_filename,hold_time_option_callmenu,onhold_prompt_no_block,onhold_prompt_seconds,hold_time_option_no_block,hold_time_option_prompt_seconds,hold_time_second_option,hold_time_third_option,wait_hold_option_priority,wait_time_option,wait_time_second_option,wait_time_third_option,wait_time_option_seconds,wait_time_option_exten,wait_time_option_voicemail,wait_time_option_xfer_group,wait_time_option_callmenu,wait_time_option_callback_filename,wait_time_option_callback_list_id,wait_time_option_press_filename,wait_time_option_no_block,wait_time_option_prompt_seconds,active,calculate_estimated_hold_seconds,add_lead_url,eht_minimum_prompt_filename,eht_minimum_prompt_no_block,eht_minimum_prompt_seconds,on_hook_ring_time,ingroup_recording_override,ingroup_rec_filename,on_hook_cid,action_xfer_cid,drop_callmenu,after_hours_callmenu,max_calls_method,max_calls_count,max_calls_action,populate_lead_ingroup,na_call_url,drop_lead_reset,after_hours_lead_reset,nanq_lead_reset,wait_time_lead_reset,hold_time_lead_reset,routing_initiated_recordings,on_hook_cid_number,populate_lead_province,areacode_filter,areacode_filter_seconds,areacode_filter_action,areacode_filter_action_value,populate_state_areacode,inbound_survey,inbound_survey_filename,inbound_survey_accept_digit,closing_time_action,closing_time_now_trigger,closing_time_filename,closing_time_end_filename,closing_time_lead_reset,closing_time_option_exten,closing_time_option_callmenu,closing_time_option_voicemail,closing_time_option_xfer_group,closing_time_option_callback_list_id,add_lead_timezone,populate_lead_source,populate_lead_vendor,enter_ingroup_url,cid_cb_confirm_number,cid_cb_invalid_filter_phone_group,cid_cb_valid_length,cid_cb_valid_filename,cid_cb_confirmed_filename,cid_cb_enter_filename,cid_cb_you_entered_filename,cid_cb_press_to_confirm_filename,cid_cb_invalid_filename,cid_cb_reenter_filename,cid_cb_error_filename,place_in_line_caller_number_filename,place_in_line_you_next_filename,answer_signal,no_agent_delay,agent_search_method,populate_lead_comments,drop_call_seconds_override,populate_lead_owner FROM vicidial_inbound_groups where group_id = '$channel_group';";
|
||||
$stmtA = "SELECT call_time_id,after_hours_action,after_hours_message_filename,after_hours_exten,after_hours_voicemail,welcome_message_filename,moh_context,onhold_prompt_filename,prompt_interval,agent_alert_exten,agent_alert_delay,drop_call_seconds,drop_action,drop_exten,next_agent_call,voicemail_ext,queue_priority,drop_inbound_group,afterhours_xfer_group,play_place_in_line,play_estimate_hold_time,hold_time_option,hold_time_option_seconds,hold_time_option_exten,hold_time_option_voicemail,hold_time_option_xfer_group,hold_time_option_callback_filename,hold_time_option_callback_list_id,hold_recall_xfer_group,no_delay_call_route,play_welcome_message,no_agent_no_queue,no_agent_action,no_agent_action_value,extension_appended_cidname,uniqueid_status_display,uniqueid_status_prefix,hold_time_option_minimum,hold_time_option_press_filename,hold_time_option_callmenu,onhold_prompt_no_block,onhold_prompt_seconds,hold_time_option_no_block,hold_time_option_prompt_seconds,hold_time_second_option,hold_time_third_option,wait_hold_option_priority,wait_time_option,wait_time_second_option,wait_time_third_option,wait_time_option_seconds,wait_time_option_exten,wait_time_option_voicemail,wait_time_option_xfer_group,wait_time_option_callmenu,wait_time_option_callback_filename,wait_time_option_callback_list_id,wait_time_option_press_filename,wait_time_option_no_block,wait_time_option_prompt_seconds,active,calculate_estimated_hold_seconds,add_lead_url,eht_minimum_prompt_filename,eht_minimum_prompt_no_block,eht_minimum_prompt_seconds,on_hook_ring_time,ingroup_recording_override,ingroup_rec_filename,on_hook_cid,action_xfer_cid,drop_callmenu,after_hours_callmenu,max_calls_method,max_calls_count,max_calls_action,populate_lead_ingroup,na_call_url,drop_lead_reset,after_hours_lead_reset,nanq_lead_reset,wait_time_lead_reset,hold_time_lead_reset,routing_initiated_recordings,on_hook_cid_number,populate_lead_province,areacode_filter,areacode_filter_seconds,areacode_filter_action,areacode_filter_action_value,populate_state_areacode,inbound_survey,inbound_survey_filename,inbound_survey_accept_digit,closing_time_action,closing_time_now_trigger,closing_time_filename,closing_time_end_filename,closing_time_lead_reset,closing_time_option_exten,closing_time_option_callmenu,closing_time_option_voicemail,closing_time_option_xfer_group,closing_time_option_callback_list_id,add_lead_timezone,populate_lead_source,populate_lead_vendor,enter_ingroup_url,cid_cb_confirm_number,cid_cb_invalid_filter_phone_group,cid_cb_valid_length,cid_cb_valid_filename,cid_cb_confirmed_filename,cid_cb_enter_filename,cid_cb_you_entered_filename,cid_cb_press_to_confirm_filename,cid_cb_invalid_filename,cid_cb_reenter_filename,cid_cb_error_filename,place_in_line_caller_number_filename,place_in_line_you_next_filename,answer_signal,no_agent_delay,agent_search_method,populate_lead_comments,drop_call_seconds_override,populate_lead_owner,in_queue_nanque,in_queue_nanque_exceptions FROM vicidial_inbound_groups where group_id = '$channel_group';";
|
||||
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
|
||||
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
|
||||
$sthArows=$sthA->rows;
|
||||
@@ -970,6 +971,8 @@ if ($sthArows > 0)
|
||||
$populate_lead_comments = $aryA[124];
|
||||
$drop_call_seconds_override = $aryA[125];
|
||||
$populate_lead_owner = $aryA[126];
|
||||
$in_queue_nanque = $aryA[127];
|
||||
$in_queue_nanque_exceptions = $aryA[128];
|
||||
|
||||
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';}
|
||||
@@ -991,6 +994,47 @@ if ($sthArows > 0)
|
||||
{$VLcomments = $populate_lead_comments;}
|
||||
}
|
||||
}
|
||||
|
||||
$in_queue_nanque_trigger=0;
|
||||
if ($in_queue_nanque =~ /NO_PAUSED_EXCEPTIONS/)
|
||||
{
|
||||
$inque_except_valid=0;
|
||||
$inque_except_SQL='';
|
||||
if ( (length($in_queue_nanque_exceptions) > 0) && ($in_queue_nanque_exceptions !~ /^DISABLED$/) )
|
||||
{
|
||||
$stmtA = "SELECT container_entry FROM vicidial_settings_containers where container_id='$in_queue_nanque_exceptions';";
|
||||
if ($DBX) {print " |$stmtA|\n";}
|
||||
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
|
||||
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
|
||||
$sthArows=$sthA->rows;
|
||||
if ($sthArows > 0)
|
||||
{
|
||||
@aryA = $sthA->fetchrow_array;
|
||||
$IQNEcontainer_entry = $aryA[0];
|
||||
$IQNEcontainer_entry =~ s/\r|\t|\'|\"//gi;
|
||||
@IQNEcontainer_array = split(/\n/,$IQNEcontainer_entry);
|
||||
$IQNEc=0;
|
||||
foreach(@IQNEcontainer_array)
|
||||
{
|
||||
if ( ($IQNEcontainer_array[$IQNEc] !~ /^;/) && (length($IQNEcontainer_array[$IQNEc]) > 0) )
|
||||
{
|
||||
$IQNEcontainer_array[$IQNEc] =~ s/[^0-9a-zA-Z]//gi;
|
||||
if ($inque_except_valid > 0)
|
||||
{$inque_except_SQL .= ",";}
|
||||
$inque_except_SQL .= "'$IQNEcontainer_array[$IQNEc]'";
|
||||
$inque_except_valid++;
|
||||
}
|
||||
$IQNEc++;
|
||||
}
|
||||
}
|
||||
$sthA->finish();
|
||||
}
|
||||
if ($inque_except_valid < 1)
|
||||
{
|
||||
if ($AGILOG) {$agi_string = "in_queue_nanque_exceptions invalid! reverting in_queue_nanque to 'Y' |$in_queue_nanque|$in_queue_nanque_exceptions|"; &agi_output;}
|
||||
$in_queue_nanque='Y';
|
||||
}
|
||||
}
|
||||
}
|
||||
$sthA->finish();
|
||||
|
||||
@@ -2584,6 +2628,8 @@ while ( ($drop_timer <= $DROP_TIME) && ($wait_in_queue > 0) && ($MCdrop_override
|
||||
if ($sec < 10) {$sec = "0$sec";}
|
||||
$hm = "$hour$min";
|
||||
$hm = ($hm + 0);
|
||||
|
||||
### BEGIN check for closing time trigger
|
||||
if ($closing_time_action !~ /DISABLED/)
|
||||
{
|
||||
if ($ct_default_stop =~ /$hm$/)
|
||||
@@ -2609,6 +2655,47 @@ while ( ($drop_timer <= $DROP_TIME) && ($wait_in_queue > 0) && ($MCdrop_override
|
||||
if ($AGILOG) {$agi_string = "CLOSING CHECK TRIGGER! ($hm <> $ct_default_stop) |$closing_time_now_trigger|$channel_group|"; &agi_output;}
|
||||
}
|
||||
}
|
||||
### END check for closing time trigger
|
||||
|
||||
|
||||
### BEGIN check for In-Queue No Agent No Queue(in_queue_nanque), start checking after 5 seconds
|
||||
if ( ($in_queue_nanque =~ /Y|NO_PAUSED|NO_READY/) && ($drop_timer > 5) )
|
||||
{
|
||||
$in_queue_nanque_agent_ct=0;
|
||||
$NPsql='';
|
||||
$ADsql='';
|
||||
$NCsql='';
|
||||
$now_date_epoch = time();
|
||||
if ($in_queue_nanque =~ /NO_PAUSED/)
|
||||
{$NPsql = "and status NOT IN('PAUSED')";}
|
||||
if ( ($in_queue_nanque =~ /NO_PAUSED_EXCEPTIONS/) && ($inque_except_valid > 0) )
|
||||
{$NPsql = "and ( (status NOT IN('PAUSED')) or (status IN('PAUSED') and pause_code NOT IN($inque_except_SQL)) )";}
|
||||
if ($in_queue_nanque =~ /NO_READY/)
|
||||
{$NCsql = "and status IN('READY','CLOSER')";}
|
||||
if ( ( ($in_queue_nanque =~ /AGENTDIRECT/i) || ($dial_ingroup_flag > 0) ) && (length($agent_only) > 1) )
|
||||
{$ADsql = "and user='$agent_only'";}
|
||||
|
||||
$SQL_group_id=$channel_group; $SQL_group_id =~ s/_/\\_/gi;
|
||||
$stmtA = "SELECT count(*) FROM vicidial_live_agents where closer_campaigns LIKE \"% $SQL_group_id %\" $NPsql $ADsql $NCsql;";
|
||||
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
|
||||
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
|
||||
$sthArowsTRIG=$sthA->rows;
|
||||
$dbhP=$dbhA; $mysql_count='02XXX'; $MEL_aff_rows=$sthArowsTRIG; &mysql_error_logging;
|
||||
if ($sthArowsTRIG > 0)
|
||||
{
|
||||
@aryA = $sthA->fetchrow_array;
|
||||
$in_queue_nanque_agent_ct = $aryA[0];
|
||||
}
|
||||
$sthA->finish();
|
||||
|
||||
if ($in_queue_nanque_agent_ct < 1)
|
||||
{$in_queue_nanque_trigger++;}
|
||||
else
|
||||
{$in_queue_nanque_trigger=0;}
|
||||
if ($AGILOG) {$agi_string = "in_queue_nanque check: $in_queue_nanque_trigger|$in_queue_nanque|$drop_timer|$channel_group|$callerid|$stmtA|"; &agi_output;}
|
||||
}
|
||||
### END check for In-Queue No Agent No Queue(in_queue_nanque)
|
||||
|
||||
|
||||
$channel_status = $AGI->channel_status("$channel");
|
||||
if ($channel_status < 1)
|
||||
@@ -6126,6 +6213,14 @@ while ( ($drop_timer <= $DROP_TIME) && ($wait_in_queue > 0) && ($MCdrop_override
|
||||
}
|
||||
##### END NO AGENT NO QUEUE CHECK #####
|
||||
|
||||
### BEGIN in_queue_nanque_trigger process, trigger at 3 seconds of no-agents
|
||||
if ($in_queue_nanque_trigger > 2)
|
||||
{
|
||||
if ($AGILOG) {$agi_string = "-- IQ-NANQUE triggered($drop_timer): |$callerid|$insert_lead_id|$channel|$in_queue_nanque_trigger|$no_agent_no_queue_checked"; &agi_output;}
|
||||
$NQ_sec=$drop_timer;
|
||||
&no_agent_no_queue_process;
|
||||
}
|
||||
|
||||
|
||||
##### wait before looking again for an agent to take the call
|
||||
if ($wait_in_queue > 0)
|
||||
@@ -8694,7 +8789,7 @@ sub no_agent_no_queue_process
|
||||
$sthA->finish();
|
||||
if ($AGILOG) {$agi_string = "-- NANQUE Check: |$group_agents_count|$stmtA"; &agi_output;}
|
||||
|
||||
if ( ($group_agents_count < 1) || ($MCnanque_override > 0) )
|
||||
if ( ($group_agents_count < 1) || ($MCnanque_override > 0) || ($in_queue_nanque_trigger > 2) )
|
||||
{
|
||||
$VHqueryCID = "VA$CIDdate$hour$min$sec$sec";
|
||||
$NQstatus='NANQUE';
|
||||
@@ -8706,6 +8801,12 @@ sub no_agent_no_queue_process
|
||||
$NQterm = $MCterm;
|
||||
$NQcomments = $MCcomments;
|
||||
}
|
||||
if ($in_queue_nanque_trigger > 2)
|
||||
{
|
||||
$NQstatus = 'IQNANQ';
|
||||
$NQterm = 'NOAGENT';
|
||||
$NQcomments = 'IN-QUEUE NO AGENT DROP';
|
||||
}
|
||||
# set the log-user to the agentdirect destination user, if set
|
||||
if ( ($channel_group =~ /AGENTDIRECT/i) && (length($agent_only) > 1) )
|
||||
{$LOGuser = $agent_only;}
|
||||
|
||||
Reference in New Issue
Block a user