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

Reply via email to