[solved] Benachrichtigungs Mails per GenericAgent

Hilfe zu Znuny Problemen aller Art
Locked
rosenrot
Znuny newbie
Posts: 82
Joined: 10 Dec 2012, 14:56
Znuny Version: 3.200
Real Name: Jan Bickel

[solved] Benachrichtigungs Mails per GenericAgent

Post by rosenrot »

Guten Tag,
zuerst: Momentan nutze ich noch OTRS 3.2, das update auf 4.0 soll im nächsten Monat kommen.

Ich würde gerne Benachrichtigungsmails an Externe versenden. Dazu nutzen wir folgendes Verfahren:
Die externe Person wird als Agent angelegt und als Verantwortlicher in das Ticket eingetragen.
Die Wartezeit wird gesetzt.
Nach Ablauf der Wartezeit setzt der GenericAgent den Status um und triggert so die Benachrichtigung an den Verantwortlichen.

Hier ist mein Eintrag im GenericAgent.pm:

Code: Select all

send reminder emails' => {    
    States => ['Erinnerung'],
    TicketPendingTimeOlderMinutes => 0,
    New => {
        State => 'Erinnerung erste Eskalation',
    },
},
Das Problem an diesem Vorgehen ist aber, dass die Statusänderung unabhängig ist von den Arbeitszeiten.

Gibt es eine Möglichkeit wie man das, analog zu Eskalations-Mails, regeln könnte? Also dass Mails nur werktags versandt werden bzw Zeiten außerhalb der Arbeitszeit nicht gezählt werden?
Last edited by rosenrot on 31 Aug 2015, 14:51, edited 1 time in total.
rosenrot
Znuny newbie
Posts: 82
Joined: 10 Dec 2012, 14:56
Znuny Version: 3.200
Real Name: Jan Bickel

Re: Benachrichtigungs Mails per GenericAgent

Post by rosenrot »

Ich habe jetzt ein kleines Modul geschrieben welches nach ablauf der Wartezeit aufgerufen werden soll und dort den Status ändern soll.

Leider scheint das Modul keinen Effekt zu haben:

Code: Select all

package Kernel::System::GenericAgent::SetReminderState;

use strict;
use warnings;

use Kernel::System::User;
use Kernel::System::Email;
use Kernel::System::Queue;

use vars qw(@ISA $VERSION);
$VERSION = qw($Revision: 1.24.2.1 $) [1];

sub new {
    my ( $Type, %Param ) = @_;

    # allocate new hash for object
    my $Self = {};
    bless( $Self, $Type );

    # check needed objects
    for (qw(DBObject ConfigObject LogObject TicketObject TimeObject EncodeObject)) {
        $Self->{$_} = $Param{$_} || die "Got no $_!";
    }

    # 0=off; 1=on;
    $Self->{Debug} = $Param{Debug} || 0;

    $Self->{UserObject}  = Kernel::System::User->new(%Param);
    $Self->{EmailObject} = Kernel::System::Email->new(%Param);
    $Self->{QueueObject} = Kernel::System::Queue->new(%Param);

    return $Self;
}

sub Run {
    my ( $Self, %Param ) = @_;

    # get ticket data
    my %Ticket = $Self->{TicketObject}->TicketGet(
        %Param,
        DynamicFields => 0,
    );

    # check if bussines hours is, then send escalation info
    my $CountedTime = $Self->{TimeObject}->WorkingTime(
        StartTime => $Self->{TimeObject}->SystemTime() - ( 10 * 60 ),
        StopTime => $Self->{TimeObject}->SystemTime(),
    );
    if ( !$CountedTime ) {
        if ( $Self->{Debug} ) {
            $Self->{LogObject}->Log(
                Priority => 'debug',
                Message =>
                    "Did not set reminder escalation of $Ticket{TicketNumber}/$Ticket{TicketID} because currently no working hours!",
            );
        }
        return 1;
    }

    $Self->{TicketObject}->TicketStateSet(
        TicketID => $Param{TicketID},
        UserID   => 1,
        State    => 'Erinnerung erste Eskalation',
    );

    return 1;
}

1;
Muss ich das Modul noch irgendwie registrieren?
Locked