[rt-users] Faking {$Transaction->Content()}

Mauricio Tavares raubvogel at gmail.com
Tue Jul 5 18:33:45 EDT 2011


On Tue, Jul 5, 2011 at 6:25 PM, Kenneth Crocker <kfcrocker at lbl.gov> wrote:
> Mauricio,
>
> Why not just keep it simple and send them an email with some simple ticket
> info and the ticket id so they can just link to the ticket and see whatever
> info they need. They are going to need to go into the ticket anyway.
> Clicking a link to the ticket won't take anymore time than clicking any
> attachment in the email. AND if the ticket has several attachments (as many
> of ours do), this simplifies the process a great deal.
>
      I agree; I actually have that working (well the text part of the
comment is shown on the ticket and then the non-text attachments are
provided as links). Problem is that is what they want is the new
ticket owner to get a complete copy of the last ticket correspondence
so he can reply to it and it will be sent to the requestor. New owner
should not need to go to the RT web interface to do that. And that has
turned out to be a bit more challenging than I originally expected. :)

> Just a thought.
>
> Kenn
>
> On Tue, Jul 5, 2011 at 3:01 PM, Mauricio Tavares <raubvogel at gmail.com>
> wrote:
>>
>> On Tue, Jul 5, 2011 at 5:55 PM, Mauricio Tavares <raubvogel at gmail.com>
>> wrote:
>> > On Tue, Jul 5, 2011 at 5:51 PM, Kenneth Crocker <kfcrocker at lbl.gov>
>> > wrote:
>> >> Mauricio,
>> >>
>> >> Who are you sending the email to?
>> >>
>> >   The new ticket owner.
>> >
>>      Something on these lines (not claiming to be proper or correct)
>> is what I am trying to do:
>>
>> {
>>   my $Transactions = $Ticket->Transactions;
>>   $RT::Logger->debug("Find Transaction");
>>   $Transactions->Limit( FIELD => 'Type',
>>                          VALUE => "Correspond"
>>                        );
>>   $Transaction = $Transactions->Last;
>>   $RT::Logger->debug("Found Transaction : $Transaction");
>> }To: { $Ticket->OwnerObj->EmailAddress }
>> Subject: { $Ticket->Subject() }
>> RT-Attach-Message: yes
>>
>> But I am not able to feed the $Transaction I want (the one I got above
>> the headers) to RT-Attach-Message.
>>
>> >> Kenn
>> >> LBNL
>> >>
>> >> On Tue, Jul 5, 2011 at 12:35 PM, Mauricio Tavares <raubvogel at gmail.com>
>> >> wrote:
>> >>>
>> >>> On Tue, Jul 5, 2011 at 2:31 PM, Kenneth Crocker <kfcrocker at lbl.gov>
>> >>> wrote:
>> >>> > Mauricio,
>> >>> >
>> >>> > What is it you want to do? It sounds like you want to put the last
>> >>> > correspondence of a ticket into an email/template when the owner of
>> >>> > a
>> >>> > ticket
>> >>> > is changed. Is that right? Technically, there WAS a transaction
>> >>> > record
>> >>> > created, but since it only involved an owner change, that's the only
>> >>> > info on
>> >>> > the transaction record.
>> >>> >
>> >>> > If this is what you want to do, it CAN be done fairly easily with a
>> >>> > scrip.
>> >>> > What you want to do is pull up the last comment transaction entered
>> >>> > for
>> >>> > that
>> >>> > ticket. You can do that IN a template.
>> >>> >
>> >>>      Well, this what I want do do:
>> >>>
>> >>> If ticket owner changed
>> >>>   Send the last correspondence of a ticket into an email/template (as
>> >>> correspondence) to the new ticket owner.
>> >>>
>> >>> When I mean last correspondence I do want to include every attachment
>> >>> (.zip files, jpg, etc)  it came with (like what you would get by
>> >>> having RT-Attach-Message: yes), not only the textual content (which is
>> >>> what you would get by doing $Transaction->Content).
>> >>>
>> >>> From what I understand, $Transaction->Content (and RT-Attach-Message:
>> >>> yes) need the last Transaction to be a correspondence type to do their
>> >>> magic. But since the transaction associated with owner changing does
>> >>> not generate a correspondence, I cannot use them as they are. Well, as
>> >>> you pointed out, getting the text part of the last correspondence and
>> >>> creating a correspondence with that as the content is, quite easy. The
>> >>> non-text attachments are causing me problems.
>> >>>
>> >>> In my test script I grabbed only the transactions in that ticket with
>> >>> correspondence in them and am able to see which attachments the last
>> >>> correspondence had. That really does not do me any good but at least
>> >>> made me feel happy that I was able to find the attachments. :)
>> >>>
>> >>> > Hope this helps.
>> >>> >
>> >>> > Kenn
>> >>> > LBNL
>> >>> >
>> >>> > On Thu, Jun 30, 2011 at 2:59 PM, Mauricio Tavares
>> >>> > <raubvogel at gmail.com>
>> >>> > wrote:
>> >>> >>
>> >>> >>      From what I understand (thanks trs), in an on Owner Change
>> >>> >> event
>> >>> >> you cannot rely on using {$Transaction->Content()} to copy the last
>> >>> >> message/correspondence in a given ticket because no transaction was
>> >>> >> created. So, how can you fake it in an template? If the content was
>> >>> >> only a text file, it is not hard to do it, but what happens when
>> >>> >> you
>> >>> >> also have attachments? I wrote the following template,
>> >>> >>
>> >>> >> {
>> >>> >>   my $thingie = "Attachments:";
>> >>> >>   my $Transactions = $Ticket->Transactions;
>> >>> >>
>> >>> >>   $Transactions->Limit( FIELD => 'Type',
>> >>> >>                           VALUE => "Correspond"
>> >>> >>                         );
>> >>> >>   # $Rt::Logger->debug("Find Transaction");
>> >>> >>   my $TransactionObj = $Transactions->Last;
>> >>> >>      my $AttachmentsObj =
>> >>> >> RT::Attachments->new($TransactionObj->CurrentUser);
>> >>> >>      $AttachmentsObj->Limit( FIELD => 'TransactionID',
>> >>> >>                              VALUE => $TransactionObj->id
>> >>> >>                            );
>> >>> >>      while ( my $a = $AttachmentsObj->Next ) {
>> >>> >>         $thingie .= "\nFound an attachment with encoding " .
>> >>> >> $a->ContentType . " and ID " . $a->id;
>> >>> >>         if ( $a->ContentType eq 'text/plain' || $a->ContentType eq
>> >>> >> 'text/html'){
>> >>> >>            $thingie .= "\nContent:\n" . $a->Content;
>> >>> >>         }
>> >>> >>         elseif ( $a->ContentType eq 'multipart/mixed') {
>> >>> >>         }
>> >>> >>         else {
>> >>> >>            $thingie .= "\n" . $RT::WebURL ."/Ticket/Attachment/".
>> >>> >> $a->TransactionId ."/". $a->id ."/". $a->Filename;
>> >>> >>            $thingie .= "\n    ";
>> >>> >>         }
>> >>> >>      }
>> >>> >>   $thingie;
>> >>> >> }
>> >>> >>
>> >>> >> which finds the attachments and put links for the non-text (from
>> >>> >> http://requesttracker.wikia.com/wiki/AddAttachmentLinksToMail)
>> >>> >> attachments, but what I really want is, well, emulate
>> >>> >> {$Transaction->Content()}. Would anyone have any pointers?
>> >>> >>
>> >>> >> --------
>> >>> >> 2011 Training: http://bestpractical.com/services/training.html
>> >>> >
>> >>> >
>> >>> >
>> >>> > --------
>> >>> > 2011 Training: http://bestpractical.com/services/training.html
>> >>> >
>> >>
>> >>
>> >>
>> >> --------
>> >> 2011 Training: http://bestpractical.com/services/training.html
>> >>
>> >
>
>
>
> --------
> 2011 Training: http://bestpractical.com/services/training.html
>



More information about the rt-users mailing list