Erweiterung AlternateQueueSender um CustomerData

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

Erweiterung AlternateQueueSender um CustomerData

Post by Dema »

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
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: Erweiterung AlternateQueueSender um CustomerData

Post by reneeb »

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

Ich schaue mir das am Wochenende mal an...
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
Dema
Znuny newbie
Posts: 15
Joined: 07 Aug 2014, 14:58
Znuny Version: 5.0.10
Company: DEMA Vertriebs-GmbH

Re: Erweiterung AlternateQueueSender um CustomerData

Post by Dema »

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