Wie Einfügen des Kundennamens in Ticket-Informationen des Agenten?

Hilfe zu OTRS Problemen aller Art
Post Reply
blubb
OTRS newbie
Posts: 10
Joined: 06 Jan 2016, 11:27
OTRS Version?: 4.0.7

Wie Einfügen des Kundennamens in Ticket-Informationen des Agenten?

Post by blubb »

Hallo zusammen,

es geht darum den Kundennamen ebenfalls im Bereich der Ticket-Informationen auszugeben.
Im Template selber habe ich die Zeile (AgentTicketZoom.tt) bereits eingefügt und wie man sieht wird diese auch ausgegeben:

Code: Select all

<label>[% Translate("CustomerName") | html %]:</label>
<p class="Value">
        <a href="[% Config("CustomerDBLink") | Interpolate %]" class="[% Config("CustomerDBLinkClass") %]" [% Config("CustomerDBLinkTarget") %]>[% Data.CustomerName | truncate(15) | html %]</a>
</p>
<div class="Clear"></div>
Image

Jedoch ist das "Befüllen" des Feldes für mich nicht ganz (evtl. auch, weil ich keine Erfahrung mit Perl habe).
Folgendes habe ich mir überlegt:
- anzupassen wäre die AgentTicketZoom.pm
Ergänzen würde ich hier (ausgehend vom Original-Skript):
- ca. Zeile 30

Code: Select all

use Kernel::System::CustomerCompany;
- ca. Zeile 151

Code: Select all

$Self->(CustomerCompanyObject)    = Kernel::System::CustomerCompany->new(%Param);
- ca. Zeile 1618 (nach dem Block # customer info string ) den Aufruf des Teils, das den Wert ermitteln
und das Feld befüllen soll.
An dieser Stelle ist auch mein Problem.

Überlegungen zum Vorgang des Auswertens:
Da der Kundenname nicht am Ticketobjekt hängt, sondern hier lediglich die Kundennummer
hinterlegt ist, muss der Name anhand der vorhandenen Nummer in der Tabelle customer_company
ausgelesen werden.

Code: Select all

my %Company = $Self->{CustomerCompanyObject}->CustomercCompanyGet(CustomerID => $Ticket{CustomerID});
$Ticket{CustomerName}  = $Company{CustomerCompanyName};



Leider lies es sich durch Recherche und Tests im Forum nicht wirklich lösen, da das Gefundene sich auf die Version 2.x bezieht. Falls ich etwas übersehen haben sollte, nehme ich (konstruktive) Hinweise gerne an.

Ich hoffe Ihr könnte meinen Gedankengängen hier folgen, falls nicht versuche ich das gerne noch einmal anders zu formulieren.
Vielen Dank für die Unterstützung und Grüße
blubb



OTRS-Version: 4.0.7
OTRS-Extensions: FAQ 4.0.3
Betriebsystem: Ubuntu 14.04
Datenbank: MySQL
Webserver: Apache 2.4.7

RStraub
OTRS guru
Posts: 2206
Joined: 13 Mar 2014, 09:16
OTRS Version?: 6.0.14
Real Name: Rolf Straub

Re: Wie Einfügen des Kundennamens in Ticket-Informationen des Agenten?

Post by RStraub »

Das ist im großen und ganzen schon gernau richtig.
Soweit ich das beim Überfliegen gelesen habe, wird dem Template (von den speziellen Blöcken mal abgesehen) das Ticket übergeben. Daran hängt eben nur die CustomerID und nicht der Name.

Du hast dann auch schon richtig gefolgert dass das leichteste wäre, den Wert dem Ticket-Hash hinzuzufügen. Wenn du nur an der Syntax scheiterst, probier's mal mit:

Code: Select all

my %Company = $Kernel::OM->Get('Kernel::System::CustomerCompany')->CustomerCompanyGet(
    CustomerID => $Ticket{CustomerID}),
);
$Ticket{CustomerName}  = $Company{CustomerCompanyName};
Currently using: OTRS 6.0.14 -- MariaDB -- Ubuntu 16 LTS

blubb
OTRS newbie
Posts: 10
Joined: 06 Jan 2016, 11:27
OTRS Version?: 4.0.7

Re: Wie Einfügen des Kundennamens in Ticket-Informationen des Agenten?

Post by blubb »

RStraub wrote:Das ist im großen und ganzen schon gernau richtig.
Soweit ich das beim Überfliegen gelesen habe, wird dem Template (von den speziellen Blöcken mal abgesehen) das Ticket übergeben. Daran hängt eben nur die CustomerID und nicht der Name.

Du hast dann auch schon richtig gefolgert dass das leichteste wäre, den Wert dem Ticket-Hash hinzuzufügen. Wenn du nur an der Syntax scheiterst, probier's mal mit:

