To all (especially Ruslan & Stephen),
Hallelujah! I finally got the code to parse CC addresses to a ticket
for Queues only to work. Below is the code:
Custom condition:
condition set on email transaction to create
my $trans = $self->TransactionObj;
my $msgattr = $trans->Message->First;
return 0 unless $trans->Type eq “Create”;
return 0 unless $msgattr;
return 1 if $msgattr->GetHeader(‘Received’);
return 0;
Custom action preparation code:
Setup default QA Approver
my $trans = $self->TransactionObj;
my $ticket = $self->TicketObj;
my $cf_obj = RT::CustomField->new($RT::SystemUser);
my $cf_name = “QA Approver”;
my $cf_value = $trans->CreatorObj->Name;
$cf_obj->LoadByName( Name => $cf_name );
$RT::Logger->debug( “Loaded $cf_obj->Name = “. $cf_obj->Name() .”\n” );
$ticket->AddCustomFieldValue( Field=>$cf_obj, Value=>$cf_value,
RecordTransaction=>0 );
Set up variables for parsing CC’s
my $header;
my $addr;
my $ccid;
my $cc;
Parse the email CC’s into ticket “CC” Watchers
foreach $header ($trans->Attachments->First->GetHeader(“Cc”))
{
foreach $cc ( split /,/, $header )
{
($addr) = $cc =~ /([\w-]+?@[\w-]+?.[\w]+)/;
$ccid = substr($addr, 0,length($addr)-8);
my $user = RT::User->new($RT::SystemUser);
$addr = $user->CanonicalizeEmailAddress($ccid);
$ticket->AddWatcher( Type => ‘Cc’, Email => $ccid );
}
}
return 1;
Custom action cleanup code:
return 1;
Now, I'm sure there are a couple of better ways to write this code,
so Ruslan or Stephen, please advise. However, I am EXTREMELY tickled
that I finally got this thing to work. OH, also thanks to Gene LeDuc.
Kenn
LBNL