Changed SHARED_ campaign in-group transfers to use 'SRDROP' log status instead of 'DROP'

git-svn-id: svn://192.168.202.10@3606 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
mattf
2022-05-24 21:50:11 +00:00
parent 7d29e5c1a8
commit 23aa224a16
3 changed files with 21 additions and 10 deletions
+14 -7
View File
@@ -45,7 +45,7 @@
#exten => 8366,4,AGI(agi-VDAD_ALL_outbound.agi,SURVEY-----LB-----US_pol_survey_hello-----1238-----8-----US_pol_survey_transfer-----US_thanks_no_contact-----OPTOUT-----DNC) #exten => 8366,4,AGI(agi-VDAD_ALL_outbound.agi,SURVEY-----LB-----US_pol_survey_hello-----1238-----8-----US_pol_survey_transfer-----US_thanks_no_contact-----OPTOUT-----DNC)
#exten => 8366,5,Hangup #exten => 8366,5,Hangup
# #
# Copyright (C) 2020 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2 # Copyright (C) 2022 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
# #
# changes: # changes:
# 80218-2027 - First Build # 80218-2027 - First Build
@@ -126,6 +126,7 @@
# 200825-2342 - Added option for auto-only sip actions # 200825-2342 - Added option for auto-only sip actions
# 200915-2218 - Fixes for surveys with hash-star # 200915-2218 - Fixes for surveys with hash-star
# 210907-1254 - Added KHOMP code (install JSON::PP Perl module and remove '#UC#' in the code to enable) # 210907-1254 - Added KHOMP code (install JSON::PP Perl module and remove '#UC#' in the code to enable)
# 220524-1746 - Changed SHARED_ campaign in-group transfers to use 'SRDROP' log status instead of 'DROP'
# #
$script = 'agi-VDAD_ALL_outbound.agi'; $script = 'agi-VDAD_ALL_outbound.agi';
@@ -810,7 +811,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,agent_search_method 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,dial_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;
@@ -857,6 +858,7 @@ if ($VDACaffected_rows > 0)
$CAMPsip_event_logging = $aryA[33]; $CAMPsip_event_logging = $aryA[33];
$amd_type = $aryA[34]; $amd_type = $aryA[34];
$agent_search_method_OVERRIDE = $aryA[35]; $agent_search_method_OVERRIDE = $aryA[35];
$campaign_dial_method = $aryA[36];
if (length($closer_campaigns) > 2) if (length($closer_campaigns) > 2)
{ {
$closer_campaigns =~ s/^ | -$//gi; $closer_campaigns =~ s/^ | -$//gi;
@@ -4225,6 +4227,7 @@ if ($drop_timer > $DROP_TIME)
} }
$drop_status='DROP'; $drop_status='DROP';
$drop_log_status='';
if ($survey_drop > 0) if ($survey_drop > 0)
{$drop_status='PM';} {$drop_status='PM';}
@@ -4272,6 +4275,8 @@ if ($drop_timer > $DROP_TIME)
# Example: 90009*CL_uk3survy_*8301*10000123*universal*7275551212*1234*" # Example: 90009*CL_uk3survy_*8301*10000123*universal*7275551212*1234*"
$S='*'; $S='*';
$DROPexten = "90009*$drop_inbound_group$S$S$CIDlead_id$S$S$VDADphone$S$fronter$S"; $DROPexten = "90009*$drop_inbound_group$S$S$CIDlead_id$S$S$VDADphone$S$fronter$S";
if ( ($DBdrop_call_seconds < 0) && ($campaign_dial_method =~ /SHARED/i) )
{$drop_log_status = 'SRDROP';}
} }
if ($drop_action =~ /CALLMENU/) if ($drop_action =~ /CALLMENU/)
{ {
@@ -4284,6 +4289,7 @@ if ($drop_timer > $DROP_TIME)
$ext_context = $safe_harbor_menu_id; $ext_context = $safe_harbor_menu_id;
if (length($ext_context)<1) if (length($ext_context)<1)
{$DROPexten = '';} {$DROPexten = '';}
if (length($drop_log_status) < 1) {$drop_log_status = $drop_status;}
if ($enable_queuemetrics_logging > 0) if ($enable_queuemetrics_logging > 0)
{ {
@@ -4296,14 +4302,14 @@ if ($drop_timer > $DROP_TIME)
$Baffected_rows = $dbhB->do($stmtB); $Baffected_rows = $dbhB->do($stmtB);
$dbhP=$dbhB; $stmtA=$stmtB; $mysql_count='01081'; $MEL_aff_rows=$Baffected_rows; &mysql_error_logging; $dbhP=$dbhB; $stmtA=$stmtB; $mysql_count='01081'; $MEL_aff_rows=$Baffected_rows; &mysql_error_logging;
$stmtB = "INSERT INTO queue_log SET `partition`='P01',time_id='$now_date_epoch',call_id='$callerid',queue='$VDADcampaign',agent='NONE',verb='CALLSTATUS',data1='$drop_status',serverid='$queuemetrics_log_id';"; $stmtB = "INSERT INTO queue_log SET `partition`='P01',time_id='$now_date_epoch',call_id='$callerid',queue='$VDADcampaign',agent='NONE',verb='CALLSTATUS',data1='$drop_log_status',serverid='$queuemetrics_log_id';";
$Baffected_rows = $dbhB->do($stmtB); $Baffected_rows = $dbhB->do($stmtB);
$dbhP=$dbhB; $stmtA=$stmtB; $mysql_count='01082'; $MEL_aff_rows=$Baffected_rows; &mysql_error_logging; $dbhP=$dbhB; $stmtA=$stmtB; $mysql_count='01082'; $MEL_aff_rows=$Baffected_rows; &mysql_error_logging;
$dbhB->disconnect(); $dbhB->disconnect();
} }
$stmtA = "UPDATE vicidial_log FORCE INDEX(lead_id) set status='$drop_status',end_epoch='$now_date_epoch',length_in_sec='$drop_seconds',term_reason='CALLMENUXFER' where lead_id = '$CIDlead_id' and uniqueid LIKE \"$Euniqueid%\";"; $stmtA = "UPDATE vicidial_log FORCE INDEX(lead_id) set status='$drop_log_status',end_epoch='$now_date_epoch',length_in_sec='$drop_seconds',term_reason='CALLMENUXFER' where lead_id = '$CIDlead_id' and uniqueid LIKE \"$Euniqueid%\";";
if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;} if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;}
$affected_rows = $dbhA->do($stmtA); $affected_rows = $dbhA->do($stmtA);
$dbhP=$dbhA; $mysql_count='01083'; $MEL_aff_rows=$affected_rows; &mysql_error_logging; $dbhP=$dbhA; $mysql_count='01083'; $MEL_aff_rows=$affected_rows; &mysql_error_logging;
@@ -4317,6 +4323,7 @@ if ($drop_timer > $DROP_TIME)
} }
else else
{ {
if (length($drop_log_status) < 1) {$drop_log_status = $drop_status;}
if ($enable_queuemetrics_logging > 0) if ($enable_queuemetrics_logging > 0)
{ {
$dbhB = DBI->connect("DBI:mysql:$queuemetrics_dbname:$queuemetrics_server_ip:3306", "$queuemetrics_login", "$queuemetrics_pass") $dbhB = DBI->connect("DBI:mysql:$queuemetrics_dbname:$queuemetrics_server_ip:3306", "$queuemetrics_login", "$queuemetrics_pass")
@@ -4328,18 +4335,18 @@ if ($drop_timer > $DROP_TIME)
$Baffected_rows = $dbhB->do($stmtB); $Baffected_rows = $dbhB->do($stmtB);
$dbhP=$dbhB; $stmtA=$stmtB; $mysql_count='01048'; $MEL_aff_rows=$Baffected_rows; &mysql_error_logging; $dbhP=$dbhB; $stmtA=$stmtB; $mysql_count='01048'; $MEL_aff_rows=$Baffected_rows; &mysql_error_logging;
$stmtB = "INSERT INTO queue_log SET `partition`='P01',time_id='$now_date_epoch',call_id='$callerid',queue='$VDADcampaign',agent='NONE',verb='CALLSTATUS',data1='$drop_status',serverid='$queuemetrics_log_id';"; $stmtB = "INSERT INTO queue_log SET `partition`='P01',time_id='$now_date_epoch',call_id='$callerid',queue='$VDADcampaign',agent='NONE',verb='CALLSTATUS',data1='$drop_log_status',serverid='$queuemetrics_log_id';";
$Baffected_rows = $dbhB->do($stmtB); $Baffected_rows = $dbhB->do($stmtB);
$dbhP=$dbhB; $stmtA=$stmtB; $mysql_count='01049'; $MEL_aff_rows=$Baffected_rows; &mysql_error_logging; $dbhP=$dbhB; $stmtA=$stmtB; $mysql_count='01049'; $MEL_aff_rows=$Baffected_rows; &mysql_error_logging;
$dbhB->disconnect(); $dbhB->disconnect();
} }
$stmtA = "UPDATE vicidial_log FORCE INDEX(lead_id) set status='$drop_status',end_epoch='$now_date_epoch',length_in_sec='$drop_seconds',term_reason='QUEUETIMEOUT' where lead_id = '$CIDlead_id' and uniqueid LIKE \"$Euniqueid%\";"; $stmtA = "UPDATE vicidial_log FORCE INDEX(lead_id) set status='$drop_log_status',end_epoch='$now_date_epoch',length_in_sec='$drop_seconds',term_reason='QUEUETIMEOUT' where lead_id = '$CIDlead_id' and uniqueid LIKE \"$Euniqueid%\";";
if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;} if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;}
$affected_rows = $dbhA->do($stmtA); $affected_rows = $dbhA->do($stmtA);
$dbhP=$dbhA; $mysql_count='01050'; $MEL_aff_rows=$affected_rows; &mysql_error_logging; $dbhP=$dbhA; $mysql_count='01050'; $MEL_aff_rows=$affected_rows; &mysql_error_logging;
if ($AGILOG) {$agi_string = "-- VDAD vicidial_log update: |$affected_rows|$uniqueid"; &agi_output;} if ($AGILOG) {$agi_string = "-- VDAD vicidial_log update: |$affected_rows|$uniqueid|$drop_log_status|$drop_status"; &agi_output;}
$stmtA = "UPDATE vicidial_list set status='$drop_status' where lead_id = '$CIDlead_id';"; $stmtA = "UPDATE vicidial_list set status='$drop_status' where lead_id = '$CIDlead_id';";
if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;} if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;}
@@ -1,11 +1,11 @@
AGENT MULTI-CAMPAIGN DIALING DOC Started: 2020-08-24 Updated: 2021-02-07 AGENT MULTI-CAMPAIGN DIALING DOC Started: 2020-08-24 Updated: 2022-05-24
NOTE: Requires VICIdial svn/trunk code revision 3284 or higher to work properly!!! NOTE: Requires VICIdial svn/trunk code revision 3284 or higher to work properly!!!
NOTE: The new SHARED campaign dial method requires VICIdial svn/trunk code revision 3340 or higher to work properly!!! NOTE: The new SHARED campaign dial methods require VICIdial svn/trunk code revision 3340 or higher to work properly!!!
NOTE: THIS FEATURE IS OPTIONAL, AND SHOULD ONLY BE CONFIGURED AFTER YOUR SYSTEM NOTE: THIS FEATURE IS OPTIONAL, AND SHOULD ONLY BE CONFIGURED AFTER YOUR SYSTEM
HAS BEEN INSTALLED AND TESTED! HAS BEEN INSTALLED AND TESTED WITH A STANDARD OUTBOUND CAMPAIGN!
@@ -194,6 +194,9 @@ The following are instructions for how to set up a "SHARED_" set of campaigns:
* NOTES: * NOTES:
- The "SHARED_..." campaign dial method does not require the use of Remote Agents at all, and the live agents do need to select to take blended (outbound) calls or no calls will be placed for them as they rotate through the shared agent campaigns. - The "SHARED_..." campaign dial method does not require the use of Remote Agents at all, and the live agents do need to select to take blended (outbound) calls or no calls will be placed for them as they rotate through the shared agent campaigns.
- For SHARED agent campaigns, there is an additional campaign setting: "Shared Dial Rank", which will allow you to prioritize the dialing of your shared campaigns as calls are placed for them. - For SHARED agent campaigns, there is an additional campaign setting: "Shared Dial Rank", which will allow you to prioritize the dialing of your shared campaigns as calls are placed for them.
- For SHARED agent campaigns, the vicidial_log table will show In-Group transfer drops as 'SRDROP' status instead of 'DROP' status to differentiate them from standard dialing campaign drops. These are not considered dropped calls at all because they were never attempted to be routed to an agent by the outbound campaign before being sent to the In-Group.
- For SHARED agent campaigns, the predictive algorithm will not count In-Group transfer drops as dropped calls in its statistical calculations
+1
View File
@@ -79,3 +79,4 @@ NVAINS - Default status for new inserted lead on phone NVA call
CLOSOP - In-Group Closing-Time option selected CLOSOP - In-Group Closing-Time option selected
PAUSMX - Pause Max Seconds timeout default status PAUSMX - Pause Max Seconds timeout default status
IQNANQ - In-Queue call No-Agent-No-Queue drop IQNANQ - In-Queue call No-Agent-No-Queue drop
SRDROP - SHARED outbound campaign drop to in-group, not included in most DROP stats