Code: Select all

my %Company = $Kernel::OM->Get('Kernel::System::CustomerCompany')->CustomerCompanyGet(
    CustomerID => $Ticket{CustomerID}),
);
$Ticket{CustomerName}  = $Company{CustomerCompanyName};
Vielen Dank!!!

Das hat super geklappt! Der Wert wird auf jeden Fall ermittelt und ich kann ihn mir erst einmal so anzeigen lassen (Ist natürlich noch nicht das Ziel):

Image

Der Code dazu lautet:

Code: Select all

    #get customer company
    my %Company = $Kernel::OM->Get('Kernel::System::CustomerCompany')->CustomerCompanyGet(
		CustomerID => $Ticket{CustomerID});
    $Ticket{CustomerName} = $Company{CustomerCompanyName};
     $Param{CustomerTable} = $Self->{LayoutObject}->AgentCustomerViewTable(
            Data   => \%Company,
            Ticket => \%Ticket,
            Max    => $Self->{ConfigObject}->Get('Ticket::Frontend::CustomerInfoZoomMaxSize'),
        );
        $Self->{LayoutObject}->Block(
            Name => 'CustomerTable',
            Data => \%Param,
        );
Folglich muss der Wert nun in den "Ticket-Informationen"-Bereich (für den im Template der "Platz" bzw. die Zeile vorbereitet wurde). Aktuell sieht es nach diversen Tests und Suche nach der richtigen Bezeichnung des Bereichs in der ArticleTicketZoom.pm so aus (die "..." sollen fehlende Informationen darstellen):

Code: Select all

    #get customer company
    my %Company = $Kernel::OM->Get('Kernel::System::CustomerCompany')->CustomerCompanyGet(
		CustomerID => $Ticket{CustomerID});
    $Ticket{CustomerName} = $Company{CustomerCompanyName};
    $Param{...} = $Self->{LayoutObject}->...(
         Data   => \%Company,
         Ticket => \%Ticket,
         Max    => $Self->{ConfigObject}->Get('Ticket::Frontend::...'),
     );    
    $Self->{LayoutObject}->Block(
        Name => '...',
        Data => \%Param,
    );
So jetzt stehen ich auf dem Schlaucht. Ich kann einfach nicht herausfinden, wie dieser Bereich angesprochen wird bzw. welche Module ich aufrufen kann.

Hier wäre ich für einen Tipp, wo ich solche Informationen in Zukunft herausfinden kann, sehr dankbar, da der Quelltext hierzu leider nicht wirklich etwas hergibt. Oder ich suche einfach an den falschen Stellen.
Vielen Dank für die Unterstützung und Grüße
blubb



OTRS-Version: 4.0.7
OTRS-Extensions: FAQ 4.0.3
Betriebsystem: Ubuntu 14.04
Datenbank: MySQL
Webserver: Apache 2.4.7

RStraub
OTRS guru
Posts: 2206
Joined: 13 Mar 2014, 09:16
OTRS Version?: 6.0.14
Real Name: Rolf Straub

Re: Wie Einfügen des Kundennamens in Ticket-Informationen des Agenten?

Post by RStraub »

Ich nutz dafür eine dieser beiden Seiten:

http://otrs.perl-services.de/docs/otrs/ ... _main.html
https://otrs.github.io/doc/api/otrs/4.0/Perl/index.html

Wenn du dann z.B. Funktionen für den CustomerUser willst, brauchst du das CustomerUser Objekt. Das kannst du (bei öfterem Aufruf) "holen" (wie meist oben in der API-Dokumentation beschrieben):

Code: Select all

my $CustomerUserObject = $Kernel::OM->Get('Kernel::System::CustomerUser');
oder wie in meinem letzten Post beschrieben, direkt verwenden:

Code: Select all

$Kernel::OM->Get('Kernel::System::CustomerUser')->CustomerSearch(
        Search => '*some*', # also 'hans+huber' possible
        Valid  => 1, # not required, default 1
);
Currently using: OTRS 6.0.14 -- MariaDB -- Ubuntu 16 LTS

blubb
OTRS newbie
Posts: 10
Joined: 06 Jan 2016, 11:27
OTRS Version?: 4.0.7

Re: Wie Einfügen des Kundennamens in Ticket-Informationen des Agenten?

Post by blubb »

RStraub wrote:Ich nutz dafür eine dieser beiden Seiten:

http://otrs.perl-services.de/docs/otrs/ ... _main.html
https://otrs.github.io/doc/api/otrs/4.0/Perl/index.html

