Added max_queue_ingroup_ DID settings options
git-svn-id: svn://192.168.202.10@2345 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
@@ -38,6 +38,7 @@
|
||||
# 140811-2151 - Added ability to filter by DNC areacodes if filter_inbound_number set to a DNC option
|
||||
# 141110-1417 - Fixed issue with multiple filtering options enabled
|
||||
# 150112-1426 - Added no-agent last_update_time check to match in-group queries
|
||||
# 150708-2252 - Added max_queue_ingroup_ DID options
|
||||
#
|
||||
|
||||
|
||||
@@ -205,7 +206,7 @@ $extension =~ s/\'|\"|\\\\|\\\|\\|\\;|\\\;|\;|;//gi;
|
||||
|
||||
### Grab DID values from the database
|
||||
$DIDs_in_system=0;
|
||||
$stmtA = "SELECT did_id,did_pattern,did_description,did_active,did_route,extension,exten_context,voicemail_ext,phone,server_ip,user,user_unavailable_action,user_route_settings_ingroup,menu_id,record_call,filter_inbound_number,filter_phone_group_id,filter_url,filter_action,filter_extension,filter_exten_context,filter_voicemail_ext,filter_phone,filter_server_ip,filter_user,filter_user_unavailable_action,filter_user_route_settings_ingroup,filter_group_id,filter_call_handle_method,filter_agent_search_method,filter_list_id,filter_campaign_id,filter_phone_code,filter_menu_id,filter_clean_cid_number,group_id,filter_dnc_campaign,filter_url_did_redirect,no_agent_ingroup_redirect,no_agent_ingroup_id,no_agent_ingroup_extension,pre_filter_phone_group_id,pre_filter_extension FROM vicidial_inbound_dids where did_pattern = '$extension' and did_active='Y';";
|
||||
$stmtA = "SELECT did_id,did_pattern,did_description,did_active,did_route,extension,exten_context,voicemail_ext,phone,server_ip,user,user_unavailable_action,user_route_settings_ingroup,menu_id,record_call,filter_inbound_number,filter_phone_group_id,filter_url,filter_action,filter_extension,filter_exten_context,filter_voicemail_ext,filter_phone,filter_server_ip,filter_user,filter_user_unavailable_action,filter_user_route_settings_ingroup,filter_group_id,filter_call_handle_method,filter_agent_search_method,filter_list_id,filter_campaign_id,filter_phone_code,filter_menu_id,filter_clean_cid_number,group_id,filter_dnc_campaign,filter_url_did_redirect,no_agent_ingroup_redirect,no_agent_ingroup_id,no_agent_ingroup_extension,pre_filter_phone_group_id,pre_filter_extension,max_queue_ingroup_calls,max_queue_ingroup_id,max_queue_ingroup_extension FROM vicidial_inbound_dids where did_pattern = '$extension' and did_active='Y';";
|
||||
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
|
||||
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
|
||||
$sthArows=$sthA->rows;
|
||||
@@ -255,6 +256,9 @@ if ($sthArows > 0)
|
||||
$no_agent_ingroup_extension = $aryA[40];
|
||||
$pre_filter_phone_group_id = $aryA[41];
|
||||
$pre_filter_extension = $aryA[42];
|
||||
$max_queue_ingroup_calls = $aryA[43];
|
||||
$max_queue_ingroup_id = $aryA[44];
|
||||
$max_queue_ingroup_extension = $aryA[45];
|
||||
|
||||
$DIDs_in_system++;
|
||||
}
|
||||
@@ -263,7 +267,7 @@ $sthA->finish();
|
||||
if ($sthArows < 1)
|
||||
{
|
||||
### Grab DID values from the database for a default DID pattern if there is one
|
||||
$stmtA = "SELECT did_id,did_pattern,did_description,did_active,did_route,extension,exten_context,voicemail_ext,phone,server_ip,user,user_unavailable_action,user_route_settings_ingroup,menu_id,record_call,filter_inbound_number,filter_phone_group_id,filter_url,filter_action,filter_extension,filter_exten_context,filter_voicemail_ext,filter_phone,filter_server_ip,filter_user,filter_user_unavailable_action,filter_user_route_settings_ingroup,filter_group_id,filter_call_handle_method,filter_agent_search_method,filter_list_id,filter_campaign_id,filter_phone_code,filter_menu_id,filter_clean_cid_number,group_id,filter_dnc_campaign,filter_url_did_redirect,no_agent_ingroup_redirect,no_agent_ingroup_id,no_agent_ingroup_extension,pre_filter_phone_group_id,pre_filter_extension FROM vicidial_inbound_dids where did_pattern = 'default' and did_active='Y';";
|
||||
$stmtA = "SELECT did_id,did_pattern,did_description,did_active,did_route,extension,exten_context,voicemail_ext,phone,server_ip,user,user_unavailable_action,user_route_settings_ingroup,menu_id,record_call,filter_inbound_number,filter_phone_group_id,filter_url,filter_action,filter_extension,filter_exten_context,filter_voicemail_ext,filter_phone,filter_server_ip,filter_user,filter_user_unavailable_action,filter_user_route_settings_ingroup,filter_group_id,filter_call_handle_method,filter_agent_search_method,filter_list_id,filter_campaign_id,filter_phone_code,filter_menu_id,filter_clean_cid_number,group_id,filter_dnc_campaign,filter_url_did_redirect,no_agent_ingroup_redirect,no_agent_ingroup_id,no_agent_ingroup_extension,pre_filter_phone_group_id,pre_filter_extension,max_queue_ingroup_calls,max_queue_ingroup_id,max_queue_ingroup_extension FROM vicidial_inbound_dids where did_pattern = 'default' and did_active='Y';";
|
||||
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
|
||||
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
|
||||
$DIDs_in_system=$sthA->rows;
|
||||
@@ -313,6 +317,9 @@ if ($sthArows < 1)
|
||||
$no_agent_ingroup_extension = $aryA[40];
|
||||
$pre_filter_phone_group_id = $aryA[41];
|
||||
$pre_filter_extension = $aryA[42];
|
||||
$max_queue_ingroup_calls = $aryA[43];
|
||||
$max_queue_ingroup_id = $aryA[44];
|
||||
$max_queue_ingroup_extension = $aryA[45];
|
||||
}
|
||||
$sthA->finish();
|
||||
}
|
||||
@@ -621,10 +628,10 @@ if ( ($filter_inbound_number =~ /GROUP|URL|DNC_INTERNAL|DNC_CAMPAIGN/) && ($pre_
|
||||
|
||||
|
||||
##### BEGIN no-agent redirect process #####
|
||||
$no_agent_redirect_bypass=1;
|
||||
if ( ($no_agent_ingroup_redirect =~ /Y|NO_PAUSED|READY_ONLY/) && ($pre_filter_match_found < 1) && ($filter_match_found < 1) )
|
||||
{
|
||||
$no_agent_redirect_bypass=1;
|
||||
if ($AGILOG) {$agi_string = "filtering active: |$extension|$no_agent_ingroup_redirect|$no_agent_ingroup_id|$no_agent_ingroup_extension|$filter_clean_cid_number|"; &agi_output;}
|
||||
if ($AGILOG) {$agi_string = "no-agent active: |$extension|$no_agent_ingroup_redirect|$no_agent_ingroup_id|$no_agent_ingroup_extension|$filter_clean_cid_number|"; &agi_output;}
|
||||
|
||||
$queue_date_epoch = time();
|
||||
$BDtarget = ($queue_date_epoch - 5);
|
||||
@@ -677,6 +684,58 @@ if ( ($no_agent_ingroup_redirect =~ /Y|NO_PAUSED|READY_ONLY/) && ($pre_filter_ma
|
||||
##### END no-agent redirect process #####
|
||||
|
||||
|
||||
##### BEGIN max queue ingroup calls redirect process #####
|
||||
$max_queue_redirect_bypass=1;
|
||||
if ( ( ($max_queue_ingroup_calls > 0) || ($max_queue_ingroup_calls < 0) ) && ($no_agent_redirect_bypass > 0) && ($pre_filter_match_found < 1) && ($filter_match_found < 1) )
|
||||
{
|
||||
if ($AGILOG) {$agi_string = "max queue active: |$extension|$max_queue_ingroup_calls|$max_queue_ingroup_id|$max_queue_ingroup_extension|"; &agi_output;}
|
||||
|
||||
$queue_date_epoch = time();
|
||||
$BDtarget = ($queue_date_epoch - 60);
|
||||
($Bsec,$Bmin,$Bhour,$Bmday,$Bmon,$Byear,$Bwday,$Byday,$Bisdst) = localtime($BDtarget);
|
||||
$Byear = ($Byear + 1900);
|
||||
$Bmon++;
|
||||
if ($Bmon < 10) {$Bmon = "0$Bmon";}
|
||||
if ($Bmday < 10) {$Bmday = "0$Bmday";}
|
||||
if ($Bhour < 10) {$Bhour = "0$Bhour";}
|
||||
if ($Bmin < 10) {$Bmin = "0$Bmin";}
|
||||
if ($Bsec < 10) {$Bsec = "0$Bsec";}
|
||||
$BDtsSQLdate = "$Byear$Bmon$Bmday$Bhour$Bmin$Bsec";
|
||||
|
||||
$stmtA = "SELECT count(*) FROM vicidial_auto_calls where campaign_id='$max_queue_ingroup_id' and status IN('LIVE','IVR') and last_update_time > '$BDtsSQLdate';";
|
||||
$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;
|
||||
$max_queue_redirect_bypass = $aryA[0];
|
||||
}
|
||||
$sthA->finish();
|
||||
|
||||
if ($max_queue_redirect_bypass >= $max_queue_ingroup_calls)
|
||||
{
|
||||
$did_route = 'EXTEN';
|
||||
$did_extension = $max_queue_ingroup_extension;
|
||||
$exten_context = 'default';
|
||||
$route_type = 'MAXQUE';
|
||||
|
||||
if ($AGILOG) {$agi_string = "Max Queue Redirect: |$max_queue_redirect_bypass|$max_queue_ingroup_calls|$did_extension|$max_queue_ingroup_id|$stmtA|"; &agi_output;}
|
||||
|
||||
### Update the call in vicidial_did_log
|
||||
$stmtA = "UPDATE vicidial_did_log SET did_route='MQ_$did_route' where uniqueid='$uniqueid' and channel='$channel' and server_ip='$VARserver_ip' and caller_id_number='$callerid' and call_date='$SQLdate';";
|
||||
if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;}
|
||||
$affected_rowsL = $dbhA->do($stmtA);
|
||||
if ($AGILOG) {$agi_string = "-- DID UPDATE LOG : |$affected_rowsL|$stmtA|"; &agi_output;}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($AGILOG) {$agi_string = "Max Queue Debug: |$max_queue_redirect_bypass|$max_queue_ingroup_calls|$did_extension|$max_queue_ingroup_id|$stmtA|"; &agi_output;}
|
||||
}
|
||||
}
|
||||
##### END max queue ingroup calls redirect process #####
|
||||
|
||||
|
||||
### Route call to a VICIDIAL-defined phone
|
||||
if ($did_route =~ /PHONE/)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user