[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