[Announce] BETA: Modul: Freetext Data 0.0.2

Locked
darkside

[Announce] BETA: Modul: Freetext Data 0.0.2

Post by darkside »

//EDIT: Weiter geht es hier: [Announce] Modul: Freetext Data 0.0.3

Hallo,

ich habe mich mal an mein erstes OTRS Modul gewagt. Ich will es hier mal als BETA vorstellen.

Name: Freetext Data
Version: 0.0.2
Beschreibung:
Mit diesem Modul ist es möglich beliebige Daten von einer externen (SQL) Datenquelle (die OTRS bedienen kann) zu holen, als Tabelle darzustellen und daraus Daten eines ausgewählten Datensatzes in vorher definierten Freitextfeldern bei der Erstellung eines Tickets zu übernehmen bzw. diese zu füllen.
Beispielanwendung:
Wir supporten die Hard- und Software unserer eigenen Mitarbeiter im Hause. Wenn diese bei einem Hardwaredefekt anrufen und wir ein Ticket erstellen, sind gleich Informationen zu der vermeintlich defekten Hardware wie bspw. Seriennummer, Hersteller, Typ, Garantie etc. interessant. Dazu gibt es im Template "AgentTicketPhone" bei uns entsprechende TicketFreeText Felder.

Da wir ohnehin in einer Datenbank die Daten der Hardware ablegen, liegt es nahe, diese aus dieser Datenbank direkt in de Freitextfelder zu übertragen.

Dies kann mit diesem Modul bei aktiviertem Javascript realisiert werden. Ein Link "Hardware suchen" öffnet ein neues Fenster mit einem simplen Suchformular. Suchstring eingegeben -> Ergebnisliste. Hinter jeder Zeile diese Ergebnisliste steht ein "Auswahl" Link, welcher die vorher definierten Daten aus dieser Zeile in die dazugehörigen Freitextfelder des Tickets überträgt und das Fenster wieder schließt.
Download: //EDIT: Weiter geht es hier: [Announce] Modul: Freetext Data 0.0.3

Nach der Installation ist noch folgendes zu tun:
  1. Modul in der Config.pm konfigurieren:

    Code: Select all

    $Self->{FreetextData} = {
            # Einziges Modul derzeit das angegebene.
            Module => 'Kernel::System::FreetextData::DB',
            # Konfiguration wie bei otrs DB Anbindung üblich
            Params => {
                DSN => 'DBI:mysql:database=<DBNAME>;host=<HOST>',
                User => '<DBUSER>',
                Password => '<DBUSERPWD>',
                Table => '<TABLE>',
            },
            # Die Felder, welche aufgelistet werden sollen.
            ListFields => ['sn', 'product', 'customer'],
            # Die Tabellentitel eben definierter Felder für die Tabellenansicht
            ListFieldTitles => {
                'sn'        => 'Seriennummer',
                'product'   => 'Produktbezeichnung',
                'customer'  => 'Kunde',
            },
            # Feldern in denen gesucht werden soll
            SearchFields => ['customer'],
            # Definition nach dem sortiert werden soll je Suchfeld
            SearchOrder => {
                'customer' => 'ASC',
            },
            # Default Such Prefix und Suffix. Bei der späteren Suche kann man dennoch als Wildcards * und % für "alle Zeichen" sowie ? und _ für ein Zeichen verwendet werden.
            SearchPrefix => '*',
            SearchSuffix => '',
            # Maximale Anzahl an anzuzeigenden Datensätzen
            SearchListLimit => 200,
            # Map für die Zuordnung Datenbankfeld und Name des Freitextfeldes. Hier können nur die unter "ListFields" angegeben Datenbankfelder verwendet werden. Es müssen allerdings auch nicht alle genommen werden.
            Map => {
                'sn'        => 'TicketFreeText1',
            },
        };
    
  2. Das Template zur Erstellung der Telefontickets (Default: AgentTicketPhone) anpassen. Hier muss an beliebiger Stelle ein Link rein:

    Code: Select all

    $Env{"Box0"}<a href="" onclick="window.open('?Action=AgentTicketFreeTextData', 'Beliebiger Fenstertitel'); return false;">Her mit den Daten</a>$Env{"Box1"}
Zu 2. sei noch zu sagen, das dem Suchfenster bereits ein Suchstring übergeben werden kann. Einfach bei "window.open" den ersten parameter anpassen:

Code: Select all

onclick="window.open('?Action=AgentTicketFreeTextData&SearchString=Drucker, 'Beliebiger Fenstertitel'); return false;"
Wer mag, kann den Aufruf natürlich auch in eine extra Javascript-Routine packen.

Im übrigen: Der Suchmechanismus ist sehr einfach. Alle Suchfelder werden als "or" verknüpft. Der Suchstring immer als Ganzes angesehen. Ich habe aber noch vor einen erweiterten Suchmodus zu implementieren. Mal schauen ob mir das gelingt :)

Feedback wie immer Willkommen.

Andreas
tto
Znuny wizard
Posts: 315
Joined: 09 Jan 2007, 15:24
Znuny Version: OTRS 5.0.x
Real Name: Torsten
Company: c.a.p.e. IT GmbH
Location: Chemnitz
Contact:

[Announce] BETA: Modul: Freetext Data 0.0.2

Post by tto »

...coole Sache - kannst Du evtl. einen Screenshot oder sowas anhängen damit man es sich besser vorstellen kann? Danke.

CU, Torsten
darkside

[Announce] BETA: Modul: Freetext Data 0.0.2

Post by darkside »

Hier die gewünschten Screenshots:

Image
Neues Ticket mit noch leeren Daten aber Link zur Hardwaresuche und 2 Feldern die aus dieser Suche mit Daten gefüllt werden sollen.

Image
Ganz primitive Suchmaske

Image
Ergebnis der Suche aus externer Datenbank und Möglichkeit der Auswahl eines Datensatzes über "Auswahl". Übertragen werden hier dann die Seriennummer und die Produktbezeichnung

Image
Wieder zurück im neuen Ticket mit den gesuchten und ausgewählten Daten.

By
Andreas
Locked