Wenn du dann z.B. Funktionen für den CustomerUser willst, brauchst du das CustomerUser Objekt. Das kannst du (bei öfterem Aufruf) "holen" (wie meist oben in der API-Dokumentation beschrieben):

Code: Select all

my $CustomerUserObject = $Kernel::OM->Get('Kernel::System::CustomerUser');
oder wie in meinem letzten Post beschrieben, direkt verwenden:

Code: Select all

$Kernel::OM->Get('Kernel::System::CustomerUser')->CustomerSearch(
        Search => '*some*', # also 'hans+huber' possible
        Valid  => 1, # not required, default 1
);
Vielen Dank für die genaue Erläuterung und die Links. Die Api verstehe ich soweit, nur habe ich in den Templates das Problem, dass ich nicht ermitteln kann, wie der Bereich den ich über das Skript ansprechen möchte bezeichnet wird.

Als z.B. will ich ja im meinem Fall den ermittelten Wert als Value eines vordefinierten Bereich des Widget-Moduls "Ticket-Informationen" einfügen.
Ich hoffe ich habe den Quelltext soweit richtig verstanden:

1.) Customer-Company-Objekt den Wert anhand der Customer-ID ermitteln:

Code: Select all

#get customer company
    my %Company = $Kernel::OM->Get('Kernel::System::CustomerCompany')->CustomerCompanyGet(
      CustomerID => $Ticket{CustomerID});
2.)

Code: Select all

 Aus dem Company-Objekt den Wert für den Customer-Namen den Ticket-Attribut zuweisen:
    $Ticket{CustomerName} = $Company{CustomerCompanyName};
3.) Wert ($Ticket{CustomerName}) in den bestehenden Bereich innerhalb des Widgets "Ticket-Informationen" einfügen.

Punkt 3.) ist genau der Punkt, an dem ich nicht weiß wo ich weiter machen kann, da ich nicht herausfinden kann, wie der Bereich genannt wird.
Bei dem darunterliegenden Widget "Kundeninformationen" werden die Werte ja in den "CustomerTable"-Block eigenfügt.
Genau diese Bezeichnung für den Bereich Ticket-Informationen fehlt mir?
Vielen Dank für die Unterstützung und Grüße
blubb



OTRS-Version: 4.0.7
OTRS-Extensions: FAQ 4.0.3
Betriebsystem: Ubuntu 14.04
Datenbank: MySQL
Webserver: Apache 2.4.7

RStraub
OTRS guru
Posts: 2206
Joined: 13 Mar 2014, 09:16
OTRS Version?: 6.0.14
Real Name: Rolf Straub

Re: Wie Einfügen des Kundennamens in Ticket-Informationen des Agenten?

Post by RStraub »

Die CustomerTable ist ein eigener Template Baustein für sich. Der wird dynamisch aus der "Customer-Map" gebaut. Diese steht in der ~/Kernel/Config/Defaults.pm und könnte angepasst auch in die ~/Kernel/Config.pm geschrieben werden.

Ich werd aus deinen Sätzen jedoch nicht ganz schlau, du möchtest wohl den Kundennamen unter die Kunden-ID unter dem Widget Ticket-Information schreiben, aber findest die entsprechende Zeile nicht im Template?

Du hast dort doch schonmal den Kundennamen hingeschrieben nur dass dieser mit keinem Wert befüllt war.
Currently using: OTRS 6.0.14 -- MariaDB -- Ubuntu 16 LTS

blubb
OTRS newbie
Posts: 10
Joined: 06 Jan 2016, 11:27
OTRS Version?: 4.0.7

Re: Wie Einfügen des Kundennamens in Ticket-Informationen des Agenten?

Post by blubb »

RStraub wrote:Die CustomerTable ist ein eigener Template Baustein für sich. Der wird dynamisch aus der "Customer-Map" gebaut. Diese steht in der ~/Kernel/Config/Defaults.pm und könnte angepasst auch in die ~/Kernel/Config.pm geschrieben werden.

Ich werd aus deinen Sätzen jedoch nicht ganz schlau, du möchtest wohl den Kundennamen unter die Kunden-ID unter dem Widget Ticket-Information schreiben, aber findest die entsprechende Zeile nicht im Template?

Du hast dort doch schonmal den Kundennamen hingeschrieben nur dass dieser mit keinem Wert befüllt war.
Ich habe schon verstanden, dass die Customer-Table ein eigener Baustein ist und habe nehme an, dass die "Ticket-Informationen" ebenfalls so ein Baustein ist.

