[rt-users] Tickets from other Ticketsystem
Eierschmalz, Bernhard
Bernhard.Eierschmalz at scheppach.com
Mon Sep 14 18:51:13 EDT 2015
Hello Kevin,
I found a solution on my own now - maybe interesting for somebody.
Quick discription:
1. I recognize the external ticket number with regex from subject and write this number to a Custom Field
2. search for existing tickets with same value in same Custom Field and merge the tickets
Now how I did:
Step 1: create a custom field for all queues used for the external ticket number.
Step 2: Create the following Scrip:
CustomIsApplicableCode: (at this part we check with if a ticket is created from a valid address with a valid regex-syntax for external ticket system)
# only on creating tickets
return 0 unless $self->TransactionObj->Type eq "Create";
my $subject = $self->TransactionObj->Subject;
return 0 unless defined($subject);
# mail-addresses from other ticket systems
my @ticketsender = ('...'); #<-- this is an array of addresses or parts of addresses wich are recognized for other ticketsystem-verification.
my $ticketRequestor = lc($self->TicketObj->RequestorAddresses);
if ( $subject =~ / \[plus ticket\d{8}\]/) #<-- regex-code for other external ticket numbers in message subject
{
foreach (@ticketsender)
{
if ($ticketRequestor =~ /$_/) #<-- check if sender is permitted
{
return 1;
}
}
}
return 0;
CustomPrepareCode (at this part we write the external ticket number to the custom field)
my $subject = $self->TransactionObj->Subject;
$subject =~ s/.*\[plus ticket//;
my $cfval = "PLUS".substr($subject,0,8); # <-- cfval contains the Value number of the external ticket plus some first letters to identify - this is to be able to add more external ticket numbers
# write to CustomField
my $cf = RT::CustomField->new ( $RT::SystemUser );
$cf->Load('21'); #<-- ID of the custom field from step 1
$self->TicketObj->AddCustomFieldValue ( Field => $cf, Value => $cfval );
return 1;
CustomCommitCode (at this part we search for already existing tickets with same CF and merge them)
my $extnr = $self->TicketObj->FirstCustomFieldValue('21'); #<-- load the custom field value
# find all the ticket to the reference number from ticketsystem
my $search = new RT::Tickets(RT->SystemUser);
$search->LimitCustomField(CUSTOMFIELD => '21', OPERATOR => '=', VALUE => $extnr);
while (my $ticket = $search->Next)
{
# ignore if finding the new ticket itself
next if $self->TicketObj->Id == $ticket->Id;
my $id = $ticket->Id;
# Logging
$RT::Logger->info("Merging ticket " . $self->TicketObj->Id . " into $id because of Reference number $extnr match.");
# merge Tickets
$self->TicketObj->MergeInto($id);
}
best regards,
Bernhard
-----Ursprüngliche Nachricht-----
Von: rt-users [mailto:rt-users-bounces at lists.bestpractical.com] Im Auftrag von Eierschmalz, Bernhard
Gesendet: Montag, 11. Mai 2015 10:44
An: rt-users at lists.bestpractical.com
Cc: falcone at bestpractical.com
Betreff: Re: [rt-users] Tickets from other Ticketsystem
Hello Kevin,
I know this is a very old mail below. I didn't install the plugin in this times, because it was not so urgent.
But now I have the same problem again.
I read about the extension you mentioned. But I think there is one problem.
What I understood about the extension is:
- when there is a new mail to an existing resolved ticket with defined ticket number
- open a new ticket
What I need is the following
- when there is a new mail to a new ticket AND the subject is starting with defined syntax
- check if there is any ticket with almost the same subject
- attach the new mail to the existing ticket instead of opening a new one.
So the difference is that the extension searches for a ticket with defined number - what I need is to search for any existing ticket with a defined syntax.
Are you sure the extension would work in my case?
Can you tell me how to use it?
Best regards
Bernhard
-----Ursprüngliche Nachricht-----
Von: rt-users [mailto:rt-users-bounces at lists.bestpractical.com] Im Auftrag von Kevin Falcone
Gesendet: Mittwoch, 3. September 2014 22:34
An: rt-users at lists.bestpractical.com
Betreff: Re: [rt-users] Tickets from other Ticketsystem
On Mon, Aug 25, 2014 at 08:27:00AM +0000, Eierschmalz, Bernhard wrote:
> Hello Kevin,
>
> I already thought about creating a scrip like
> Condition:
> Transaction obj = "create"
> Subject contains "[plus ticket#"
>
> Action:
> Search tickets with same plus-ticket no.
> If one exists, combine
>
> What do you think about this solution? Or would you prefer the strongly modified plugin?
>
Scrip runs after the second ticket is created and sends email. You then Merge it.
The plugin never allows the second ticket to be created.
-kevin
>
>
> -----Ursprüngliche Nachricht-----
> Von: rt-users [mailto:rt-users-bounces at lists.bestpractical.com] Im
> Auftrag von Kevin Falcone
> Gesendet: Freitag, 22. August 2014 16:01
> An: rt-users at lists.bestpractical.com
> Betreff: Re: [rt-users] Tickets from other Ticketsystem
>
> On Tue, Aug 19, 2014 at 05:36:04AM +0000, Eierschmalz, Bernhard wrote:
> > we have one customer using its own ticket system. This customer
> > sends us mails with an information about his own ticket in the subject.
> >
> > i.e. [PLUS.DE Ticket#PD077994]
> >
> > sometimes when this customer answers, he doesn’t send our ticket
> > number in subject, so he opens a new ticket.
> >
> > Is it possible to identify a mail by this PLUS ticket number and add
> > to our already opened ticket instead of open a new one?
>
> Look at the code in
> https://github.com/bestpractical/rt-extension-repliestoresolved
>
> The function it hooks can be used to lie to RT and return a ticket id of the existing ticket (as opposed to what this extension does, which is suppress the ticket id so that a new ticket will be created).
>
> -kevin
> --
> RT Training - Boston, September 9-10
> http://bestpractical.com/training
More information about the rt-users
mailing list