Wir haben kürzlich von Zammad auf OTRS umgestellt (ja, ich weiß, lustige Richtung, aber wir hatten mit Zammad so unsere Probleme) und ich gerate momentan bei einem Problem ins Straucheln. Ich kann mir kaum vorstellen, dass dieses Problem so selten oder komplex ist, kann aber im Internet _wirklich_ nichts diesbezüglich finden - sollte ich etwas übersehen haben bitte ich im Vorfeld um Entschuldigung, normal kann ich mit Google und Suchfunktionen ganz gut umgehen, vielleicht fehlt mir einfach der richtige Suchbegriff?
Anforderung:
Wir bekommen von einem Monitoring-Tool E-Mails in unser Ticketsystem. Diese Mails kommen immer von der selben E-Mail Adresse (monitoring@company.tld) - von der Adresse kommt sonst nichts. Die Mails folgen im Betreff immer dem Aufbau "Produkt | Instanz | Fehlermeldung" (also bspw. "OracleDB | dbsrv01 | stuck transactions") oder "Instanz | Fehlermeldung" (also bspw. "dbsrv01 | stuck transactions"). Optional (bei wiederholtem Auftreten) ist der Betreff mit "Re: " prefixed. Das Monitoring ist nicht "OTRS-Aware", weshalb keine Werte für vorhandene FollowUpChecks (TicketID oder References) vorhanden sind. Ich möchte nun, dass diese Mails keine neuen Tickets erstellen, sondern automatisch als FollowUp erkannt werden, basierend auf dem Betreff.
Sämtliche bisherigen Versuche sind leider gescheitert. Einer meiner Versuche war ein eigener FollowUpCheck (unter /opt/otrs/Kernel/System/PostMaster/FollowUpCheck/Identical.pm):
Code: Select all
package Kernel::System::PostMaster::FollowUpCheck::Identical;
use strict;
use warnings;
use Kernel::System::ObjectManager;
our @ObjectDependencies = (
'Kernel::Config',
'Kernel::System::Ticket',
'Kernel::System::Ticket::TicketSearch',
);
sub new {
my ( $Type, %Param ) = @_;
my $Self = {};
bless( $Self, $Type );
$Self->{ParserObject} = $Param{ParserObject} || die "Got no ParserObject";
$Self->{CommunicationLogObject} = $Param{CommunicationLogObject} || die "Got no CommunicationLogObject!";
return $Self;
}
sub Run {
my ( $Self, %Param ) = @_;
$Self->{CommunicationLogObject}->ObjectLog(
ObjectLogType => 'Message',
Priority => 'Debug',
Key => 'Kernel::System::PostMaster::FollowUpCheck::Identical',
Value => 'Searching for identical tickets (customer and subject).',
);
my $Mail = $Param{GetParam};
my $From = $Mail->{From};
my $Subject = $Mail->{Subject};
return 1 if $From !~ /monitoring\@company.tld/;
my $ModifiedSubject = $Subject;
$ModifiedSubject =~ s/\| (OracleDB|NiFi|ProduktXY)//;
my $TicketObject = $Kernel::OM->Get('Kernel::System::Ticket');
my @TicketIDs = $TicketObject->TicketSearch(
Result => 'ARRAY',
Limit => '1',
StateType => ['open', 'new', 'closed', 'pending reminder', 'pending auto'],
Title => [$Subject, $ModifiedSubject],
MIMEBase_From => $From,
UserID => 1,
Permission => 'ro',
);
if ( @TicketIDs ) {
return $TicketIDs[0];
}
}
1;
Ich habe auch einen anderen Ansatz versucht (https://lists.otrs.org/pipermail/otrs/2 ... 31700.html), konnte damit aber leider auch keine Erfolge erzielen. Da dieser Ansatz bereits relativ alt ist, könnte es an Änderungen in OTRS liegen (die haben 2010 vermutlich noch nicht von Version 6.0.19 gesprochen).
Nach einigen Tagen experimentieren bin ich nun mit meinem Latein am Ende und hoffe hier auf Hilfe. Ich kann leider überhaupt nicht einschätzen, wie komplex das Thema wird, kann mir aber kaum vorstellen, dass sonst niemand bereits dieses Problem hatte.
Vielen Dank im Voraus und LG
xoh