[rt-users] Making RT 3.8.1 grok References: and In-Reply-To:

Ruslan Zakirov ruz at bestpractical.com
Thu Oct 30 14:46:26 EDT 2008


On Thu, Oct 30, 2008 at 8:57 PM, Lars Kellogg-Stedman <lars at oddbit.com> wrote:
> This reply missed the list the first time around:
>
>> It's something I'm of two minds about.  On the one-hand, it's a really
>> slick feature that makes a lot of things easier. On the other hand, it's
>> quite common for users to open new tickets by popping up an old ticket
>> reply and changing the subject and body. Which will incorrectly thread
>> it as on the previous ticket. (Most mail clients don't expose
>> "in-reply-to" and "references" headers for user editing.)
>
> This all came about from a "hey, ticket system product A has this
> feature that seems really slick, why doesn't RT do that"?  So it was
> more proof of concept than anything else.  The fact that RT, at least
> in 3.8.1, is already collecting message ids made my life much easier.
> One could perhaps implement some sort of time threshold to help winnow
> out this sort of thing.  I don't know how other ticket systems that
> use the references information as a primary source handle this.
>
>> It'd be cool if this could become an RT extension that could be cpanned.
>
> If I'm the only person using this code (and only in my personal RT at
> the moment, not in our production system), this probably won't
> percolate very high up on my to do list.  If someone else wants to try
> it out and verify that it works as described and spot any problems,
> I'd be happy to take a look at it.
>
> The biggest problem I see with making this an installable extension is
> that it requires patching RT/Interface/Email.pm.  It's a one-liner...
Actually this's a wrong API change I missed during RT 3.6.x, earlier
we were passing more than $Subject into ParseTicketId function.

I think it's possible to pass MIMEObj next to $Subject into
ParseTicketId function and override it in extension or wrap. I'm happy
to apply such change for 3.8.2.

>
> --- Email.pm.orig       2008-10-28 13:58:18.979900000 -0400
> +++ Email.pm    2008-10-28 13:58:29.726978000 -0400
> @@ -1229,6 +1229,7 @@
>    }
>
>    $args{'ticket'} ||= ParseTicketId( $Subject );
> +    $args{'ticket'} ||= ParseReferences( $head );
>
>    $SystemTicket = RT::Ticket->new( $RT::SystemUser );
>    $SystemTicket->Load( $args{'ticket'} ) if ( $args{'ticket'} ) ;
>
> ...but I'm not sure where else to put it.  To make this more graceful,
> there would need to be a registry of some sort so that the above code
> would look something like:
>
>  for my $func (@registered_functions) {
>   $args{'ticket'} = &$func($head) && last;
>  }
>
> Or something.  Maybe the MailPlugins interface could be beefed up to
> do more than authentication work?  If this could add arbitrary
> attributes to the message object ($message->add('rt-ticket-id', ...)),
> that would be a fine place to insert this sort of code.  Then Email.pm
> wouldn't explicitly do subject line scanning; this would be in a
> MailPlugin that was enabled by default...or enabled unilaterally, or
> something.
> _______________________________________________
> http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users
>
> Community help: http://wiki.bestpractical.com
> Commercial support: sales at bestpractical.com
>
>
> Discover RT's hidden secrets with RT Essentials from O'Reilly Media.
> Buy a copy at http://rtbook.bestpractical.com
>



-- 
Best regards, Ruslan.



More information about the rt-users mailing list