Nelson,
Here’s how I include the resolver’s message with our standard “resolved”
blurb. This is my (slightly modified) template for OnResolve. The guts of
what you want to do is that I grab the last correspondence, compare it to
the last outgoing e-mail (don’t include it if they’re the same), then see
if it’s incoming e-mail (don’t include it if so). If it passes those
tests, then I include it in my standard blurb to the requestor. There are
probably cleaner ways to do this, but I’m using this in production and it
works.
Regards,
Gene
===== start of template contents
{ ### Tells user that ticket has been resolved
my $MyName = “Template 28 (Resolved)”;
#$RT::Logger->debug(“$MyName (”. $Transaction->Id . “) entered.”);
my $FromAddress = ‘RT Requests rt@myorg.org’;
my $ContactAddress = ‘real.person@myorg.org’;
my $OwnerName = $Ticket->OwnerObj->RealName;
my $c_content;
my $e_content;
my $have_rmks;
my $remarks;
We won’t include a comment if…
- Last outgoing email content eq last correspond content (this means
that the content was already sent in an e-mail)
- Last correspond attachment headers =~ /^Received/ (this means that
the correspond was an incoming e-mail)
Get last Correspond
my $Transactions = $Ticket->Transactions;
$Transactions->Limit( FIELD => ‘Type’, VALUE => ‘Correspond’ );
$Transactions->OrderByCols (
{ FIELD => ‘Created’, ORDER => ‘DESC’ },
{ FIELD => ‘id’, ORDER => ‘DESC’ },
);
my $CorrespondObj = $Transactions->First;
if ($CorrespondObj && $CorrespondObj->Id) {
$c_content = $CorrespondObj->Content;
chomp $c_content;
$have_rmks = !$CorrespondObj->Attachments->First->GetHeader(‘Received’);
#$RT::Logger->debug(“$MyName: found correspondence: ‘$_content’”) if
$have_rmks;
}
Get last outgoing e-mail
$Transactions = $Ticket->Transactions;
$Transactions->Limit( FIELD => ‘Type’, VALUE => ‘EmailRecord’ );
$Transactions->OrderByCols (
{ FIELD => ‘Created’, ORDER => ‘DESC’ },
{ FIELD => ‘id’, ORDER => ‘DESC’ },
);
my $EmailObj = $Transactions->First;
if ($EmailObj && $EmailObj->Id) {
$e_content = $EmailObj->Content;
chomp $e_content;
if ($c_content) {
$have_rmks = 0 if $e_content eq $c_content;
$have_rmks = 0 if $EmailObj->Id > $CorrespondObj->Id;
}
}
use Mail::Address;
my $Cc = ‘’;
my $Bcc = ‘’;
if ( $have_rmks ) {
my $attachment = $CorrespondObj->Attachments->First;
my @cc_addrs = Mail::Address->parse($attachment->GetHeader(‘RT-Send-Cc’));
my @bcc_addrs =
Mail::Address->parse($attachment->GetHeader(‘RT-Send-Bcc’));
foreach my $addr ( @cc_addrs ) {
$Cc .= $addr->address . ", ";
}
$Cc .= $Ticket->QueueObj->Cc->MemberEmailAddressesAsString;
$Cc =~ s/, $//;
foreach my $addr ( @bcc_addrs ) {
$Bcc .= $addr->address . ", ";
}
$Bcc .= $Ticket->QueueObj->AdminCc->MemberEmailAddressesAsString;
$Bcc =~ s/, $//;
}
Set the remarks if applicable
if ($have_rmks) {
$remarks = "
Comments:
$c_content
====================“;
#$RT::Logger->debug(”$MyName: going to send comments: $remarks");
}
my $AddressGroup = “From: $FromAddress”;
$AddressGroup .= “\nCc: $Cc” if $Cc;
$AddressGroup .= “\nBcc: $Bcc” if $Bcc;
$OUT = "$AddressGroup
The ticket that was opened for your request has been resolved by
$OwnerName. If you have any questions about this, you can contact us at
$ContactAddress.
$remarks
Regards,
The IT Staff";
}
===== end of template contents
At 10:42 AM 5/5/2008, Nelson Pereira wrote:
Content-Class: urn:content-classes:message
Content-Type: multipart/related; type=“multipart/alternative”;
boundary=“----_=_NextPart_001_01C8AED7.61321FB3”
Hi,
Wondering how to do this:
When I resolve a ticket, I want RT to send the message I put in the
resolve to the requestor, and not the default as per our records
.
Nelson Pereira
Senior Network Administrator
Gene LeDuc, GSEC
Security Analyst
San Diego State University