From a248227f651eca11ae0569d3fc072f77eef2deb2 Mon Sep 17 00:00:00 2001 From: mattf Date: Mon, 7 Sep 2009 13:26:53 +0000 Subject: [PATCH] Added PARK status to Real-time report, added LAGGED pause code to auto-paused agent records git-svn-id: svn://192.168.202.10@1219 3d104415-ff17-0410-8863-d5cf3c621b8a --- bin/AST_VDauto_dial.pl | 121 ++++++++++++++++++----------- www/vicidial/AST_timeonVDADall.php | 46 +++++++---- 2 files changed, 105 insertions(+), 62 deletions(-) diff --git a/bin/AST_VDauto_dial.pl b/bin/AST_VDauto_dial.pl index f49cf4b3..0dbbffca 100644 --- a/bin/AST_VDauto_dial.pl +++ b/bin/AST_VDauto_dial.pl @@ -80,6 +80,7 @@ # 90630-2252 - Added Sangoma CDP pre-Answer call processing # 90816-0057 - Changed default vicidial_log time to 0 from 1 second # 90827-1227 - Added list_id logging in vicidial_log on NA calls +# 90907-0919 - Added LAGGED pause code update for paused agents, reduced logging if no issues # @@ -1237,10 +1238,16 @@ while($one_day_interval > 0) if ($KLcallerid[$kill_vac] !~ /^M\d\d\d\d\d\d\d\d\d\d/) { $stmtA = "UPDATE vicidial_live_agents set status='PAUSED',random_id='10' where callerid='$KLcallerid[$kill_vac]';"; - $affected_rows = $dbhA->do($stmtA); + $Vaffected_rows = $dbhA->do($stmtA); - $event_string = "| dead call vla agent PAUSED $affected_rows|$CLlead_id|$CLphone_number|$CLstatus|"; - &event_logger; + if ($Vaffected_rows > 0) + { + $stmtA = "UPDATE vicidial_agent_log set sub_status='LAGGED' where agent_log_id IN(SELECT agent_log_id from vicidial_live_agents where callerid='$KLcallerid[$kill_vac]');"; + $VLaffected_rows = $dbhA->do($stmtA); + + $event_string = "| dead call vla agent PAUSED $Vaffected_rows|$VLaffected_rows|$CLlead_id|$CLphone_number|$CLstatus|"; + &event_logger; + } } if ( ($enable_queuemetrics_logging > 0) && ($CLstatus =~ /LIVE/) ) @@ -1549,67 +1556,89 @@ while($one_day_interval > 0) ### pause agents that have disconnected or closed their apps over 30 seconds ago - $stmtA = "UPDATE vicidial_live_agents set status='PAUSED',random_id='10' where server_ip='$server_ip' and last_update_time < '$PDtsSQLdate' and status NOT IN('PAUSED')"; - $affected_rows = $dbhA->do($stmtA); - - $event_string = "| lagged call vla agent PAUSED $affected_rows|$PDtsSQLdate|$BDtsSQLdate|$tsSQLdate|"; - &event_logger; - - if ($affected_rows > 0) + $toPAUSEcount=0; + $stmtA = "SELECT count(*) FROM vicidial_live_agents where server_ip='$server_ip' and last_update_time < '$PDtsSQLdate' and status NOT IN('PAUSED');"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArowsC=$sthA->rows; + if ($sthArowsC > 0) { - @VALOuser=@MT; @VALOcampaign=@MT; @VALOtimelog=@MT; @VALOextension=@MT; - $logcount=0; - $stmtA = "SELECT user,campaign_id,last_update_time,extension FROM vicidial_live_agents where server_ip='$server_ip' and status = 'PAUSED' and random_id='10' order by last_update_time desc limit $affected_rows"; - $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; - $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; - $sthArows=$sthA->rows; - $rec_count=0; - $rec_countCUSTDATA=0; - while ($sthArows > $rec_count) + @aryA = $sthA->fetchrow_array; + $toPAUSEcount = $aryA[0]; + } + $sthA->finish(); + $affected_rows=0; + + if ($toPAUSEcount > 0) + { + $stmtA = "UPDATE vicidial_agent_log set sub_status='LAGGED' where agent_log_id IN(SELECT agent_log_id from vicidial_live_agents where server_ip='$server_ip' and last_update_time < '$PDtsSQLdate' and status NOT IN('PAUSED'));"; + $VLaffected_rows = $dbhA->do($stmtA); + + $stmtA = "UPDATE vicidial_live_agents set status='PAUSED',random_id='10' where server_ip='$server_ip' and last_update_time < '$PDtsSQLdate' and status NOT IN('PAUSED');"; + $affected_rows = $dbhA->do($stmtA); + + $event_string = "| lagged call vla agent PAUSED $affected_rows|$VLaffected_rows|$PDtsSQLdate|$BDtsSQLdate|$tsSQLdate|"; + &event_logger; + + if ($affected_rows > 0) { - @aryA = $sthA->fetchrow_array; - $VALOuser[$logcount] = "$aryA[0]"; - $VALOcampaign[$logcount] = "$aryA[1]"; - $VALOtimelog[$logcount] = "$aryA[2]"; - $VALOextension[$logcount] = "$aryA[3]"; - $logcount++; - $rec_count++; - } - $sthA->finish(); - $logrun=0; - foreach(@VALOuser) - { - $VALOuser_group=''; - $stmtA = "SELECT user_group FROM vicidial_users where user='$VALOuser[$logrun]';"; + @VALOuser=@MT; @VALOcampaign=@MT; @VALOtimelog=@MT; @VALOextension=@MT; + $logcount=0; + $stmtA = "SELECT user,campaign_id,last_update_time,extension FROM vicidial_live_agents where server_ip='$server_ip' and status = 'PAUSED' and random_id='10' order by last_update_time desc limit $affected_rows"; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthArows=$sthA->rows; - $UGrec_count=0; - while ($sthArows > $UGrec_count) + $rec_count=0; + $rec_countCUSTDATA=0; + while ($sthArows > $rec_count) { @aryA = $sthA->fetchrow_array; - $VALOuser_group = "$aryA[0]"; - $UGrec_count++; + $VALOuser[$logcount] = "$aryA[0]"; + $VALOcampaign[$logcount] = "$aryA[1]"; + $VALOtimelog[$logcount] = "$aryA[2]"; + $VALOextension[$logcount] = "$aryA[3]"; + $logcount++; + $rec_count++; } $sthA->finish(); - $stmtA = "INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group) values('$VALOuser[$logrun]','LOGOUT','$VALOcampaign[$logrun]','$SQLdate','$now_date_epoch','$VALOuser_group');"; - $affected_rows = $dbhA->do($stmtA); + $logrun=0; + foreach(@VALOuser) + { + $VALOuser_group=''; + $stmtA = "SELECT user_group FROM vicidial_users where user='$VALOuser[$logrun]';"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + $UGrec_count=0; + while ($sthArows > $UGrec_count) + { + @aryA = $sthA->fetchrow_array; + $VALOuser_group = "$aryA[0]"; + $UGrec_count++; + } + $sthA->finish(); + $stmtA = "INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group) values('$VALOuser[$logrun]','LOGOUT','$VALOcampaign[$logrun]','$SQLdate','$now_date_epoch','$VALOuser_group');"; + $affected_rows = $dbhA->do($stmtA); - $event_string = "| lagged agent LOGOUT entry inserted $VALOuser[$logrun]|$VALOcampaign[$logrun]|$VALOextension[$logcount]|"; - &event_logger; + $event_string = "| lagged agent LOGOUT entry inserted $VALOuser[$logrun]|$VALOcampaign[$logrun]|$VALOextension[$logcount]|"; + &event_logger; - $logrun++; + $logrun++; + } } - } + ### delete call records that are SENT for over 2 minutes $stmtA = "DELETE FROM vicidial_auto_calls where server_ip='$server_ip' and call_time < '$XDSQLdate' and status NOT IN('XFER','CLOSER','LIVE','IVR')"; - $affected_rows = $dbhA->do($stmtA); + $VACaffected_rows = $dbhA->do($stmtA); - $event_string = "| lagged call vac agent DELETED $affected_rows|$XDSQLdate|"; - &event_logger; + if ($VACaffected_rows > 0) + { + $event_string = "| lagged call vac agent DELETED $VACaffected_rows|$XDSQLdate|"; + &event_logger; + } ### For debugging purposes, try to grab Jammed calls and log them to jam logfile diff --git a/www/vicidial/AST_timeonVDADall.php b/www/vicidial/AST_timeonVDADall.php index d294fab8..d948d119 100644 --- a/www/vicidial/AST_timeonVDADall.php +++ b/www/vicidial/AST_timeonVDADall.php @@ -54,10 +54,11 @@ # 90627-0608 - Some Formatting changes, added in-group name display # 90701-0657 - Fixed inbound=No calculation issues # 90808-0212 - Fixed inbound only non-ALL bug, changed times to use agent last_state_change +# 90907-0915 - Added PARK status # -$version = '2.0.5-45'; -$build = '90808-0212'; +$version = '2.0.5-46'; +$build = '90907-0915'; header ("Content-type: text/html; charset=utf-8"); @@ -1303,8 +1304,8 @@ $Aecho .= "VICIDIAL: Agents Time On Calls Campaign: $group_string $NO $HDbegin = "+"; $HTbegin = "|"; -$HDstation = "------------+"; -$HTstation = " STATION |"; +$HDstation = "--------------+"; +$HTstation = " STATION |"; $HDphone = "------------+"; $HTphone = " PHONE |"; $HDuser = "--------------------+"; @@ -1552,14 +1553,14 @@ $calls_to_list = mysql_num_rows($rslt); if ($non_latin < 1) { $extension = eregi_replace('Local/',"",$Aextension[$i]); - $extension = sprintf("%-10s", $extension); - while(strlen($extension)>10) {$extension = substr("$extension", 0, -1);} + $extension = sprintf("%-12s", $extension); + while(strlen($extension)>12) {$extension = substr("$extension", 0, -1);} } else { $extension = eregi_replace('Local/',"",$Aextension[$i]); - $extension = sprintf("%-40s", $extension); - while(mb_strlen($extension, 'utf-8')>10) {$extension = mb_substr("$extension", 0, -1,'utf8');} + $extension = sprintf("%-48s", $extension); + while(mb_strlen($extension, 'utf-8')>12) {$extension = mb_substr("$extension", 0, -1,'utf8');} } $phone = sprintf("%-10s", $phone_split[0]); @@ -1584,12 +1585,25 @@ $calls_to_list = mysql_num_rows($rslt); if (eregi("INCALL",$Lstatus)) { - ### temporarily deactivate DEAD calls display until bug is fixed - if (!ereg("$Acallerid[$i]\|",$callerids)) + $stmtP="select count(*) from parked_channels where channel_group='$Acallerid[$i]';"; + $rsltP=mysql_query($stmtP,$link); + $rowP=mysql_fetch_row($rsltP); + $parked_channel = $rowP[0]; + + if ($parked_channel > 0) { - $Astatus[$i] = 'DEAD'; - $Lstatus = 'DEAD'; - $status = ' DEAD '; + $Astatus[$i] = 'PARK'; + $Lstatus = 'PARK'; + $status = ' PARK '; + } + else + { + if (!ereg("$Acallerid[$i]\|",$callerids)) + { + $Astatus[$i] = 'DEAD'; + $Lstatus = 'DEAD'; + $status = ' DEAD '; + } } if ( (eregi("AUTO",$comments)) or (strlen($comments)<1) ) @@ -1630,7 +1644,7 @@ $calls_to_list = mysql_num_rows($rslt); while(mb_strlen($user, 'utf-8')>18) {$user = mb_substr("$user", 0, -1,'utf8');} } } - if (!eregi("INCALL|QUEUE",$Astatus[$i])) + if (!eregi("INCALL|QUEUE|PARK",$Astatus[$i])) {$call_time_S = ($STARTtime - $Astate_change[$i]);} else {$call_time_S = ($STARTtime - $Acall_time[$i]);} @@ -1638,7 +1652,7 @@ $calls_to_list = mysql_num_rows($rslt); $call_time_MS = sec_convert($call_time_S,'M'); $call_time_MS = sprintf("%7s", $call_time_MS); $G = ''; $EG = ''; - if ($Lstatus=='INCALL') + if ( ($Lstatus=='INCALL') or ($Lstatus=='PARK') ) { if ($call_time_S >= 10) {$G=''; $EG='';} if ($call_time_S >= 60) {$G=''; $EG='';} @@ -1696,7 +1710,7 @@ $calls_to_list = mysql_num_rows($rslt); # if ( (strlen($Acall_server_ip[$i])> 4) and ($Acall_server_ip[$i] != "$Aserver_ip[$i]") ) # {$G=''; $EG='';} - if ( (eregi("INCALL",$status)) or (eregi("QUEUE",$status)) ) {$agent_incall++; $agent_total++;} + if ( (eregi("INCALL",$status)) or (eregi("QUEUE",$status)) or (eregi("PARK",$status)) ) {$agent_incall++; $agent_total++;} if ( (eregi("READY",$status)) or (eregi("CLOSER",$status)) ) {$agent_ready++; $agent_total++;} if ( (eregi("READY",$status)) or (eregi("CLOSER",$status)) ) {