Datum aus Ticket Historie in ein Dynamic Field schreiben
Datum aus Ticket Historie in ein Dynamic Field schreiben
Hallo zusammen,
ich bin zur Zeit auf der Suche nach einer Möglichkeit wie ich das Datum einer Ticket Änderung aus der Ticket Historie in ein Dynamic Field schreiben kann. Ist dies überhaupt möglich? Habe bis jetzt bei div. Suchen nichts zu dem Thema gefunden.
Danke schon mal für eure Hilfe.
ich bin zur Zeit auf der Suche nach einer Möglichkeit wie ich das Datum einer Ticket Änderung aus der Ticket Historie in ein Dynamic Field schreiben kann. Ist dies überhaupt möglich? Habe bis jetzt bei div. Suchen nichts zu dem Thema gefunden.
Danke schon mal für eure Hilfe.
-
- Znuny guru
- Posts: 5018
- Joined: 13 Mar 2011, 09:54
- Znuny Version: 6.0.x
- Real Name: Renée Bäcker
- Company: Perl-Services.de
- Contact:
Re: Datum aus Ticket Historie in ein Dynamic Field schreiben
Möglich ist (fast) alles - zumindest mit Programmierung. Du bist aber sehr unspezifisch was die Anforderungen angeht. Wann soll die Aktion ausgeführt werden? Etc.
Perl / Znuny development: http://perl-services.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
Re: Datum aus Ticket Historie in ein Dynamic Field schreiben
Es geht bei der ganzen Sache um Tickets die in einer bestimmten Queue liegen. Hier geht es um Anträge die z.B alle zwei Jahre überprüft werden müssen. Unsere Idee war nun einen Job im Generic Agent zu erstellen der die erfolgreich geschlossenen Tickets nach zwei Jahren wieder öffnet damit diese wieder überprüft werden können. Hier haben wir eingestellt das Tickets die vor zwei Jahren geschlossen wurden wieder geöffnet werden. Klappt soweit nur das wir die Tickets nach dem bearbeiten wieder schließen und am nächsten morgen, wenn der Generic Agent greift, das Ticket wieder geöffnet wird. Dies passiert, weil immer nur der erste Ticket geschlossen Zeitpunkt abgefragt wird und nicht der letzte.
Hier war nun meine Idee das ich den letzten Zeitstempel aus der Ticket Historie irgendwie in ein Dynamisches Feld eintragen kann (immer dann wenn das Ticket wieder geschlossen wird), um damit dann eine neue Abfrage im Generic Agent zu basteln.
Hier war nun meine Idee das ich den letzten Zeitstempel aus der Ticket Historie irgendwie in ein Dynamisches Feld eintragen kann (immer dann wenn das Ticket wieder geschlossen wird), um damit dann eine neue Abfrage im Generic Agent zu basteln.
-
- Znuny guru
- Posts: 5018
- Joined: 13 Mar 2011, 09:54
- Znuny Version: 6.0.x
- Real Name: Renée Bäcker
- Company: Perl-Services.de
- Contact:
Re: Datum aus Ticket Historie in ein Dynamic Field schreiben
Da ist es einfacher, für diesen Fall ein Modul für den GenericAgent zu schreiben.
https://gist.github.com/reneeb/8433316 (ungetestet)
Du musst dann nur noch einen GenericAgent erstellen, der die geschlossenen Tickets in der gewünschten Queue selektiert. Und als "Custom Module" das Modul von oben eintragen.
https://gist.github.com/reneeb/8433316 (ungetestet)
Du musst dann nur noch einen GenericAgent erstellen, der die geschlossenen Tickets in der gewünschten Queue selektiert. Und als "Custom Module" das Modul von oben eintragen.
Perl / Znuny development: http://perl-services.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
Re: Datum aus Ticket Historie in ein Dynamic Field schreiben
Also habe das Modul erstellt und unter Kernel System Generic Agent abgelegt.
Im GenericAgent selbst hab ich einen Job erstellt, der die entsprechende Queue auswählt, nur erfolgreich geschlossene Tickets berücksichtigt und dann unter Customer Modul unter Modul habe ich dann folgendes eingetragen: Kernel::System::GenericAgent::reopenoldtickets.
Hier scheint er das Modul aber nicht auszuführen. Bin mir nicht sicher, ob der Aufruf des Moduls so richtig ist.
Wenn du mir hier noch weiterhelfen bzw. sagen könntest was ich falsch mache...
Im GenericAgent selbst hab ich einen Job erstellt, der die entsprechende Queue auswählt, nur erfolgreich geschlossene Tickets berücksichtigt und dann unter Customer Modul unter Modul habe ich dann folgendes eingetragen: Kernel::System::GenericAgent::reopenoldtickets.
Hier scheint er das Modul aber nicht auszuführen. Bin mir nicht sicher, ob der Aufruf des Moduls so richtig ist.
Wenn du mir hier noch weiterhelfen bzw. sagen könntest was ich falsch mache...
-
- Znuny guru
- Posts: 5018
- Joined: 13 Mar 2011, 09:54
- Znuny Version: 6.0.x
- Real Name: Renée Bäcker
- Company: Perl-Services.de
- Contact:
Re: Datum aus Ticket Historie in ein Dynamic Field schreiben
Auf Groß- und Kleinschreibung achten!Alex85 wrote:Kernel::System::GenericAgent::reopenoldtickets.
Da Du nicht sagst *WIE* Du es machst, kann ich Dir da nicht weiterhelfen...Alex85 wrote:Hier scheint er das Modul aber nicht auszuführen. Bin mir nicht sicher, ob der Aufruf des Moduls so richtig ist.
Wenn du mir hier noch weiterhelfen bzw. sagen könntest was ich falsch mache...
Perl / Znuny development: http://perl-services.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
Re: Datum aus Ticket Historie in ein Dynamic Field schreiben
Ja habe auf Groß- Kleinschreibung geachtet.
Und das Modul versuche ich über den Generic Agent unter "Benutzerdefiniertes Modul ausführen" aufzurufen, indem ich unter Modul folgenden Pfad eingebe. "Kernel::System::GenericAgent::reopenoldtickets"
Und das Modul versuche ich über den Generic Agent unter "Benutzerdefiniertes Modul ausführen" aufzurufen, indem ich unter Modul folgenden Pfad eingebe. "Kernel::System::GenericAgent::reopenoldtickets"
-
- Znuny guru
- Posts: 5018
- Joined: 13 Mar 2011, 09:54
- Znuny Version: 6.0.x
- Real Name: Renée Bäcker
- Company: Perl-Services.de
- Contact:
Re: Datum aus Ticket Historie in ein Dynamic Field schreiben
Dann zeig mal den Code des Moduls und am besten ein Screenshot der GenericAgent-Konfiguration. Hast Du getestet, ob überhaupt Tickets von dem Filter erfasst werden?
Perl / Znuny development: http://perl-services.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
Re: Datum aus Ticket Historie in ein Dynamic Field schreiben
Hier der Code
# --
# Kernel/System/GenericAgent/ReopenOldTickets.pm - generic agent notifications
# Copyright (C) 2014 Perl-Services.de, http://perl-services.de
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (AGPL). If you
# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
# --
package Kernel::System::GenericAgent::reopenoldtickets;
use strict;
use warnings;
use Kernel::System::State;
our $VERSION = 0.01;
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {};
bless( $Self, $Type );
# check needed objects
for my $Needed (qw(DBObject ConfigObject LogObject TicketObject TimeObject EncodeObject)) {
$Self->{$Needed} = $Param{$Needed} || die "Got no $Needed!";
}
$Self->{StateObject} = Kernel::System::State->new( %Param );
return $Self;
}
sub Run {
my ( $Self, %Param ) = @_;
# two years
my $Slot = ( 2 * 365 * 60 * 60 * 24 );
my $SystemTime = $Self->{TimeObject}->SystemTime();
my $Time = $Self->{TimeObject}->SystemTime2TimeStamp(
SystemTime => ( $SystemTime - $Slot ),
);
if ( $Self->{Debug} ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Slot: $Slot, SystemTime: $SystemTime, Time: $Time",
);
}
my $NameCheck =
join ' OR ',
map {
"ticket_history.name LIKE '%$_\%\%' "
} $Self->{StateObject}->StateGetStatesByType(
StateType => [ 'closed' ],
Result => 'Name',
);
my $SQL
= 'SELECT ticket_history.name, ticket_id, ticket_history.create_time FROM ticket_history '
. 'INNER JOIN ticket_history_type ON history_type_id = ticket_history_type.id '
. "WHERE ticket_id = ? AND ticket_history_type.name = 'StateUpdate' "
. "AND ($NameCheck)"
. "ORDER BY ticket_history.id DESC";
return if !$Self->{DBObject}->Prepare(
SQL => $SQL,
Bind => [ \$Param{TicketID} ],
Limit => 1,
);
my %Tickets;
ROW:
while ( my @Row = $Self->{DBObject}->FetchrowArray() ) {
if ( $Time lt $Row[2] ) {
next ROW;
}
$Tickets{ $Row[1] } = $Row[2];
}
return 1 if !%Tickets;
my $NewState = 'open';
$Self->{TicketObject}->TicketStateSet(
TicketID => $Param{TicketID},
State => $NewState,
UserID => 1,
);
return 1;
}
1;
# --
# Kernel/System/GenericAgent/ReopenOldTickets.pm - generic agent notifications
# Copyright (C) 2014 Perl-Services.de, http://perl-services.de
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (AGPL). If you
# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
# --
package Kernel::System::GenericAgent::reopenoldtickets;
use strict;
use warnings;
use Kernel::System::State;
our $VERSION = 0.01;
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {};
bless( $Self, $Type );
# check needed objects
for my $Needed (qw(DBObject ConfigObject LogObject TicketObject TimeObject EncodeObject)) {
$Self->{$Needed} = $Param{$Needed} || die "Got no $Needed!";
}
$Self->{StateObject} = Kernel::System::State->new( %Param );
return $Self;
}
sub Run {
my ( $Self, %Param ) = @_;
# two years
my $Slot = ( 2 * 365 * 60 * 60 * 24 );
my $SystemTime = $Self->{TimeObject}->SystemTime();
my $Time = $Self->{TimeObject}->SystemTime2TimeStamp(
SystemTime => ( $SystemTime - $Slot ),
);
if ( $Self->{Debug} ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Slot: $Slot, SystemTime: $SystemTime, Time: $Time",
);
}
my $NameCheck =
join ' OR ',
map {
"ticket_history.name LIKE '%$_\%\%' "
} $Self->{StateObject}->StateGetStatesByType(
StateType => [ 'closed' ],
Result => 'Name',
);
my $SQL
= 'SELECT ticket_history.name, ticket_id, ticket_history.create_time FROM ticket_history '
. 'INNER JOIN ticket_history_type ON history_type_id = ticket_history_type.id '
. "WHERE ticket_id = ? AND ticket_history_type.name = 'StateUpdate' "
. "AND ($NameCheck)"
. "ORDER BY ticket_history.id DESC";
return if !$Self->{DBObject}->Prepare(
SQL => $SQL,
Bind => [ \$Param{TicketID} ],
Limit => 1,
);
my %Tickets;
ROW:
while ( my @Row = $Self->{DBObject}->FetchrowArray() ) {
if ( $Time lt $Row[2] ) {
next ROW;
}
$Tickets{ $Row[1] } = $Row[2];
}
return 1 if !%Tickets;
my $NewState = 'open';
$Self->{TicketObject}->TicketStateSet(
TicketID => $Param{TicketID},
State => $NewState,
UserID => 1,
);
return 1;
}
1;
Re: Datum aus Ticket Historie in ein Dynamic Field schreiben
Wenn ich den Agent ausführe werden Tickets ausgewählt. Alle die geschlossen sind und in der entsprechenden Queue liegen. Hier ist es egal, ob ich das Customer Modul eintrage, oder nicht. Es werden immer die gleich Tickets angezeigt.
Anbei ein Screen aus dem Agent
Anbei ein Screen aus dem Agent
You do not have the required permissions to view the files attached to this post.