SOAP Beispiel “Hot Potatoe Reporting” – Teil 2

Hier nur das komplette Script, um die “heißen Kartoffeln herauszufinden:


jb$ ./rpc_getmove-hot-potatoe.pl -m 6
NOTICE: Ticket#2010010610000011 (4) - number of used Queues: 8 - Limit: 6

Die Option -m gibt die maximale Anzahl der erlaubten Queues an, d.h. wird dieser Wert überschritten, wird die Ticketnummer ausgegeben.

Weitere Suchoptionen finden sich in der API Beschreibung der TicketSearch

Das Script setzt eine aktivierte SOAP Schnittstelle im OTRS voraus, sowie ein installiertes SOAP::Lite auf dem Rechner, auf dem das Script ausgeführt wird.

#!/usr/bin/perl -w
# SOAP Config
use SOAP::Lite( 'autodispatch', proxy => 'http://otrsserver/otrs/rpc.pl' );
my $SOAP_User = 'otrs';
my $SOAP_Pass = 'test';
 
# getting TicketID
use Getopt::Std;
my %opts;
getopts( 'm:', \%opts );
if ( !$opts{m} ) {
    print STDERR "ERROR: Need -m Maximum Queues\n";
    exit 1;
}
# SOAP script
my $RPC = Core->new();
 
# Getting all Open Tickets
my @TicketIDs = $RPC->Dispatch( $SOAP_User, $SOAP_Pass, 'TicketObject', 'TicketSearch',
        Limit  => 100000,
        Result => 'ARRAY',
        UserID => 1,
#       Queues   => ['system queue', 'other queue'],
#       UseSubQueues => 1,
        StateType    => ['open', 'new', 'pending reminder'],
    );
 
# Start of for statement
for my $TicketID (@TicketIDs) {
        my @QueueList = $RPC->Dispatch( $SOAP_User, $SOAP_Pass, 'TicketObject', 'MoveQueueList',
                TicketID => $TicketID,
                Type     => 'Name',
        );
        my $TicketNumber = $RPC->Dispatch( $SOAP_User, $SOAP_Pass, 'TicketObject', 'TicketNumberLookup',
                TicketID => $TicketID,
        );
        $QL = scalar @QueueList;
        if ( $opts{m} < $QL )
                {
                print "NOTICE: Ticket#$TicketNumber ($TicketID) - number of used Queues: $QL - Limit: $opts{m}\n";
                }
}
exit 0;

Comments are closed.