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:
Beispielanwendung: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.
Download: //EDIT: Weiter geht es hier: [Announce] Modul: Freetext Data 0.0.3Wir 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.
Nach der Installation ist noch folgendes zu tun:
- 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', }, };
- 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"}
Code: Select all
onclick="window.open('?Action=AgentTicketFreeTextData&SearchString=Drucker, 'Beliebiger Fenstertitel'); return false;"
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