In der tt ist es ja auch klar. Das habe ich eingefüngt (siehe erster Beitrag) und diese wird auch ausgegeben.
Der Wert wird ja auch ermittelt anhand des Codes. Aber wie und wo füge ich das im Skript dort ein? (= mein (Verständnis-)Problem.

P.S. Ja, mir ist bewusst, dass hier eine Schulung sinnvoll ist. Dies ist jedoch nicht so kurzfristig möglich.
Vielen Dank für die Unterstützung und Grüße
blubb



OTRS-Version: 4.0.7
OTRS-Extensions: FAQ 4.0.3
Betriebsystem: Ubuntu 14.04
Datenbank: MySQL
Webserver: Apache 2.4.7

Daniel Obee
Moderator
Posts: 644
Joined: 19 Jun 2007, 17:11
OTRS Version?: various
Real Name: Daniel Obée
Location: Berlin

Re: Wie Einfügen des Kundennamens in Ticket-Informationen des Agenten?

Post by Daniel Obee »

Schau dir die Config.pm noch mal genauer an. Die Customer Map macht eigentlich schon genau das, was du möchtest (vorausgesetzt, ich hab das richtig verstanden). Dazu musst du nichts programmieren.

Gruß
Daniel

blubb
OTRS newbie
Posts: 10
Joined: 06 Jan 2016, 11:27
OTRS Version?: 4.0.7

Re: Wie Einfügen des Kundennamens in Ticket-Informationen des Agenten?

Post by blubb »

Daniel Obee wrote:Schau dir die Config.pm noch mal genauer an. Die Customer Map macht eigentlich schon genau das, was du möchtest (vorausgesetzt, ich hab das richtig verstanden). Dazu musst du nichts programmieren.

Gruß
Daniel
Hallo Daniel, vieln Dank für deine Antwort.

Gehört denn der Bereich "Ticket-Informationen" zur Customer Map?
Wenn das so ist, dann hab ich ja total falsch gesucht.

Mein Ziel ist es in der AgentTicketZoom im "Ticket-Informationen"-Bereich den Wert für den Kundennamen zu setzen (siehe rot-umrandeter Bereich):
Image
Vielen Dank für die Unterstützung und Grüße
blubb



OTRS-Version: 4.0.7
OTRS-Extensions: FAQ 4.0.3
Betriebsystem: Ubuntu 14.04
Datenbank: MySQL
Webserver: Apache 2.4.7

RStraub
OTRS guru
Posts: 2206
Joined: 13 Mar 2014, 09:16
OTRS Version?: 6.0.14
Real Name: Rolf Straub

Re: Wie Einfügen des Kundennamens in Ticket-Informationen des Agenten?

Post by RStraub »

Also gut, das hier sollte funktionieren. Such im AgentTicketZoom.tt nach:

Code: Select all

                        <label>[% Translate("CustomerID") | html %]:</label>
                        <p class="Value">
                            <a href="[% Config("CustomerDBLink") | Interpolate %]" class="[% Config("CustomerDBLinkClass") %]" [% Config("CustomerDBLinkTarget") %]>[% Data.CustomerID | html %]</a>
                        </p>
                        <div class="Clear"></div>
und füge direkt dahinter diesen Block hinzu:

Code: Select all

                        <label>[% Translate("Customer Name") | html %]:</label>
                        <p class="Value">
                            <a href="[% Config("CustomerDBLink") | Interpolate %]" class="[% Config("CustomerDBLinkClass") %]" [% Config("CustomerDBLinkTarget") %]>[% Data.CustomerName | html %]</a>
                        </p>
                        <div class="Clear"></div>
Dann such im AgentTicketZoom.pm nach:

Code: Select all

    $Self->{LayoutObject}->Block(
        Name => 'Header',
        Data => { %Param, %Ticket, %AclAction },
    );
und ERSETZE ihn mit

Code: Select all

    my %Company = $Kernel::OM->Get('Kernel::System::CustomerCompany')->CustomerCompanyGet(
        CustomerID => $Ticket{CustomerID},
    );
    $Self->{LayoutObject}->Block(
        Name => 'Header',
        Data => { %Param, %Ticket, %AclAction, CustomerName => $Company{CustomerCompanyName} },
    );
Currently using: OTRS 6.0.14 -- MariaDB -- Ubuntu 16 LTS

blubb
OTRS newbie
Posts: 10
Joined: 06 Jan 2016, 11:27
OTRS Version?: 4.0.7

Re: Wie Einfügen des Kundennamens in Ticket-Informationen des Agenten?

Post by blubb »

Hat geklappt.
Vielen Dank. Deine Lösung sollte unbedingt in die "Howtos" übernommen werden.
Vielen Dank für die Unterstützung und Grüße
blubb



OTRS-Version: 4.0.7
OTRS-Extensions: FAQ 4.0.3
Betriebsystem: Ubuntu 14.04
Datenbank: MySQL
Webserver: Apache 2.4.7

Post Reply