Verschieben gesperrter Tickets

Hilfe zu Znuny Problemen aller Art
Locked
Kosch
Znuny newbie
Posts: 7
Joined: 30 Jan 2008, 17:21

Verschieben gesperrter Tickets

Post by Kosch »

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!
PhyrePhoX
Znuny advanced
Posts: 133
Joined: 05 Dec 2007, 10:56
Znuny Version: 5.0.24 (with ITSM Mo

Verschieben gesperrter Tickets

Post by PhyrePhoX »

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
Kosch
Znuny newbie
Posts: 7
Joined: 30 Jan 2008, 17:21

Verschieben gesperrter Tickets

Post by Kosch »

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},
                    				);
                    			}
                		}
            		}
        	}
        
        }
Kosch
Znuny newbie
Posts: 7
Joined: 30 Jan 2008, 17:21

Verschieben gesperrter Tickets

Post by Kosch »

Ich hab nun eine funktionierende Lösung. 8)

Es müssen ein paar Änderungen an der Ticket.pm vorgenommen werden. Falls jemand Interesse daran hat bitte ne pm schreiben.
Andre Bauer
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

Post by Andre Bauer »

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
Kosch
Znuny newbie
Posts: 7
Joined: 30 Jan 2008, 17:21

Verschieben gesperrter Tickets

Post by Kosch »

Das könnte ja in Arbeit ausarten, :wink: 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:

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},
                                );
                            }
                        }
                }
Als nächstes muss unterhalb von "sub LockSet { " folgender Block eingetragen werden:

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},
                                                );
                                        }
                                }
                        }
                }

        }
Jetzt sollte es problemlos funktionieren.
Locked