From c54a5b687385734bb4eeca8e1d28c29fda5d4a07 Mon Sep 17 00:00:00 2001 From: mattf Date: Thu, 9 Oct 2008 14:11:56 +0000 Subject: [PATCH] fixed issues with remote agent pl script added hangup for left 3way vicidial_conferences in conf_update script git-svn-id: svn://192.168.202.10@958 3d104415-ff17-0410-8863-d5cf3c621b8a --- bin/AST_VDremote_agents.pl | 20 +++++++------------- bin/AST_conf_update.pl | 22 +++++++++++++++------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/bin/AST_VDremote_agents.pl b/bin/AST_VDremote_agents.pl index 74949d75..7689e552 100644 --- a/bin/AST_VDremote_agents.pl +++ b/bin/AST_VDremote_agents.pl @@ -35,6 +35,7 @@ # 70222-1606 - Changed queue_log PAUSE/UNPAUSE to PAUSEALL/UNPAUSEALL # 70417-1346 - Fixed bug that would add unneeded simulated agent lines # 80128-0105 - Fixed calls_today bug +# 81007-1746 - Added debugX output for count statements and changed to if from while # ### begin parsing run-time options ### @@ -394,18 +395,16 @@ while($one_day_interval > 0) { if (length($DBremote_user[$h])>1) { - ### check to see if the record exists and only needs random number update $stmtA = "SELECT count(*) FROM vicidial_live_agents where user='$DBremote_user[$h]' and server_ip='$server_ip' and campaign_id='$DBremote_campaign[$h]' and conf_exten='$DBremote_conf_exten[$h]' and closer_campaigns='$DBremote_closer[$h]';"; + if ($DBX) {print STDERR "|$stmtA|\n";} $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthArows=$sthA->rows; - $rec_count=0; - while ($sthArows > $rec_count) + if ($sthArows > 0) { @aryA = $sthA->fetchrow_array; $loginexistsRANDOM[$h] = "$aryA[0]"; - $rec_count++; } $sthA->finish(); @@ -419,15 +418,14 @@ while($one_day_interval > 0) else { $stmtA = "SELECT count(*) FROM vicidial_live_agents where user='$DBremote_user[$h]' and server_ip='$server_ip'"; + if ($DBX) {print STDERR "|$stmtA|\n";} $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthArows=$sthA->rows; - $rec_count=0; - while ($sthArows > $rec_count) + if ($sthArows > 0) { @aryA = $sthA->fetchrow_array; $loginexistsALL[$h] = "$aryA[0]"; - $rec_count++; } $sthA->finish(); @@ -480,12 +478,10 @@ while($one_day_interval > 0) $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthArows=$sthA->rows; - $rec_countLSC=0; - while ($sthArows > $rec_countLSC) + if ($sthArows > 0) { @aryA = $sthA->fetchrow_array; $LSC_count = "$aryA[0]"; - $rec_countLSC++; } $sthA->finish(); @@ -567,12 +563,10 @@ while($one_day_interval > 0) $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthArows=$sthA->rows; - $rec_count=0; - while ($sthArows > $rec_count) + if ($sthArows > 0) { @aryA = $sthA->fetchrow_array; $autocallexists[$z] = "$aryA[0]"; - $rec_count++; } $sthA->finish(); diff --git a/bin/AST_conf_update.pl b/bin/AST_conf_update.pl index 71618553..d68112bb 100644 --- a/bin/AST_conf_update.pl +++ b/bin/AST_conf_update.pl @@ -12,6 +12,7 @@ # 60717-1536 - changed to use /etc/astguiclient.conf for configs # 80506-1055 - Added check for vicidial_conferences in 3WAY # 80914-1533 - Added kickall for leave-3way calls after one hour +# 81008-0937 - Added kickall from vicidial_conferences if only one participant # # constants @@ -256,15 +257,11 @@ foreach(@PTextensions) foreach(@list_channels) { if($DB){print "|$list_channels[$j]|\n";} + ### mark all empty conferences and conferences with only one channel as empty if ($list_channels[$j] =~ /No active conferences|No such conference/i) {$conf_empty[$i]++;} -# if ($list_channels[$j] =~ /^User /i) -# { -# $userx = ''; -# $userx = $list_channels[$j]; -# $userx =~ s/User \#: //gi; -# $conf_users[$i] .= "$userx|"; -# } + if ($list_channels[$j] =~ /1 users in that conference/i) + {$conf_empty[$i]++;} $j++; } @@ -289,6 +286,17 @@ foreach(@PTextensions) if ($PTextensions[$i] =~ /Xtimeout1$/i) {$NEWexten[$i] = ''; $leave_3waySQL='0';} if ( ($PTextensions[$i] !~ /Xtimeout\d$/i) and (length($PTextensions[$i])> 0) ) {$NEWexten[$i] .= 'Xtimeout3';} + if (length($NEWexten[$i]) < 1) + { + ### Kick all participants if there are any left in the conference so it can be reused + $local_DEF = 'Local/5555'; + $local_AMP = '@'; + $kick_local_channel = "$local_DEF$PT_conf_extens[$i]$local_AMP$ext_context"; + $queryCID = "ULGC36$TDnum"; + + $stmtA="INSERT INTO vicidial_manager values('','','$now_date','NEW','N','$server_ip','','Originate','$queryCID','Channel: $kick_local_channel','Context: $ext_context','Exten: 8300','Priority: 1','Callerid: $queryCID','','','','','');"; + $affected_rows = $dbhA->do($stmtA); # or die "Couldn't execute query:|$stmtA|\n"; + } $stmtA = "UPDATE vicidial_conferences set extension='$NEWexten[$i]',leave_3way='$leave_3waySQL' where server_ip='$server_ip' and conf_exten='$PT_conf_extens[$i]';"; if($DB){print STDERR "\n|$stmtA|\n";}