Hallo allerseits,
ich möchte folgendes einstellen und hoffe jemand hier kann mir vielleicht helfen.
Ist Status: Wenn ein Agent ein Ticket im gesperten zustand in eine andere Queue verschiebt bekommen alle Agenten, welche diese Queue als ihr Queue eigetragen haben eine Benachrichtigung.
Soll Status: Solange das Ticket nach dem Verschieben weiterhin gesperrt ist, soll keine Benachrichtigung verschickt werden. Erst wenn der Agent das Ticket frei gibt sollen alle Agenten, welche die neue Queue als ihr Queue eigetragen haben eine Benachrichtigung bekommen. Schließt der Agent das Ticket nach dem Verschieben, soll ebenfalls nichts verschickt werden.
Dass das Ticket nach dem Verschieben weiterhin gesperrt ist habe ich bereits durch deaktivieren von ForceUnlockOnMove erreicht, aber weiter weiß ich leider nicht. Wäre über ein wenig Hilfe sehr dankbar!
Verschieben gesperrter Tickets
Verschieben gesperrter Tickets
eine Lösung dafür würde mich auch brennend interessieren. werde mal die sysconfig durchforsten nach dem thema.
OTRS 5.0.24 (with ITSM Modules) and Znuny 6.4.4 in staging
Verschieben gesperrter Tickets
Ich habe eine Lösung, welche leider nur bei OTRS 2.0 einwandfrei funktioniert. Es müssen folgende Änderunge an der Ticket.pm vorgenommen werden. Der ersten Abschnitt ist bereits vorhanden und muss nur kurz erweitert werden. Der zweite Abschnitt wird neu hinzugefügt. Da die Tickete.pm bei OTRS 2.2 leider anders Aussieht funktioniert die Lösung nicht ganz richtig. Der Versuch einer Anpassung schlug leider fehl, da ich nicht tief genug in Perl drinstecke
Vielleicht ist ja jemand hier der mehr Ahnung von Perl hat als ich.

Code: Select all
# ticket unlock hinzugefügt -> keine Benachrichtigung an Agents wenn Ticket gesperrt ist
if ($Ticket{StateType} ne 'closed') {
if ($Ticket{LockID} ne '2') {
foreach ($Self->GetSubscribedUserIDsByQueueID(QueueID => $Param{QueueID})) {
my %UserData = $Self->{UserObject}->GetUserData(
UserID => $_,
Cached => 1,
Valid => 1,
);
if ($UserData{UserSendMoveNotification}) {
# send agent notification
$Self->SendAgentNotification(
Type => 'Move',
UserData => \%UserData,
CustomerMessageParams => { Queue => $Queue },
TicketID => $Param{TicketID},
UserID => $Param{UserID},
);
}
}
}
Code: Select all
# benachrichtigung an Agents, wenn Ticket entsperrt wird
if ($Param{Lock} =~ /^unlock$/i) {
my %Ticket = $Self->TicketGet(%Param);
if ($Ticket{StateType} ne 'closed') {
if ($Ticket{LockID} ne '2') {
if (!$Param{QueueID}) {
$Param{QueueID} = $Self->TicketQueueID(TicketID => $Param{TicketID});
}
foreach ($Self->GetSubscribedUserIDsByQueueID(QueueID => $Param{QueueID})) {
my %UserData = $Self->{UserObject}->GetUserData(
UserID => $_,
Cached => 1,
Valid => 1,
);
if ($UserData{UserSendMoveNotification}) {
# send agent notification
$Self->SendAgentNotification(
Type => 'Move',
UserData => \%UserData,
CustomerMessageParams => {},
TicketID => $Param{TicketID},
UserID => $Param{UserID},
);
}
}
}
}
}
Verschieben gesperrter Tickets
Ich hab nun eine funktionierende Lösung.
Es müssen ein paar Änderungen an der Ticket.pm vorgenommen werden. Falls jemand Interesse daran hat bitte ne pm schreiben.

Es müssen ein paar Änderungen an der Ticket.pm vorgenommen werden. Falls jemand Interesse daran hat bitte ne pm schreiben.
-
- Znuny guru
- Posts: 2189
- Joined: 08 Dec 2005, 17:01
- Znuny Version: 5.0.x
- Real Name: André Bauer
- Company: Magix Software GmbH
- Location: Dresden
- Contact:
Verschieben gesperrter Tickets
Veröffentliche es doch bitte einfach hier....
Prod: Ubuntu Server 16.04 / Zammad 1.2
DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!
OtterHub.org
DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!
OtterHub.org
Verschieben gesperrter Tickets
Das könnte ja in Arbeit ausarten,
aber nun gut: In der Datei: Kernel/System/Ticket.pm müssen folgenede Änderungen vorgenommen werden:
Als erstes in der Datei nach dem Block suchen der mit " if (!$Param{SendNoNotification} & $Ticket{StateType} ne 'closed') { " beginnt. Dieser muss so aussehen:
Als nächstes muss unterhalb von "sub LockSet { " folgender Block eingetragen werden:
Jetzt sollte es problemlos funktionieren.

Als erstes in der Datei nach dem Block suchen der mit " if (!$Param{SendNoNotification} & $Ticket{StateType} ne 'closed') { " beginnt. Dieser muss so aussehen:
Code: Select all
if (!$Param{SendNoNotification} & $Ticket{StateType} ne 'closed') {
if ($Ticket{LockID} ne '2') {
my %Used = ();
my @UserIDs = $Self->GetSubscribedUserIDsByQueueID(QueueID => $Param{QueueID});
if ($Param{ForceNotificationToUserID}) {
push (@UserIDs, @{$Param{ForceNotificationToUserID}});
}
foreach my $UserID (@UserIDs) {
if (!$Used{$UserID} && $UserID ne $Param{UserID}) {
$Used{$UserID} = 1;
my %UserData = $Self->{UserObject}->GetUserData(
UserID => $UserID,
Cached => 1,
Valid => 1,
);
if ($UserData{UserSendMoveNotification}) {
# send agent notification
$Self->SendAgentNotification(
Type => 'Move',
UserData => \%UserData,
CustomerMessageParams => {
Queue => $Queue,
Body => $Param{Comment} || '',
},
TicketID => $Param{TicketID},
UserID => $Param{UserID},
);
}
}
}
Code: Select all
# benachrichtigung an Agents, wenn Ticket entsperrt wird
if ($Param{Lock} =~ /^unlock$/i) {
my %Ticket = $Self->TicketGet(%Param);
if ($Ticket{StateType} ne 'closed') {
if ($Ticket{LockID} ne '2') {
if (!$Param{QueueID}) {
$Param{QueueID} = $Self->TicketQueueID(TicketID => $Param{TicketID});
}
foreach ($Self->GetSubscribedUserIDsByQueueID(QueueID => $Param{QueueID})) {
my %UserData = $Self->{UserObject}->GetUserData(
UserID => $_,
Cached => 1,
Valid => 1,
);
if ($UserData{UserSendMoveNotification}) {
# send agent notification
$Self->SendAgentNotification(
Type => 'Move',
UserData => \%UserData,
CustomerMessageParams =>{
Queue => "$Ticket{Queue}"
},
TicketID => $Param{TicketID},
UserID => $Param{UserID},
);
}
}
}
}
}