[rt-users] scrip : reply to resolved ticket -> open a new ticket (part2)
Sebastien Person
sebastien.person at easter-eggs.com
Tue Mar 30 10:52:23 EST 2004
hi,
I use RT 3.0.9 and I trying to make a scrip to automatically catch reply to
resolved ticket and create a new ticket with content from the reply catched.
In my preceding email I asked to the list the way to attach transaction
object of a current ticket to a new one. I haven't yet managed to get it
working but I create a fake mime message (identically to the transaction),
and I create a new ticket with this mime message.
old question (answer always needed) :
>I don't know what are the revelant info that
>must be copied ? Is there any method that allow to duplicate or ideally move
>a correspondence from one queue to another (didn't managed to found it in the
>docs..) ?
new questions :
- how to retrieve attached parts of the mail to attach them to the new ticket ?
(or in which file of RT could I find a suitable example ?)
here's follow the *dirty* way I have written to do it in my scrip action :
---
# we start with a transaction and a ticket obj
my $ticket = $self->TicketObj;
my $transaction = $self->TransactionObj;
$RT::Logger->debug(">>> Entering Custom Action <<<");
$RT::Logger->debug(">> Ticket : id=". $ticket->EffectiveId );
$RT::Logger->debug(">> Transaction content : " . $transaction->Content);
# compute mime message (don't know how to import it from transaction object..)
my $message = new MIME::Entity;
$message->build(
To => $transaction->Attachments->First->GetHeader('To'),
From => $transaction->Attachments->First->GetHeader('From'),
Subject => $transaction->Subject,
Date => $transaction->Attachments->First->GetHeader('Date'),
Data => 'Réponse reçue concernant le ticket résolu #' . $ticket->Id .
":\n\n" . $transaction->Content
);
my $child_ticket = RT::Ticket->new($RT::SystemUser);
# find the email of the sender
my $user = RT::User->new($RT::SystemUser);
$user->Load($transaction->Creator);
my $mail = $user->EmailAddress;
my ($child_id, $child_TransObj, $errorMsg) =
$child_ticket->Create(Queue => $ticket->Queue,
Subject => 'suite du ticket #'. $ticket->Id . ' : ' .
$ticket->Subject,
RefersTo => $ticket->Id,
MIMEObj => $message,
Requestor => $mail
);
# add a comment to the resolved ticket to inform that we have open a new ticket
$ticket->Comment( Content => 'Suite à la correspondance précédente (^^^), un
nouveau ticket à été ouvert. Voir le ticket #' . $child_ticket->Id);
return(1);
---
and the condition scrip that detect correspondence or comment on resolved
ticket :
---
my $ticket = $self->TicketObj;
my $transaction = $self->TransactionObj;
$RT::Logger->debug(">>> Creator: ". $transaction->Creator .
"Type:". $transaction->Type .
"Status:".$ticket->Status."<<<");
if ((($transaction->Type eq 'Correspond') || ($transaction->Type eq 'Comment'))
&&
$ticket->Status eq 'resolved' &&
$transaction->Creator != 1){# userid 1 is RT --> prevent loops
return(1);
} else {
return(undef);
}
---
I hope that my problem description is clear, if it is not, ask me and I will
give
you more details. Any help will be very appreciated ...
Thanks for your help.
seb
_______________________________________________
rt-users mailing list
rt-users at lists.bestpractical.com
http://lists.bestpractical.com/mailman/listinfo/rt-users
Have you read the FAQ? The RT FAQ Manager lives at http://fsck.com/rtfm
More information about the rt-users
mailing list