On Fri, Mar 01, 2013 at 08:50:32PM +0000, Bunker, Robert wrote:
> I have ParseNewMessageForTicketCcs enabled and new cases created by email do
> add CC'd addresses as CC roles on the ticket.
>
> The problem I am having is that any subsequent email communication from
> people that include new addresses do not get added to roles on the ticket
> (and thus don't get updates going forward).
>
> An example would be a user who is communicating on a case CCing their
> co-worker on an update. I would prefer to have this person added to the case
> and remain on the case.
>
> I would also prefer to have any new people addressed as a "To" added to case
> on subsequent emails.
>
> Does anyone have any suggestions?
>
do this with a scrip (but may appear to late in your RT workflow) or use
this old patch I already made (it's for 4.0.6).
NB: you may want to modify this patch as it skips Queues Cc/AdminCc
--
Easter-eggs Spécialiste GNU/Linux
44-46 rue de l'Ouest - 75014 Paris - France - Métro Gaité
Phone: +33 (0) 1 43 35 00 37 - Fax: +33 (0) 1 43 35 00 76
mailto:[email protected] - http://www.easter-eggs.com
diff --git a/rt/lib/RT/Interface/Email.pm b/rt/lib/RT/Interface/Email.pm
index 385ba72..0d07bc9 100644
--- a/rt/lib/RT/Interface/Email.pm
+++ b/rt/lib/RT/Interface/Email.pm
@@ -1517,6 +1517,18 @@ sub Gateway {
CurrentUser => $CurrentUser,
QueueObj => $SystemQueueObj
);
+ # Skip Ccs that matches current Requestors, Queue Ccs or Queue AdminCc
+ my @CleanCc;
+ foreach my $HeaderCcAddress ( @Cc ) {
+ my $HeaderCcObj = RT::User->new( $CurrentUser );
+ $HeaderCcObj->LoadByEmail($HeaderCcAddress);
+ next if ( defined $HeaderCcObj->Id && ( $HeaderCcObj->Id == $CurrentUser->Id ) );
+ next if ( defined $HeaderCcObj->PrincipalObj && $SystemQueueObj->IsAdminCc( $HeaderCcObj->PrincipalObj->Id ) );
+ next if ( defined $HeaderCcObj->PrincipalObj && $SystemQueueObj->IsCc( $HeaderCcObj->PrincipalObj->Id ) );
+
+ push @CleanCc, $HeaderCcAddress;
+ }
+ @Cc = @CleanCc;
}
my ( $id, $Transaction, $ErrStr ) = $Ticket->Create(
@@ -1555,6 +1567,39 @@ sub Gateway {
return ( 0, $error );
}
+ # Add Cc as watchers
+ if ( RT->Config->Get('ParseNewMessageForTicketCcs') ) {
+ my @Cc;
+ @Cc = ParseCcAddressesFromHead(
+ Head => $head,
+ CurrentUser => $CurrentUser,
+ QueueObj => $SystemQueueObj
+ );
+
+ # Skip Ccs that matches current Requestors, Queue Ccs or Queue AdminCc
+ my @CleanCc;
+ foreach my $HeaderCcAddress ( @Cc ) {
+ my $HeaderCcObj = RT::User->new( $CurrentUser );
+ $HeaderCcObj->LoadByEmail($HeaderCcAddress);
+ next if ( defined $HeaderCcObj->PrincipalObj && $Ticket->IsRequestor( $HeaderCcObj->PrincipalObj->Id ) );
+ next if ( defined $HeaderCcObj->PrincipalObj && $Ticket->IsAdminCc( $HeaderCcObj->PrincipalObj->Id ) );
+ next if ( defined $HeaderCcObj->PrincipalObj && $Ticket->IsCc( $HeaderCcObj->PrincipalObj->Id ) );
+ next if ( defined $HeaderCcObj->PrincipalObj && $SystemQueueObj->IsAdminCc( $HeaderCcObj->PrincipalObj->Id ) );
+ next if ( defined $HeaderCcObj->PrincipalObj && $SystemQueueObj->IsCc( $HeaderCcObj->PrincipalObj->Id ) );
+
+ push @CleanCc, $HeaderCcAddress;
+ }
+ @Cc = @CleanCc;
+
+ foreach (@Cc) {
+ $RT::Logger->crit("Adding Cc: ".$_);
+ $Ticket->_AddWatcher(
+ Type => 'Cc',
+ Email => $_,
+ Silent => 1
+ );
+ }
+ }
$args{'ticket'} = $Ticket->id;
} else {
return ( 1, "Success", $Ticket );
--
RT training in Amsterdam, March 20-21:
http://bestpractical.com/services/training.html
Help improve RT by taking our user survey:
https://www.surveymonkey.com/s/N23JW9T