Erweiterung AlternateQueueSender um CustomerData

Allgemein Fragen, deutsche News, Ankündigungen & Events zum OTRS
Post Reply
Dema
OTRS newbie
Posts: 15
Joined: 07 Aug 2014, 14:58
OTRS Version?: 5.0.10
Company: DEMA Vertriebs-GmbH

Erweiterung AlternateQueueSender um CustomerData

Post by Dema » 09 Mar 2018, 09:07

Hallo zusammen,

wir nutzen AlternateQueueSender um damit dem "Kunden"/User/ext.Dienstleister... Mails mit Absenderadresse Ticketnummer@eigene-otrs-domain zu senden. Wie in Thread "Ticketnummer als Emailadresse des Tickets" viewtopic.php?f=35&t=34755

Momentan nutzen wir als Anzeigename
"<OTRS_UserFirstname> <OTRS_UserLastname> für <OTRS_TICKET_CustomerID>" damit dann
"Agentenname für Kundenname <Ticketnummer@eigene-otrs-domain>" beim Dienstleister ankommt.

Nachdem die CustomerID nicht unbedingt für externe geeignet ist, möchten wir nun ein anderes kundenspezifisches Feld nutzen.

In "Kundendaten in TicketMenuExternalLink und ToolBarExternalLink verwenden" (viewtopic.php?f=34&t=36892) ist so eine Erweiterung um Kundendaten (durch reneeb *thx*) auch schonmal erfolgt. Das zu übertragen ist mir aber nicht gelungen. :(

Ich gehe davon aus, dass hier bei Output/HTML/FilterElementPost/TicketMenuExternalLink.pm die Kundendaten geladen werden:

Code: Select all

my %CustomerData;
    if ( $ConfigObject->Get('TicketMenuExternalLink::UseCustomerData') && $Ticket{CustomerUserID} ) {
        my $CustomerUserObject = $Kernel::OM->Get('Kernel::System::CustomerUser');
        %CustomerData = $CustomerUserObject->CustomerUserDataGet(
            User => $Ticket{CustomerUserID},
        );
    }
Nur wo ich das in AlternateQueue Sender einfügen könnte... :(

Wer Hilfe zur Selbsthilfe, einfache Hilfe oder Tatendrang anbieten kann, wird gern gelesen :)

Vielen Dank und viele Grüße
Dominik

reneeb
OTRS guru
Posts: 4651
Joined: 13 Mar 2011, 09:54
OTRS Version?: 3.3.x
Company: Perl-Services.de
Contact:

Re: Erweiterung AlternateQueueSender um CustomerData

Post by reneeb » 09 Mar 2018, 10:41

Das müsste man in https://github.com/reneeb/otrs-Alternat ... eSender.pm einbauen.

Ich schaue mir das am Wochenende mal an...
Perl / OTRS development: http://perl-services.de
Free OTRS add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de

Dema
OTRS newbie
Posts: 15
Joined: 07 Aug 2014, 14:58
OTRS Version?: 5.0.10
Company: DEMA Vertriebs-GmbH

Re: Erweiterung AlternateQueueSender um CustomerData

Post by Dema » 09 Mar 2018, 12:28

Danke wieder mal. Langsam bin ich dir was schuldig.

"quick and dirty" und für mein schmales Verständnis für Perl hab ich's.
Wenn du das noch in eine neue Version einfügen möchtest...
Bin mit github noch nicht firm.

Code: Select all

    if ( $Template ) {
        my $UserObject = $Kernel::OM->Get('Kernel::System::User');
        my %UserData   = $UserObject->GetUserData(
            UserID => $Self->{UserID},
        );
        my $CustomerUserObject = $Kernel::OM->Get('Kernel::System::CustomerUser');
        my %CustomerData = $CustomerUserObject->CustomerUserDataGet(
            User => $Ticket{CustomerUserID},
        );

        $Template =~ s{<OTRS_TICKET_([^>]+)>}{$Ticket{$1}}xmsg;
        $Template =~ s{<OTRS_CUSTOMER_([^>]+)>}{$CustomerData{$1}}xsmg;
        $Template =~ s{<OTRS_([^>]+)>}{$UserData{$1}}xsmg;
        $Template =~ s{<OTRS_([^>]+)>}{}xsmg;
    }

    if ( $TemplateAddress ) {
        my $UserObject = $Kernel::OM->Get('Kernel::System::User');
        my %UserData   = $UserObject->GetUserData(
            UserID => $Self->{UserID},
        );
        my $CustomerUserObject = $Kernel::OM->Get('Kernel::System::CustomerUser');
        my %CustomerData = $CustomerUserObject->CustomerUserDataGet(
            User => $Ticket{CustomerUserID},
        );


        $TemplateAddress =~ s{<OTRS_TICKET_([^>]+)>}{
            my $OrigKey         = $1;
            my ($Key, $Command) = $1 =~ m!\A (.+) \s+ \| \s+ (lc)!x;
            $Command ?
                lc $Ticket{$Key} :
                $Ticket{$OrigKey};
        }exmsg;
        $TemplateAddress =~ s{<OTRS_CUSTOMER_([^>]+)>}{$CustomerData{$1}}xsmg;
        $TemplateAddress =~ s{<OTRS_([^>]+)>}{$UserData{$1}}xsmg;
        $TemplateAddress =~ s{<OTRS_([^>]+)>}{}xsmg;

        if ( $TemplateAddress !~ m{\A\@} ) {

            $SenderAddresses{$TemplateAddress} = $TemplateAddress;

            if ( $Template && $TemplateAddress ) {
                $TemplateAddress = sprintf "%s <%s>", $Template, $TemplateAddress;
                $SenderAddresses{$TemplateAddress} = $TemplateAddress;
            }
        }
    }

Post Reply