My scrip looks for currently open Incidents that are related to each of the IP addresses in CF.{IP} on an Incident Report. If it finds one it links the Incident Report to that Incident thus making it unnecessary for someone to do it manually later. This might be changed to CustomerID or something later.
Anyway - The snippet from my scrip that I'd like to modify with something more native instead of using RT::Client::REST is the following. Is there a way to search for tickets without using RT::Client::REST? I've been reading through page after page but I'm not able to figure this one out. Is this the only way I'll be able to do it? It works but it logs itself in to RT via the web interface each time a new Incident Report comes in. use RT::Client::REST; use Error qw(:try); my $rturl = "http://".RT->Config->Get('WebDomain'); my $rt = RT::Client::REST->new( server => $rturl, timeout => 30 ); my $user = 'XXXXXX'; my $pass = 'XXxx11'; try { $rt->login(username => $user, password => $pass); } catch Exception::Class::Base with { die "problem logging in: ", shift->message; }; my $ips = $self->TicketObj->CustomFieldValues( 'IP' ); while ( my $ipobj = $ips->Next ) { my $ip = $ipobj->Content; $RT::Logger->critical("Searching for open incidents related to ".$ip."\n"); my $query = qq/Queue = 'Incidents' AND Status = 'open' AND CF.{IP} = '$ip'/; my @ids = $rt->search( type => 'ticket', query => $query, ); foreach my $id (@ids) { $RT::Logger->critical("Linking to existing Incident #".$id." for ".$ip."\n"); $self->TicketObj->AddLink( Type=>'MemberOf', Target=> $id ); } } -- Landon Stewart <landonstew...@gmail.com>
-- RT Training in Seattle, June 19-20: http://bestpractical.com/training