From 23aa224a16359d6bdf19e56f6b37425667672cee Mon Sep 17 00:00:00 2001 From: mattf Date: Tue, 24 May 2022 21:50:11 +0000 Subject: [PATCH] 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 --- agc_2-X/trunk/agi/agi-VDAD_ALL_outbound.agi | 21 ++++++++++++------- .../docs/AGENT_MULTI-CAMPAIGN_DIALING.txt | 9 +++++--- agc_2-X/trunk/docs/VICIDIAL_statuses.txt | 1 + 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/agc_2-X/trunk/agi/agi-VDAD_ALL_outbound.agi b/agc_2-X/trunk/agi/agi-VDAD_ALL_outbound.agi index 76f7446e..07dba1df 100644 --- a/agc_2-X/trunk/agi/agi-VDAD_ALL_outbound.agi +++ b/agc_2-X/trunk/agi/agi-VDAD_ALL_outbound.agi @@ -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,5,Hangup # -# Copyright (C) 2020 Matt Florell LICENSE: AGPLv2 +# Copyright (C) 2022 Matt Florell LICENSE: AGPLv2 # # changes: # 80218-2027 - First Build @@ -126,6 +126,7 @@ # 200825-2342 - Added option for auto-only sip actions # 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) +# 220524-1746 - Changed SHARED_ campaign in-group transfers to use 'SRDROP' log status instead of 'DROP' # $script = 'agi-VDAD_ALL_outbound.agi'; @@ -810,7 +811,7 @@ if ($VDACaffected_rows > 0) ##### END - Max call stats ### 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->execute or die "executing: $stmtA ", $dbhA->errstr; $sthArows=$sthA->rows; @@ -857,6 +858,7 @@ if ($VDACaffected_rows > 0) $CAMPsip_event_logging = $aryA[33]; $amd_type = $aryA[34]; $agent_search_method_OVERRIDE = $aryA[35]; + $campaign_dial_method = $aryA[36]; if (length($closer_campaigns) > 2) { $closer_campaigns =~ s/^ | -$//gi; @@ -4225,6 +4227,7 @@ if ($drop_timer > $DROP_TIME) } $drop_status='DROP'; + $drop_log_status=''; if ($survey_drop > 0) {$drop_status='PM';} @@ -4272,6 +4275,8 @@ if ($drop_timer > $DROP_TIME) # Example: 90009*CL_uk3survy_*8301*10000123*universal*7275551212*1234*" $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/) { @@ -4284,6 +4289,7 @@ if ($drop_timer > $DROP_TIME) $ext_context = $safe_harbor_menu_id; if (length($ext_context)<1) {$DROPexten = '';} + if (length($drop_log_status) < 1) {$drop_log_status = $drop_status;} if ($enable_queuemetrics_logging > 0) { @@ -4296,14 +4302,14 @@ if ($drop_timer > $DROP_TIME) $Baffected_rows = $dbhB->do($stmtB); $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); $dbhP=$dbhB; $stmtA=$stmtB; $mysql_count='01082'; $MEL_aff_rows=$Baffected_rows; &mysql_error_logging; $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;} $affected_rows = $dbhA->do($stmtA); $dbhP=$dbhA; $mysql_count='01083'; $MEL_aff_rows=$affected_rows; &mysql_error_logging; @@ -4317,6 +4323,7 @@ if ($drop_timer > $DROP_TIME) } else { + if (length($drop_log_status) < 1) {$drop_log_status = $drop_status;} if ($enable_queuemetrics_logging > 0) { $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); $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); $dbhP=$dbhB; $stmtA=$stmtB; $mysql_count='01049'; $MEL_aff_rows=$Baffected_rows; &mysql_error_logging; $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;} $affected_rows = $dbhA->do($stmtA); $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';"; if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;} diff --git a/agc_2-X/trunk/docs/AGENT_MULTI-CAMPAIGN_DIALING.txt b/agc_2-X/trunk/docs/AGENT_MULTI-CAMPAIGN_DIALING.txt index ffb8375e..7b5fb93e 100644 --- a/agc_2-X/trunk/docs/AGENT_MULTI-CAMPAIGN_DIALING.txt +++ b/agc_2-X/trunk/docs/AGENT_MULTI-CAMPAIGN_DIALING.txt @@ -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: 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 - 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: - 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, 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 + diff --git a/agc_2-X/trunk/docs/VICIDIAL_statuses.txt b/agc_2-X/trunk/docs/VICIDIAL_statuses.txt index 0c7da5fc..37adb8bd 100644 --- a/agc_2-X/trunk/docs/VICIDIAL_statuses.txt +++ b/agc_2-X/trunk/docs/VICIDIAL_statuses.txt @@ -79,3 +79,4 @@ NVAINS - Default status for new inserted lead on phone NVA call CLOSOP - In-Group Closing-Time option selected PAUSMX - Pause Max Seconds timeout default status IQNANQ - In-Queue call No-Agent-No-Queue drop +SRDROP - SHARED outbound campaign drop to in-group, not included in most DROP stats