In einer vernetzten Welt muss ein Ticket-System in der Lage sein, auf Anfragen von anderen Systemen zu reagieren und auch Anfragen oder Informationen an andere Systeme zu senden:
-
CRM-Systeme
-
Projektmanagement-Systeme
-
Dokumentenmanagement-Systeme
-
und viele mehr
Das Ticket-System muss für andere Dienste ohne manuelle Eingriffe eines Agenten erreichbar sein.
OTRS unterstützt diese Anforderung durch das Generic Interface. Es befähigt den Administrator, einen Web-Service für eine bestimmte Aufgabe zu erstellen, ohne Skriptsprachkenntnisse zu haben. OTRS reagiert auf eingehende REST- oder SOAP-Anfragen und erstellt Objekte oder stellt anderen Systemen Objektdaten transparent zur Verfügung.
Ein Web-Service ist eine Kommunikationsmethode zwischen zwei Systemen, in unserem Fall OTRS und einem entfernten System. In seiner Konfiguration bestimmt die operation oder der invoker die Richtung der Kommunikation, und das mapping und der transport kümmern sich um den Empfang und die Interpretation der Daten.
In seiner Konfiguration kann definiert werden, welche Aktionen der Web-Service intern durchführen kann (Operation), welche Aktionen die OTRS-Anforderung ausführen kann (Invokers), wie Daten von einem System in das andere konvertiert werden (Mapping) und über welches Protokoll die Kommunikation stattfindet (Transport).
Das Generic Interface ist das Framework, das es ermöglicht, Web-Services für OTRS auf vordefinierte Weise aus bereits erstellten Bausteinen zu erstellen, die unabhängig voneinander und austauschbar sind.
Dokumentation
Generic Interface
Das Generic Interface besteht aus einem mehrschichtigen Framework, das OTRS die Kommunikation mit anderen Systemen über einen Web-Service ermöglicht. Diese Kommunikation kann bi-direktional sein:
-
OTRS als Provider: OTRS agiert als Server, der Anfragen von externen Systemen entgegennimmt, die Informationen verarbeitet, die angeforderte Aktion durchführt und die Anfrage beantwortet.
-
OTRS als Requester: OTRS agiert als Client, der Informationen sammelt, eine Anfrage an ein externes System sendet und auf die Antwort wartet.
Generic Interface Layers
Das Generic Interface ist auf einem Schichtenmodell aufgebaut, um flexibel und leicht anpassbar zu sein.
Eine Schicht ist ein Satz von Dateien, die steuern, wie das Generic Interface verschiedene Teile eines Web-Services ausführt. Mit der richtigen Konfiguration kann man verschiedene Web-Services für verschiedene externe Systeme aufbauen, ohne neue Module zu erstellen.
Bemerkung
Wenn das entfernte System die aktuellen gebündelten Module des generischen Schnittstelle nicht unterstützt, müssen spezielle Module für diesen spezifischen Web-Service entwickelt werden.

- Netzwerktransport
-
Diese Schicht ist für die korrekte Kommunikation mit dem entfernten System verantwortlich. Sie empfängt Anfragen und generiert Antworten, wenn sie als Provider agiert, und generiert Anfragen und empfängt Antworten, wenn sie als Requester agiert.
Die Requester-Kommunikation kann durch ein Ereignis ausgelöst werden, das von einem Modul des Generic Interface oder einem anderen OTRS-Modul ausgelöst wird. Dieses Ereignis wird vom Event-Handler abgefangen und je nach Konfiguration direkt vom Requester-Objekt verarbeitet oder an den Scheduler (einen separaten Daemon zur asynchronen Verarbeitung von Aufgaben) delegiert.
- Daten-Mapping
-
Diese Schicht ist verantwortlich für die Übersetzung von Datenstrukturen zwischen OTRS und dem entfernten System (interne und externe Datenschicht). Normalerweise haben entfernte Systeme andere Datenstrukturen als OTRS (einschließlich anderer Werte und Namen für diese Werte), und hier liegt die Bedeutung der Schicht, die empfangenen Informationen in etwas umzuwandeln, das OTRS verstehen kann, und auf der anderen Seite die Informationen an jedes entfernte System unter Verwendung ihrer Datenwörterbücher zu senden.
Beispiel: Priorität (OTRS) könnte in einem entfernten System Prio heißen und es könnte sein, dass der Wert 1 sehr niedrig (OTRS) im entfernten System auf Information abgebildet werden sollte.
- Controller
-
Controller sind Sammlungen ähnlicher Vorgänge oder Aufrufer. Ein Ticket-Controller kann z. B. mehrere standardmäßige Ticket-Vorgänge enthalten. Es können benutzerdefinierte Controller implementiert werden, z. B. ein Controller
TicketExternes Unternehmen, der ähnliche Funktionen wie der Standard-Ticket-Controller enthalten kann, jedoch mit einer anderen Datenschnittstelle oder anderen Funktionsnamen (zur Anpassung an die Funktionsnamen des entfernten Systems) oder einem komplett anderen Code.Eine Anwendung für das Generic Interface könnte sein, Informationen mit einem entfernten System zu synchronisieren, das nur mit einem anderen entfernten System der gleichen Art kommunizieren kann. In diesem Fall müssen neue Controller entwickelt werden und die Operationen und Invoker müssen das Verhalten des entfernten Systems so emulieren, dass die Schnittstelle, die OTRS zur Verfügung stellt, der Schnittstelle des entfernten Systems ähnlich ist.
- Operation (OTRS als Provider)
-
Eine Operation ist eine einzelne Aktion, die innerhalb von OTRS durchgeführt werden kann. Alle Operationen haben die gleiche Programmierschnittstelle, sie erhalten die Daten in einem bestimmten Parameter und geben eine Datenstruktur mit einem Erfolgsstatus, einer möglichen Fehlermeldung und den zurückgegebenen Daten zurück.
Normalerweise verwenden Operationen die bereits gemappten Daten (intern), um Kernmodule aufzurufen und Aktionen in OTRS durchzuführen, wie z.B.: ein Ticket erstellen, einen Benutzer aktualisieren, eine Queue ungültig machen, eine Benachrichtigung senden, etc. Eine Operation hat vollen Zugriff auf die OTRS-API, um die Aktion auszuführen.
- Invoker (OTRS als Requester)
-
Ein Invoker ist eine Aktion, die OTRS gegen ein entferntes System ausführt. Invoker verwenden die OTRS-Kernmodule, um die benötigten Informationen zu verarbeiten und zu sammeln, um die Anfrage zu erstellen. Wenn die Informationen fertig sind, müssen sie auf das Format des entfernten Systems abgebildet werden, um an das entfernte System gesendet zu werden, das die Informationen verarbeitet, die Aktion ausführt und die Antwort zurücksendet, um entweder den Erfolg zu verarbeiten oder Fehler zu behandeln.
Generic Interface Kommunikationsfluss
Das Generic Interface hat einen definierten Ablauf, um Aktionen als Anbieter und als Requester durchzuführen. Diese Abläufe werden im Folgenden beschrieben:
OTRS als Provider
Entfernte Anfrage:
-
HTTP-Anfrage
-
OTRS empfängt HTTP-Anfragen und leitet sie durch die verschiedenen Schichten weiter.
-
Die Provider-Modul ist für die Ausführung und Kontrolle dieser Maßnahmen vorhanden.
-
-
Netzwerktransport
-
Das Netzwerktransportmodul dekodiert den Daten-Payload und trennt den Operationsnamen aus dem Rest der Daten.
-
Der Operationsname und die Betriebsdaten werden an den Provider zurückgegeben.
-
-
Externe Daten
-
Daten die vom Remote-System gesendet wurden (Das ist kein Modulbasierter Layer).
-
-
Mapping
-
Die Daten werden vom externen Systemformat in das OTRS-interne Format transformiert, wie es in der Mapping-Konfiguration für diese Operation angegeben ist (Mapping für eingehende Anfragedaten).
-
Die bereits transformierten Daten werden an den Provider zurückgegeben.
-
-
Interne Daten
-
Sobald die Daten, transformiert und aufbereitet wurden, werden diese an die Operation weitergeleitet. (Das ist kein Modulbasierter Layer).
-
-
Operation
-
Empfängt und prüft Daten.
-
Führt eine Benutzerzugangskontrolle durch.
-
Führt die Aktion aus.
-
OTRS-Antwort:
-
Operation
-
Liefert das Ergebnis an den Provider.
-
-
Interne Daten
-
Von der Operation zurückgegebene Daten.
-
-
Mapping
-
Die Daten werden in das Format des entfernten Systems zurückverwandelt, wie in der Mapping-Konfiguration angegeben (Mapping für ausgehende Antwortdaten).
-
Die bereits transformierten Daten werden an den Provider zurückgegeben.
-
-
Externe Daten
-
Daten in umgewandelter Form und vorbereitet zur Weiterleitung an den Netzverkehr als Antwort.
-
-
Netzwerktransport
-
Empfängt die Daten bereits im Format des entfernten Systems.
-
Konstruiert eine gültige Antwort für diesen Netztransport-Typ.
-
-
HTTP-Antwort
-
Die Antwort wird an den Web Service Client zurückgeschickt.
-
Im Falle eines Fehlers wird eine Fehlerantwort an das externe System gesendet (z.B. SOAP-Fehler, HTTP-Fehler, etc.).
-
OTRS als Requester
OTRS Anfrage:
-
Event Trigger Handler
-
Basierend auf der Konfiguration des Web Services wird entschieden ob die Anfrage synchron oder asynchron ist.
-
Synchron
-
Es erfolgt ein direkter Aufruf an den Requester, um eine neue Anfrage zu erstellen und sie durch die Schichten zu leiten.
-
-
Asynchron
-
Erstellen Sie einen neuen Task für das Generic Interface (Requester) für den OTRS-Daemon (indem Sie die Ausführung der Anfrage an den Scheduler-Daemon delegieren, könnte die Benutzererfahrung stark verbessert werden, da ansonsten die gesamte Zeit, die für die Vorbereitung der Anfrage und die Remote-Ausführung benötigt wird, zu den OTRS-Ereignissen, die diese Anfragen auslösen, hinzugefügt wird).
-
In seinem nächsten Zyklus liest der OTRS-Daemon-Prozess die neue Aufgabe und erstellt einen Aufruf an den Requester, der eine neue Anfrage erstellt und diese dann durch die Schichten leitet.
-
-
-
-
Invoker
-
Empfängt Daten von dem Event.
-
Überprüft empfangene Daten (wenn benötigt).
-
Rufen Sie Kernmodule auf, um die Daten zu ergänzen (falls erforderlich).
-
Rückgabe der Datenstruktur der Anforderung oder Senden eines Stopp-Kommunikationssignals an den Requester, um die Anforderung ordnungsgemäß abzubrechen.
-
-
Interne Daten
-
Daten, wie sie vom Invoker übergeben werden (es handelt sich nicht um eine modulbasierte Schicht).
-
-
Mapping
-
Die Daten werden in das Format des entfernten Systems zurückverwandelt, wie in der Mapping-Konfiguration angegeben (Mapping für ausgehende Antwortdaten).
-
Die bereits transformierten Daten werden an den Provider zurückgegeben.
-
-
Externe Daten
-
Die Daten werden umgewandelt und zum Senden an das entfernte System vorbereitet.
-
-
Netzwerktransport
-
Empfängt den Namen des entfernten Vorgangs und die bereits in das Format des entfernten Systems transformierten Daten vom Requester.
-
Konstruiert eine gültige Anfrage für die Netzwerkübertragung.
-
Sendet die Anfrage an das entfernte System und wartet auf die Antwort.
-
Remote Antwort:
-
Netzwerktransport
-
Empfängt die Antwort und dekodiert die Nutzdaten.
-
Sendet die Daten zurück zu dem Requester.
-
-
Externe Daten
-
Daten, wie sie vom entfernten System empfangen wurden.
-
-
Mapping
-
Die Daten wird aus dem Fremdsystem-Format in das interne OTRS Format, wie in der Mapping-Konfiguration für diesen Vorgang (Mapping für eingehende Anforderungsdaten) spezifiziert, umgewandelt.
-
Die bereits transformierten Daten werden an den Provider zurückgegeben.
-
-
Interne Daten
-
Sobald die Daten, transformiert und aufbereitet wurden, werden diese an den Requester zurückgeschickt.
-
-
Invoker
-
Empfängt die zurückgegebenen Daten.
-
Verarbeitet die Daten als speziell von jedem Invoker benötigt werden (inklusive Fehlerbehandlung falls vorhanden).
-
Gibt das Ergebnis und die Daten des Invokers an den Requester.
-
-
Event-Handler oder OTRS-Daemon
-
Empfängt die Daten vom Requester. Im Falle des OTRS-Daemons können diese Daten Informationen enthalten, um eine Aufgabe in der Zukunft zu erstellen.
-
Web-Services verwalten
Ein Web Service ist eine Kommunikationsmethode zwischen zwei Systemen, in unserem Fall OTRS und einem entfernten System.
Das Herzstück des Web Service ist seine Konfiguration, in der festgelegt wird, welche Aktionen der Web Service intern ausführen kann (Operation), welche Aktionen die OTRS-Anfrage an das entfernte System ausführen kann (Invokers), wie die Daten von einem System in das andere konvertiert werden (Mapping) und über welches Protokoll die Kommunikation erfolgt (Transport).
Das Generic Interface ist das Framework, das es ermöglicht, Web-Services für OTRS auf vordefinierte Weise aus bereits erstellten Bausteinen zu erstellen, die unabhängig voneinander und austauschbar sind.
Verwenden Sie diese Ansicht, um Web-Services im System zu verwalten. Eine neue OTRS-Installation beinhaltet standardmäßig keine Web-Services. Die Ansicht zur Verwaltung von Web-Services ist im Modul Web-Services in der Gruppe Prozesse & Automation verfügbar.

So erstellen Sie einen Web-Service:
-
Klicken Sie in der linken Seitenleiste auf die Schaltfläche Web-Service hinzufügen.
-
Füllen Sie die Pflichtfelder aus.
-
Klicken Sie auf die Schaltfläche Speichern.

So bearbeiten Sie einen Web-Service:
-
Klicken Sie auf einen Web-Service in der Liste mit den Web-Services.
-
Ändern Sie die Felder.
-
Klicken Sie auf die Schaltfläche Speichern oder Speichern und abschließen.

So löschen Sie einen Web-Service:
-
Klicken Sie auf einen Web-Service in der Liste mit den Web-Services.
-
Klicken Sie in der linken Seitenleiste auf die Schaltfläche Web-Service löschen.
-
Klicken Sie im Dialog auf die Löschen-Schaltfläche.

So klonen Sie einen Web-Service:
-
Klicken Sie auf einen Web-Service in der Liste mit den Web-Services.
-
Klicken Sie in der linken Seitenleiste auf die Schaltfläche Web-Service klonen.
-
Geben Sie einen Namen für den Web-Service ein.

So exportieren Sie einen Web-Service:
-
Klicken Sie auf einen Web-Service in der Liste mit den Web-Services.
-
Klicken Sie in der linken Seitenleiste auf die Schaltfläche Web-Service exportieren.
-
Wählen Sie einen Speicherort auf Ihrem Computer um die „Export_ACL-yml“-Datei zu speichern.
Warnung
Alle in der Konfiguration des Web-Service gespeicherten Passwörter werden im Klartext exportiert.
So schauen Sie sich eine Konfigurationshistorie eines Web-Service an:
-
Klicken Sie auf einen Web-Service in der Liste mit den Web-Services.
-
Klicken Sie in der linken Seitenleiste auf die Schaltfläche Konfigurationshistorie.

So benutzen Sie einen Debugger für einen Web-Service:
-
Klicken Sie auf einen Web-Service in der Liste mit den Web-Services.
-
Klicken Sie in der linken Seitenleiste auf die Schaltfläche Debugger.

So importieren Sie einen Web-Service:
-
Klicken Sie in der linken Seitenleiste auf die Schaltfläche Web-Service hinzufügen.
-
Klicken Sie in der linken Seitenleiste auf die Schaltfläche Web-Service importieren.
-
Klicken Sie im Dialog auf die Schaltfläche Durchsuchen….
-
Wählen Sie eine zuvor exportierte
.ymlDatei. -
Tragen Sie einen Namen für den Web-Service ein (optional). Bleibt dieses Feld leer, wird der Dateiname der Konfigurationsdatei als Name verwendet.
-
Klicken Sie auf die Schaltfläche Importieren.
Ready2Adopt-Web-Services
Sie verwenden nicht nur eine einzige Instanz von OTRS, sondern möglicherweise auch zusätzliche OTRS-Installationen und andere Tools. Dies kann den Zugriff auf die Daten erschweren.
Es sind mehrere Beispiele für vordefinierte, von Experten erstellte Webdienste enthalten.
-
AIServiceDescriptionto update service descriptions automatically by analyzing past support. -
AIServiceUpdateto synchronize service descriptions automatically between framework and AI. -
AITicketServiceClassificationto recommend the most relevant service for a ticket by analyzing its communication and matching it with available service options. -
AITicketSummaryto produce AI-driven summaries of ticket content and append them as notes. -
BaramundiInventoryConnectorto synchronize configuration items between OTRS and a remote Baramundi server. -
BugzillaConnector, um Fehler auf einem entfernten Bugzilla-Server zu erstellen oder zu aktualisieren. -
EVReachConnectorto synchronize items between OTRS and a remote EV Reach server. -
FileWaveConnector, um Geräte zwischen OTRS und einem entfernten FileWave-Server zu synchronisieren. -
JIRAConnector, um Probleme auf einem Remote-JIRA-Server zu erstellen oder zu aktualisieren. -
OTRSConnector, um Tickets auf einem entfernten OTRS-Server zu erstellen oder zu aktualisieren. -
SIGNL4to integrate SIGNL4 with OTRS, see SIGNL4 documentation for more information.
So importieren Sie einen Ready2Adopt Webservice:
-
Klicken Sie in der linken Seitenleiste auf die Schaltfläche Web-Service hinzufügen.
-
Wählen Sie einen Webservice aus dem Ready2Adopt Processes Widget in der linken Seitenleiste aus.
-
Klicken Sie auf die Schaltfläche Ready2Adopt Webservices importieren.
-
Klicken Sie auf den importierten Webdienst in der Liste der Webdienste.
-
Klicken Sie auf die Schaltfläche Konfigurieren neben dem Feld Netzwerktransport im Widget OTRS als Requester und fügen Sie den Endpunkt und/oder die Anmeldeinformationen für den Remote-Server hinzu.
-
Klicken Sie im Bildschirm „Webservices bearbeiten“ auf jeden Invoker im Abschnitt Invoker und überprüfen Sie alle Einstellungen. Die XSLT-Zuordnungen können Platzhalterwerte enthalten, die geändert werden müssen.
-
Klicken Sie auf die Schaltfläche Speichern oder Speichern und abschließen.
Während des Importvorgangs kümmert sich das System um die Erstellung der benötigten dynamischen Felder und/oder die Aktualisierung der Systemkonfiguration.
Bemerkung
Diese Webservices können von anderen Modulen abhängen, die nur in bestimmten Vertragsstufen verfügbar sind. Beim Importieren erhalten Sie eine Benachrichtigung mit weiteren Details.
Web-Service – Einstellungen
Die Konfiguration des Web Service muss auf jeder Ebene gespeichert werden. Das heißt, wenn eine Einstellung geändert wird, werden die Links zu anderen, tieferen Teilen der Konfiguration deaktiviert, was Sie zwingt, die aktuelle Konfigurationsebene zu speichern. Nach dem Speichern werden die deaktivierten Links wieder aktiviert, so dass Sie mit der Konfiguration fortfahren können.
Die folgenden Einstellungen sind verfügbar, wenn Sie diese Ressource hinzufügen oder bearbeiten. Die mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder.
Allgemeine Einstellungen für Web-Services

Die folgenden Einstellungen sind verfügbar, wenn Sie diese Ressource hinzufügen oder bearbeiten. Die mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder.
- Name *
-
Der Name der Ressource. In dieses Feld können beliebige Zeichen eingegeben werden, einschließlich Großbuchstaben und Leerzeichen. Der Name wird in der Übersichtstabelle angezeigt.
- Beschreibung
-
Wie Kommentar, aber hier kann längerer Text hinzugefügt werden.
- Remote-System
-
In diesem Feld können Sie eine Beschreibung für das entfernte System hinzufügen.
- Debug-Level
-
Der Standardwert ist Debug. Bei dieser Konfiguration werden alle Kommunikationsprotokolle in der Datenbank registriert. Jedes nachfolgende Debug-Level ist restriktiver und verwirft Kommunikationsprotokolle einer niedrigeren Ordnung als die im System eingestellten.
Debug-Level (von niedriger zu hoch):
-
Fehlersuche
-
Info
-
Notiz
-
Fehler
-
- Gültigkeit
-
Setzt die Gültigkeit dieser Ressource. Jede Ressource kann nur in OTRS verwendet werden, wenn dieses Feld auf gültig gesetzt ist. Wenn Sie dieses Feld auf ungültig oder ungültig-temporär setzen, wird die Nutzung der Ressource deaktiviert.
Provider Web-Service – Einstellungen

Die folgenden Einstellungen sind verfügbar, wenn Sie diese Ressource hinzufügen oder bearbeiten. Die mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder.
- Netzwerktransport
-
Wählen Sie aus, welchen Netzwerktransport Sie mit dem Web-Service verwenden möchten. Mögliche Werte sind HTTP::REST und HTTP::SOAP.
Bemerkung
Nach Auswahl der Transportmethode müssen Sie die Konfiguration mit einem Klick auf die Schaltfläche Speichern speichern. Neben diesem Feld wird eine Schaltfläche Konfiguration angezeigt.
- Konfiguration
-
Die Schaltfläche Konfigurieren ist nur sichtbar, nachdem ein Netzwerktransport ausgewählt und gespeichert wurde. Siehe unten die Konfiguration für OTRS als Anbieter – HTTP::REST und OTRS als Anbieter – HTTP::SOAP.
- Operation hinzufügen
-
Diese Option ist nur sichtbar, wenn ein Netzwerktransport ausgewählt und gespeichert wurde. Die Auswahl einer Operation öffnet eine neue Ansicht für die Konfiguration.

Für jeden Vorgang ist ein gültiger Agent-Benutzeranmeldename und ein Passwort oder eine Sitzungs-ID erforderlich. Diese Sitzungs-ID kann mit dem Vorgang „ AccessToken::Create„ abgerufen werden, der standardmäßig in OTRS verfügbar ist.
ConfigItem::ConfigItemCreate-
Dieser Vorgang wird verwendet, um ein Configuration Item zu erstellen.
ConfigItem::ConfigItemDelete-
Dieser Vorgang wird verwendet, um ein Configuration Item zu löschen.
ConfigItem::ConfigItemGet-
Dieser Vorgang wird verwendet, um ein Configuration Item abzurufen.
ConfigItem::ConfigItemSearch-
Dieser Vorgang wird verwendet, um ein Configuration Item zu suchen.
ConfigItem::ConfigItemUpdate-
Dieser Vorgang wird verwendet, um ein Configuration Item zu aktualisieren.
Link::LinkAdd-
Diese Operation wird verwendet, um eine Verknüpfung zwischen zwei Objekten herzustellen.
Link::LinkDelete-
Diese Operation wird verwendet, um eine Verknüpfung zwischen zwei Objekten zu entfernen.
Link::LinkDeleteAll-
Diese Operation wird verwendet, um alle Verknüpfungen eines Objekts zu entfernen.
Link::LinkList-
Diese Operation zeigt alle Verknüpfungen eines Objekts an, optional eingeschränkt durch ein anderes Objekt, den Verknüpfungstyp und die Verknüpfungsrichtung.
Link::PossibleLinkList-
Diese Operation zeigt alle möglichen Verknüpfungstypen zwischen Objekten, die im OTRS-System registriert sind.
Link::PossibleObjectsList-
Diese Operation zeigt alle Objekte an, die zur Verknüpfung verwendet werden können.
Link::PossibleTypesList-
Diese Operation zeigt alle möglichen Verbindungstypen zwischen zwei gegebenen Objekten.
Siehe auch
Weitere Informationen finden Sie in den API-Referenzen im Kapitel Prozessmanagement.
Siehe auch
Weitere Informationen finden Sie in der WSDL-Datei, die sich in
development/webservices/GenericConfigItemConnectorSOAP.wsdlIhrer Instanz befindet.Die folgenden Beispiele geben einen kurzen Einblick in die Verwendung der API für grundlegende Aktionen.
-
Configuration Item erstellen
-
URL:
/api/agent/config-item/create -
Methode: POST
-
Payload:
{ "ConfigItem": { "Class": "Computer", "Name": "test name for new config item", "DeplState": "Production", "InciState": "Operational", "CIXMLData": { "Seriennummer": "SNR1" "NIC": { "NIC": "test", "IPoverDHCP": "Yes" } } } }
-
-
Configuration Item aktualisieren
-
URL:
/api/agent/config-item/4/update, wobei4die ID des zu aktualisierenden Configuration Items ist -
Methode: POST
-
Payload:
{ "ConfigItemID": "4", "ConfigItem": { "Class": "Computer", "Name": "test name for new config item", "DeplState": "Production", "InciState": "Operational", "CIXMLData": { "Seriennummer": "SNR2" "NIC": { "NIC": "test", "IPoverDHCP": "Yes" } } } }
Bemerkung
Die
Klassemuss übertragen werden, hat aber keinen Einfluss auf das Configuration Item, wenn es aktualisiert wird. Wenn Sie einen Configuration Item in der KlasseLocationaktualisieren und die KlasseComputerübertragen, bleibt der Configuration Item in der KlasseLocation. -
-
Configuration Item abrufen
-
URL:
/api/agent/config-item/4, wobei4die ID des abzurufenden Configuration Items ist -
Methode: GET
-
-
Configuration Items auflisten
-
URL:
/api/agent/config-item/list -
Methode: POST
-
Ausführlichere Erläuterungen und Anwendungsbeispiele finden Sie im Abschnitt Link-ObjeKt-Konnektor des Kapitels Tutorials.
Aufgrund der Art der generischen Schnittstelle und der in OTRS enthaltenen Operationen ist eine externe Software erforderlich, um die Anfragen an das OTRS-System zu senden.
Für Tests empfehlen wir die Verwendung von:
-
OTRS Perl SOAP Requester Skript: Einige der Variablen in diesem Skript wie
URL,NameSpaceundOperationmüssen geändert werden, um dem aktuellen Web Service, der auszuführenden Operation und den zu sendenden Daten zu entsprechen. -
SoapUI von SMARTBEAR: Dies ist eine Open-Source-Software zum Testen von Web-Services mit SOAP-Nachrichten.
OTRS als Provider – HTTP::REST
Die Konfiguration könnte etwas komplizierter sein, da sie für jeden konfigurierten Vorgang dynamisch wächst, indem die Standard-Transporteinstellungen um die Routenzuordnung für jeden Vorgang und die gültigen Anforderungsmethoden für jeden Vorgang ergänzt werden.

Die folgenden Einstellungen sind verfügbar, wenn Sie diese Ressource hinzufügen oder bearbeiten. Die mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder.
- Routen-Mapping für Operation ‚<OperationsName>‘ *
-
Definiert die Route, die zu der Operation gemappt werden soll. Variablen, die mit einem ‚:‘ markiert sind, werden zu dem eingegeben Namen gemappt und mit den anderen Variablen an die Funktion übergeben. (z.B.: /Ticket/:TicketID).
In dieser Einstellung wird ein Ressourcenpfad festgelegt. Dieser Pfad muss entsprechend den Bedürfnissen des Web Service definiert werden, da der Pfad in Verbindung mit der HTTP-Anforderungsmethode die auszuführende generische Schnittstellenoperation bestimmt.
Pfad kann Variablen in der Form von
:<VariableName>enthalten. Jeder Pfadstring, der auf die Position des Variablennamens passt, wird unter Verwendung des in dieser Einstellung definierten Variablennamens zur Nutzlast der Anfrage hinzugefügt. Beispiele:Gültige Anfragen für
/Resource-Routen-Mapping:https://localhost/otrs/nph-genericinterface.pl/Webservice/Test/Resource https://localhost/otrs/nph-genericinterface.pl/Webservice/Test/Resource?Param1=One
Gültige Anfragen für
/Resource-Routen-Mapping:https://localhost/otrs/nph-genericinterface.pl/Webservice/Test/Resource/ https://localhost/otrs/nph-genericinterface.pl/Webservice/Test/Resource/OtherResource https://localhost/otrs/nph-genericinterface.pl/Webservice/Test/Resource/OtherResource?Param1=One
Gültige Anfragen für
/Resource/:ID-Routen-Mapping:https://localhost/otrs/nph-genericinterface.pl/Webservice/Test/Resource/1 https://localhost/otrs/nph-genericinterface.pl/Webservice/Test/Resource/1?Param1=One
In beiden Fällen wird
ID= 1 als Teil des Payloads an die Operation gesendet. Im zweiten Fall wird auchParam1= Ein hinzugefügt, abhängig von der HTTP-Anforderungsmethode werden andere Parameter hinzugefügt, wenn sie als JSON-String im Anfragekopf enthalten sind.Ungültige Anfragen für
/Resource/:ID-Routen-Mapping:https://localhost/otrs/nph-genericinterface.pl/Webservice/Test/Resource https://localhost/otrs/nph-genericinterface.pl/Webservice/Test/Resource?Param1=One
Gültige Anfragen für
/Resource/AndereRessource/:ID/:Farbe-Routen-Mapping:https://localhost/otrs/nph-genericinterface.pl/Webservice/Test/Resource/OtherResource/1/Red https://localhost/otrs/nph-genericinterface.pl/Webservice/Test/Resource/OtherReosurce/123/Blue?Param1=One
Im ersten Beispiel ist
ID= 1 undFarbe= Rot, während im zweiten BeispielID= 123 undFarbe= Blau ist.Gültige Anfragen für
/Resource/AndereRessource/:ID/:Color-Routen-Mapping:https://localhost/otrs/nph-genericinterface.pl/Webservice/Test/Resource/1 https://localhost/otrs/nph-genericinterface.pl/Webservice/Test/Resource/OtherResource/1 https://localhost/otrs/nph-genericinterface.pl/Webservice/Test/Resource/OtherResource/1?Param1=One
Im ersten Beispiel fehlt der Teil des Pfades
/OtherResourcesowie die Variable:Color. Im zweiten Beispiel fehlt nur die Variable:Color. - Gültige Anfragemethoden für Operation ‚<Operationsname>‘
-
Beschränken Sie diese Operation auf bestimmte Anfragemethoden. Wenn keine Anfragemethode ausgewählt ist, werden alle Anfragen akzeptiert.
Die HTTP-Anfragemethoden zur Bestimmung der zu verwendenden Operation zusammen mit der Routenzuordnung, mögliche Optionen: CONNECT, DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT und TRACE.
Völlig unterschiedliche Vorgänge können genau denselben Zuordnungspfad verwenden, aber die Anforderungsmethode muss für jeden Vorgang eindeutig sein, damit der für jeden Vorgang zu verwendende Vorgang korrekt bestimmt werden kann.
- Maximale Nachrichtenlänge *
-
Gibt die maximale Größe (in Bytes) für REST-Nachrichten an, die von OTRS verarbeitet werden.
- Keep-Alive senden *
-
Bestimmt, ob eingehende Verbindungen geschlossen oder am Leben erhalten werden sollen.
- Zusätzliche Antwort-Header (alle Operationen)
-
Optional können Sie zusätzliche Antwort-Header für alle Vorgänge definieren. Diese können verwendet werden, um statische Kopfzeilenwerte zu jeder Antwort hinzuzufügen. Klicken Sie einfach auf die Schaltfläche Kopfzeile hinzufügen und füllen Sie die Felder für Kopf und Wert aus. Die Anzahl der zusätzlichen Kopfzeilen ist nicht begrenzt.
Kopfwertvariablen, die mit einem
:gekennzeichnet sind, werden durch den entsprechenden Datenwert ersetzt (z.B.:TicketIDwird zu1). - Zusätzliche Antwort-Header (Operation-spezifisch)
-
Diese Kopfzeilen werden in den Antworten für den ausgewählten Vorgang gesetzt. Der Zweck dieser Einstellung ist derselbe wie oben.
Kopfwertvariablen, die mit einem
:gekennzeichnet sind, werden durch den entsprechenden Datenwert ersetzt (z.B.:TicketIDwird zu1).
OTRS als Provider – HTTP::SOAP
Es ist recht einfach, das HTTP::SOAP-Protokoll als Provider zu konfigurieren.

Die folgenden Einstellungen sind verfügbar, wenn Sie diese Ressource hinzufügen oder bearbeiten. Die mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder.
- Überprüfe SOAPAction *
-
Setzen Sie diesen Wert auf Ja, um den empfangenen
SOAPAction-Header zu prüfen (wenn er nicht leer ist). Setzen Sie den Wert auf Nein, um den empfangenenSOAPAction-Header zu ignorieren. - SOAPAction-Schema *
-
Wählen Sie, wie die
SOAPActionaufgebaut sein soll. Einige Web Services senden einen bestimmten Aufbau. - SOAPAction-Trenner *
-
Zeichen, das als Trennzeichen zwischen Namensraum und SOAP-Operation verwendet wird. Normalerweise verwenden .Net-Web Services
/als Trennzeichen. - Namensraum *
-
URI, die SOAP-Methoden einen Kontext gibt und damit Mehrdeutigkeiten auflöst.
- Anfragen-Namensschema *
-
Wählen Sie aus, wie der Wrapper der SOAP-Anfragefunktion aufgebaut sein soll.
FunctionNamewird als Beispiel für den tatsächlichen Invoker oder Operationsnamen verwendet.FreeTextwird als Beispiel für den tatsächlich konfigurierten Wert verwendet. - Antwort-Namensschema *
-
Wählen Sie aus, wie der Wrapper der SOAP-Antwortfunktion aufgebaut sein soll.
FunctionNamewird als Beispiel für den tatsächlichen Invoker oder Operationsnamen verwendet.FreeTextwird als Beispiel für den tatsächlich konfigurierten Wert verwendet. - Maximale Nachrichtenlänge *
-
Gibt die maximale Größe (in Bytes) für SOAP-Nachrichten an, die von OTRS verarbeitet werden.
- Zusätzliche Antwort-Header (alle Operationen)
-
Optional können Sie zusätzliche Antwort-Header für alle Vorgänge definieren. Diese können verwendet werden, um statische Kopfzeilenwerte zu jeder Antwort hinzuzufügen. Klicken Sie einfach auf die Schaltfläche Kopfzeile hinzufügen und füllen Sie die Felder für Kopf und Wert aus. Die Anzahl der zusätzlichen Kopfzeilen ist nicht begrenzt.
Kopfwertvariablen, die mit einem
:gekennzeichnet sind, werden durch den entsprechenden Datenwert ersetzt (z.B.:TicketIDwird zu1). - Zusätzliche Antwort-Header (Operation-spezifisch)
-
Diese Kopfzeilen werden in den Antworten für den ausgewählten Vorgang gesetzt. Der Zweck dieser Einstellung ist derselbe wie oben.
Kopfwertvariablen, die mit einem
:gekennzeichnet sind, werden durch den entsprechenden Datenwert ersetzt (z.B.:TicketIDwird zu1). - Zusätzliche Antwort SOAP-Namensräume (alle Operationen)
-
Diese Namensräume werden in jeder Antwort verwendet.
- Zusätzliche Antwort SOAP-Namensräume (Operation-spezifisch)
-
Diese Namensräume werden in den Antworten für diese spezielle Operation verwendet.
Bemerkung
Einige Header sind aus Sicherheitsgründen blockiert. Bei Bedarf kann die Liste der blockierten Header in der folgenden Systemkonfiguration über die Einstellungen geändert werden:
-
GenericInterface::Invoker::OutboundHeaderBlacklist -
GenericInterface::Operation::OutboundHeaderBlacklist
- Sortierungsoptionen
-
Sortierung für ausgehende XML-Felder (Struktur, die unter dem Wrapper für den Funktionsnamen beginnt) – siehe Dokumentation für SOAP-Transport.
Web Service Operation
Die Aktionen, die durchgeführt werden können, wenn Sie OTRS als Provider nutzen, werden Operationen genannt. Jede Operation gehört zu einem Controller. Controller sind Sammlungen von Operationen oder Invokern, normalerweise benötigen Operationen aus demselben Controller ähnliche Einstellungen und teilen sich denselben Konfigurationsdialog. Aber jede Operation kann auch unabhängige Konfigurationsdialoge haben, falls erforderlich.

Die folgenden Einstellungen sind verfügbar, wenn Sie diese Ressource hinzufügen oder bearbeiten. Die mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder.
- Name *
-
Der Name der Ressource. In dieses Feld können beliebige Zeichen eingegeben werden, einschließlich Großbuchstaben und Leerzeichen. Der Name wird in der Übersichtstabelle angezeigt.
- Beschreibung
-
Fügen Sie dieser Ressource zusätzliche Informationen hinzu. Es wird empfohlen, dieses Feld als Beschreibung der Ressource zur besseren Übersichtlichkeit immer mit einem vollständigen Satz zu füllen, da der Kommentar auch in der Übersichtstabelle angezeigt wird.
- Operation-Backend
-
Dieses OTRS-Operation-Backend-Modul wird intern aufgerufen, um die Anforderung zu bearbeiten und Daten für die Antwort zu generieren.
Das Backend des Vorgangs ist vorausgefüllt und kann nicht bearbeitet werden. Sie sehen diesen Parameter, wenn Sie den Vorgang auf dem Bearbeitungsbildschirm des Web Service auswählen. Das Feld ist nur informativ.
- Mapping für eingehende Anfragedaten
-
Die Daten der eingehenden Anfrage werden von diesem Mapping verarbeitet, um sie so umzuformen, wie die OTRS-Operation sie benötigt.
- Mapping für ausgehende Antwortdaten
-
Die Antwortdaten werden von diesem Mapping verarbeitet, um sie so umzuformen, wie das entfernte System die Daten benötigt.
- Ticketdaten einbinden
-
Ob Ticket-Daten in die Antwort aufgenommen werden sollen oder nicht.
Zuordnungen sind Felder, die normalerweise bei jedem Vorgang erscheinen, aber andere spezielle Felder können in nicht standardmäßigen Konfigurationsdialogen erscheinen, um spezifische Anforderungen des Vorgangs zu erfüllen.
Normalerweise gibt es zwei Mapping-Konfigurationsabteilungen bei jeder Operation, eine für die ankommenden Daten und eine für die ausgehenden Daten. Sie können verschiedene Mapping-Arten (Backends) für jede Mapping-Richtung auswählen, da deren Konfiguration unabhängig voneinander und unabhängig vom Operations-Backend ist. Die normale und am meisten übliche Praxis ist es, dass die Operation in beiden Fällen die gleiche Mapping-Art nutzt (mit umgekehrter Konfiguration). Die komplette Mapping-Konfiguration wird in einer extra Anzeige, die auf die Mapping-Art drauf ankommt, gemacht.
Im linken Teil der Ansicht haben Sie in der Spalte „Aktion“ die Möglichkeit, zum Web Service zurückzukehren (wobei alle Änderungen seit der letzten Speicherung verworfen werden) und zu löschen. Wenn Sie auf die letzte Option klicken, wird ein Dialogfeld geöffnet, in dem Sie gefragt werden, ob Sie den Vorgang entfernen möchten. Klicken Sie auf die Schaltfläche Löschen, um das Entfernen des Vorgangs und seiner Konfiguration zu bestätigen, oder klicken Sie auf die Schaltfläche Abbrechen, um den Löschdialog zu schließen.
Requester Web-Service – Einstellungen
Die Konfiguration des Netzwerktransports für den Requester ähnelt der Konfiguration für den Provider.

Die folgenden Einstellungen sind verfügbar, wenn Sie diese Ressource hinzufügen oder bearbeiten. Die mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder.
- Netzwerktransport
-
Wählen Sie aus, welchen Netzwerktransport Sie mit dem Web-Service verwenden möchten. Mögliche Werte sind HTTP::REST und HTTP::SOAP.
Bemerkung
Nach Auswahl der Transportmethode müssen Sie die Konfiguration mit einem Klick auf die Schaltfläche Speichern speichern. Neben diesem Feld wird eine Schaltfläche Konfiguration angezeigt.
- Konfiguration
-
Die Schaltfläche Konfigurieren ist nur sichtbar, nachdem ein Netzwerktransport ausgewählt und gespeichert wurde. Siehe unten die Konfiguration für OTRS als Anfragender – HTTP::REST und OTRS als Anfragender – HTTP::SOAP.
Es ist möglich, sowohl Objekt- als auch Array-Format als JSON-Antwort des entfernten Systems zu verwenden. Falls es sich jedoch um ein Array handelt, speichert das System es intern als Objekt, wobei
ArrayDataals Schlüssel verwendet wird und ein Wert ein Array ist. Aus diesem Grund kann ein geantwortetes JSON-Array effizient abgebildet werden, muss aber als ein oben beschriebenes Objekt betrachtet werden (der Schlüssel istArrayData, aber * kann auch als Platzhalter verwendet werden). - Fehlerbehandlungs-Modul hinzufügen
-
Diese Option ist nur sichtbar, wenn ein Netzwerktransport ausgewählt und gespeichert wurde. Wenn Sie ein Fehlerbehandlungsmodul auswählen, wird eine neue Ansicht für dessen Konfiguration geöffnet.

Web Service Settings – OTRS als Provider – Fehlerbehandlungs-Modul
Die folgenden Einstellungen sind verfügbar, wenn Sie diese Ressource hinzufügen oder bearbeiten. Die mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder.
- Name *
-
Der Name der Ressource. In dieses Feld können beliebige Zeichen eingegeben werden, einschließlich Großbuchstaben und Leerzeichen. Der Name wird in der Übersichtstabelle angezeigt.
- Beschreibung
-
Fügen Sie dieser Ressource zusätzliche Informationen hinzu. Es wird empfohlen, dieses Feld als Beschreibung der Ressource zur besseren Übersichtlichkeit immer mit einem vollständigen Satz zu füllen, da der Kommentar auch in der Übersichtstabelle angezeigt wird.
- Invoker-Filter
-
Ausführung des Fehlerbehandlungs-Moduls nur für die ausgewählten Invoker.
- Filter für Inhalte von Fehlermeldungen
-
Geben Sie einen regulären Ausdruck ein, um einzuschränken, welche Fehlermeldungen zur Ausführung des Fehlerbehandlungsmoduls führen sollen. Betreff und Daten der Fehlermeldung (wie im Debugger-Fehlereintrag zu sehen) werden bei einer Übereinstimmung berücksichtigt.
Beispiel: Geben Sie
^.*401 Unauthorized.*$ein, um ausschließlich authentifizierungsrelevante Fehlermeldungen zu handhaben. - Filter für Verarbeitungsphasen
-
Ausführung des Fehlerbehandlungs-Moduls nur für die ausgewählten Verarbeitungsphasen.
Beispiel: Ausschließlich Fehler behandeln, welche beim Mapping ausgehender Daten auftreten.
- Fehlercode
-
Ein Fehlerbezeichner für dieses Fehlerbehandlungsmodul. Dieser Bezeichner ist im XSLT-Mapping verfügbar und wird in der Debugger-Ausgabe angezeigt.
- Fehlermeldung
-
Ein Fehlerbezeichner für dieses Fehlerbehandlungsmodul. Diese Nachricht ist im XSLT-Mapping verfügbar und wird in der Debugger-Ausgabe angezeigt.
- Stoppen nach Übereinstimmung
-
Legt fest, ob die Verarbeitung nach der Ausführung eines Moduls angehalten werden soll, wobei alle verbleibenden Module oder nur die des gleichen Backends übersprungen werden. Standardmäßig wird die Verarbeitung mit dem nächsten Modul fortgesetzt.
- Invoker hinzufügen
-
Mit dieser Option können Sie Invoker hinzufügen. Wenn Sie einen Invoker aus der Dropdown-Liste auswählen, wird ein neues Einstellungsfenster geöffnet.
Verfügbare Invoker
Hier ist die Liste der Invoker, die in der Dropdown-Liste Invoker hinzufügen ausgewählt werden können.
Generic Link Object Invoker
Zusätzlich zur Funktionalität des Configuration Items bietet der Generic:: LinkObject -Invoker die Funktionalität, Objekte wie Tickets mit Configuration Items oder Configuration Items mit Configuration Items zu verknüpfen. Der Invoker kann sich daran gewöhnen, neue Links von einem Remote System abzurufen oder die bereitgestellten Links synchron zu halten und entfernte Links aus der OTRS-Datenbank zu löschen. Der Verknüpfung verschiedener Objekte sind keine Grenzen gesetzt.
Um verschiedene Objekte miteinander zu verknüpfen, benötigen die folgenden Mapping-Schlüssel Werte:
- SourceClass
- SourceObject
- TargetClass
- TargetObject
- Type
Die OTRS-interne Objekt-ID kann direkt mit den Schlüsseln SourceKey und TargetKey versehen werden oder kann durch die Angabe der OTRS-Objektnummer mit den Schlüsseln SourceNumber und TargetNumber nachgeschlagen werden.

Um das OTRS mit dem entfernten System synchron zu halten, ist es möglich, verschiedene Link-Kombinationen, auszuwählen, die synchronisiert werden sollen. Das heißt, wenn eine Remote-Link-Kombination entfernt wurde, wird auch der lokale Link entfernt.
Die Synchronisation von Configuration Item-Klassen kann durch Auswahl der Klassen, die synchronisiert werden sollen, aus der Liste in der Invoker-Administrationsansicht eingeschränkt werden.

Generischer Operations Invoker
Mit dem Invoker Generic::Operations können Sie Phasen definieren, in denen jede als Phase definierte Zuordnung nebeneinander ausgeführt wird. Der Ausgang einer Phase wird der Eingang der nächsten Phase sein.

Die folgenden Einstellungen sind verfügbar, wenn Sie diese Ressource hinzufügen oder bearbeiten. Die mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder.
- Name *
-
Der Name der Ressource. In dieses Feld können beliebige Zeichen eingegeben werden, einschließlich Großbuchstaben und Leerzeichen. Der Name wird in der Übersichtstabelle angezeigt.
- Beschreibung
-
Fügen Sie dieser Ressource zusätzliche Informationen hinzu. Es wird empfohlen, dieses Feld als Beschreibung der Ressource zur besseren Übersichtlichkeit immer mit einem vollständigen Satz zu füllen, da der Kommentar auch in der Übersichtstabelle angezeigt wird.
- Operation-Backend
-
Dieses OTRS-Operation-Backend-Modul wird intern aufgerufen, um die Anforderung zu bearbeiten und Daten für die Antwort zu generieren.
Das Backend des Vorgangs ist vorausgefüllt und kann nicht bearbeitet werden. Sie sehen diesen Parameter, wenn Sie den Vorgang auf dem Bearbeitungsbildschirm des Web Service auswählen. Das Feld ist nur informativ.
- Mapping für ausgehende Antwortdaten
-
Die Antwortdaten werden von diesem Mapping verarbeitet, um sie so umzuformen, wie das entfernte System die Daten benötigt.
- Mapping für eingehende Anfragedaten
-
Die Daten der eingehenden Anfrage werden von diesem Mapping verarbeitet, um sie so umzuformen, wie die OTRS-Operation sie benötigt.
- Benutzer für Operationen
-
Diese Operation wird unter Verwendung dieses Benutzers ausgeführt.
- Phasen
-
Hier können Sie Abschnitte hinzufügen, die nebeneinander bearbeitet werden sollen. Über die Schaltfläche Phasen hinzufügen können Sie so viele Phasen wie nötig hinzufügen.
Klicken Sie auf die Schaltfläche Speichern, damit neben jeder Phase eine Schaltfläche Konfigurieren erscheint. Hier können Sie für jede Phase ein XSLT-Stylesheet hinzufügen.
- Ereignisauslöser
-
Dieser Invoker wird von den konfigurierten Ereignissen ausgelöst.
- Ereignisauslöser hinzufügen
-
Um einen neues Ereignis hinzuzufügen, wählen Sie bitte das Objekt und den Ereignisnamen und klicken Sie auf den +-Schaltfläche.
Configuration Item Invoker
Der Invoker ITSM:: ConfigItem bietet die Funktionalität, eine Liste von Configuration Items von einem Remote-System mit der generischen Schnittstelle anzufordern. Eine vollständige Zuordnung zwischen dem Namen von Remote Value Keys zu den lokalen Configuration-Item-Klassendefinitionen ist möglich. Um die Möglichkeit zu geben, alle Klassenattribute im Mapping zu definieren, wird ein erweitertes Mapping bereitgestellt.
Für die Handhabung von Remote-Configuration-Items und Links wird mit dieser Funktion eine erweiterte Zuordnung bereitgestellt. Um diese Funktionalität zu nutzen, wählen Sie das ITSMConfigItem in der Mapping-Auswahlbox.

Eines dieser fortgeschrittenen Mapping-Features sind statische Werte. Diese ermöglichen es, statische Werte für definierte Schlüssel zu definieren, z.B. die Einstellung der Configuration Item-Klasse für jedes Element. Diese Einträge können vom entfernten System gesendete Daten überschreiben.

Ein weiteres Merkmal des erweiterten Mappings ist die Umwandlung von Zeichenketten in Listenstrukturen. Für die Erstellung einer Liste aus einem String kann ein Listentrennzeichen definiert werden, z.B. ;. Das Trennfeld nimmt einen regulären Ausdruck, der komplexere Trennzeichen wie ;(?:\s+)?` (ein ; optional gefolgt von mehreren Leerzeichen) möglich macht.

Es ist möglich zu definieren, wo der Index der Elemente in der Configuration Item Struktur stattfinden soll. Dazu muss der Platzhalter ####INDEX##### in der Schlüsselabbildung platziert werden. Die Konfiguration im Screenshot würde die getrennte IP-Adressenliste jeweils in einer neuen Schnittstelle speichern. Wenn in der Abbildung kein Index definiert ist, erhöht der Index den Hauptattributzähler, wie ein Suffix.
Das Configuration Item Number-Attribut wird verwendet, um die logische Verbindung zwischen den Remote-Daten und den in der OTRS-Datenbank gespeicherten Daten herzustellen. Um Configuration Items mit diesem Invoker zu erstellen und zu aktualisieren, sind Werte für die folgenden Schlüssel erforderlich:
- Name
- Class
- Number
- DeploymentState
- IncidentState
Die Werte für diese Schlüssel (außer Nummer) können statisch sein oder vom entfernten System bereitgestellt werden.
Configuration Item Synchronization Invoker
Der ITSM::ConfigItemSync -Invoker bietet die Funktionalität, Configuration Items zwischen zwei OTRS-Instanzen mit einem speziellen Synchronisierungs-Invoker zu synchronisieren. Dieser Invoker ermöglicht es, Invoker für das Erstellen, Aktualisieren und Löschen von Synchronisationen zu definieren, die bei Bedarf automatisch aufgerufen werden.
Um Configuration Items zwischen zwei Systemen zu synchronisieren, ist es erforderlich, einen Web Service mit einem Invoker vom Typ ITSM::ConfigItemSync hinzuzufügen. Dieser Invoker ist der grundlegende (Such-) Invoker, der verwendet wird, um ITSM-Objektsuchen auf dem entfernten System durchzuführen, um Configuration Items zu bestimmen, die geändert werden sollen.
Es arbeitet bei jeder Synchronisierungsaktion mit zwei Schritten:
-
Abhängig von der Änderung, die im lokalen System vorgenommen wurde (Hinzufügen, Aktualisieren oder Löschen eines Configuration Items), führt der Invoker zunächst eine verwandte Suche auf dem entfernten System durch, um festzustellen, ob es zum Erstellen, Aktualisieren oder Löschen eines entfernten Configuration Items erforderlich ist.
-
Im zweiten Schritt wird ein zugehöriger Invoker für Erstellungsaktionen, Aktualisierungsaktionen oder Löschaktionen aufgerufen, der die wichtigsten Änderungen auf dem entfernten System ausführt. Diese Invoker müssen ebenfalls erstellt werden und müssen vom Invoker-Typ
ITSM::ConfigItemsein, um sicherzustellen, dass die Kommunikation einwandfrei funktioniert.
Siehe die beiliegende Übersicht der Beispiel-Invokers:

Innerhalb der Konfiguration des Such-Invokers müssen die Invoker, die die Änderungen durchführen sollen, für jede Aktion in den entsprechenden Dropdown-Menüs separat konfiguriert werden.
Wenn ein Invoker nicht für die entsprechende Aktion konfiguriert ist, wird er ausgelassen. Der konfigurierte Invoker wird in jeder Dropdown-Liste aufgeführt und kann leicht für die verschiedenen Aktionen ausgewählt werden.
Die verschiedenen Invoker müssen ihre Daten abbilden. Damit dies richtig funktioniert, wird empfohlen, das Mapping-Modul ITSMConfigItem zu verwenden, das in dieser Dokumentation beschrieben wird. Tatsächlich ist es aber auch möglich, andere Arten von Mappings wie XSLT zu verwenden, wenn es richtig konfiguriert ist.

Da diese Struktur entfernte Systeme aufruft, ist es erforderlich, zumindest die Verbindungs-Anmeldedaten für den Zugriff auf die entfernte CMDB zu konfigurieren.

Alle anderen Konfigurationen können optional eingestellt werden, aber sie sind nicht erforderlich, damit die Grundfunktion funktioniert.
Um sicherzustellen, dass der Such-Invoker nur auf bestimmte Ereignisse hört, erweitert diese Funktionalität die Möglichkeiten der Invoker-Ereignisfilterfunktion von OTRS, mit der zusätzliche Bedingungen zu den Event Triggern hinzugefügt werden können, die für den Such-Invoker konfiguriert sind. Ein Beispiel könnte sein, dass nur Configuration Items der ITSM-Klasse Computer mit dem Remote-System synchronisiert werden.
Die Konfiguration des entfernten Systems, das synchronisiert wird, muss nicht speziell sein, aber dafür muss es mindestens eine Operation für die Suchausführungen und eine separate Operation für jede Synchronisierungsaktion, die ausgeführt werden muss, bereitstellen.

Ticket Invoker
Diese Funktion fügt die Funktionalität der Invokers TicketCreate und TicketUpdate für Webservices hinzu.
Darüber hinaus folgt das Paket HTTP-Umleitungsantworten (HTTP-Code 301, 307 und 308) für die ausgehende Kommunikation von HTTP::REST- und HTTP::SOAP-basierten Webdiensten.
Darüber hinaus ermöglicht das Paket das Senden von leeren HTTP-Anfragen (POST, PUT, PATCH) für die ausgehende Kommunikation von HTTP::REST-basierten Webservices.
Die Invoker TicketCreate und TicketUpdate geben die kompletten Ticket- und Artikeldaten basierend auf der Ticket-ID und der Artikel-ID des ausgelösten Ereignisses zurück.
Bereiten Sie den Aufruf des konfigurierten Remote-Websrvice vor. Ereignisdaten:
my $Result = $InvokerObject->PrepareRequest(
Data => { # data payload
TicketID => 123,
ArticleID => 123, # optional
},
);
Invoker-Resultat:
{
Data => {
Ticket => {
Title => 'some ticket title',
Queue => 'some queue name',
Lock => 'some lock name', # optional
Type => 'some type name', # optional
Service => 'some service name', # optional
SLA => 'some SLA name', # optional
State => 'some state name',
Priority => 'some priority name',
Owner => 'some user login', # optional
Responsible => 'some user login', # optional
CustomerUser => 'some customer user login',
PendingTime { # optional
Year => 2011,
Month => 12
Day => 03,
Hour => 23,
Minute => 05,
},
},
Article => {
SenderType => 'some sender type name', # optional
AutoResponseType => 'some auto response type', # optional
From => 'some from string', # optional
Subject => 'some subject',
Body => 'some body'
ContentType => 'some content type', # ContentType or MimeType and Charset is required
MimeType => 'some mime type',
Charset => 'some charset',
TimeUnit => 123, # optional
},
DynamicField => [ # optional
{
Name => 'some name',
Value => 'Value', # value type depends on the dynamic field
},
# ...
],
Attachment => [
{
Content => 'content' # base64 encoded
ContentType => 'some content type'
Filename => 'some fine name'
},
# ...
],
},
};
Bemerkung
Der Invoker gibt den neuesten Artikel des Tickets zurück, wenn keine Artikel-ID angegeben wird.
Bemerkung
Der Invoker wird keine dynamischen Felder mit undefinierten Werten zurückgeben, da die gleichnamigen Operationen TicketCreate und TicketUpdate nicht mit dynamischen Feldern mit undefinierten Werten umgehen können.
Erweitertes Filtern für ausgehende Daten
Für ausgehende Daten ist es möglich zu definieren, welche Art von Ticket-, Artikel- oder dynamischen Feldern die Anfrage enthalten soll. Weiterhin ist es möglich, nach Artikeltyp und Artikel-Absendertyp zu filtern.
Die verschiedenen Filteroptionen können innerhalb jeder einzelnen Invoker-Konfiguration ausgewählt werden und sind im Abschnitt Einstellungen für ausgehende Anfragedaten aufgelistet.
Im linken Teil der Ansicht haben Sie in der Spalte „Aktion“ die Möglichkeit, zum Web Service zurückzukehren (wobei alle Änderungen seit der letzten Speicherung verworfen werden) und zu löschen. Wenn Sie auf die letzte Option klicken, wird ein Dialogfeld geöffnet, in dem Sie gefragt werden, ob Sie den Invoker entfernen möchten. Klicken Sie auf die Schaltfläche Löschen, um das Entfernen des Invokers und seiner Konfiguration zu bestätigen, oder klicken Sie auf die Schaltfläche Abbrechen, um den Löschdialog zu schließen.

Die folgenden Einstellungen sind verfügbar, wenn Sie diese Ressource hinzufügen oder bearbeiten. Die mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder.
Allgemeine Invoker-Daten
- Name *
-
Der Name der Ressource. In dieses Feld können beliebige Zeichen eingegeben werden, einschließlich Großbuchstaben und Leerzeichen. Der Name wird in der Übersichtstabelle angezeigt.
- Beschreibung
-
Fügen Sie dieser Ressource zusätzliche Informationen hinzu. Es wird empfohlen, dieses Feld als Beschreibung der Ressource zur besseren Übersichtlichkeit immer mit einem vollständigen Satz zu füllen, da der Kommentar auch in der Übersichtstabelle angezeigt wird.
- Invoker-Backend
-
Dieses Invoker Backend-Modul wird aufgerufen, um die an das entfernte System zu sendenden Daten vorzubereiten und dessen Antwortdaten zu verarbeiten. Das Feld ist schreibgeschützt, es wurde in der vorhergehenden Ansicht ausgewählt.
Einstellungen für ausgehende Anfragedaten
- Ticket-Felder
-
Ein Multi-Auswahl-Menü mit den verfügbaren Ticket-Attributen (Feldern), die an ein entferntes System übermittelt werden können. Nur die ausgewählten Felder werden in ausgehende Anfragen aufgenommen.
- Artikel-Felder
-
Ein Multi-Select-Menü mit den verfügbaren Artikelattributen (Feldern), die an ein entferntes System übermittelt werden können. Nur die ausgewählten Felder werden in ausgehende Anfragen aufgenommen.
- Dynamische Ticket-Felder
-
Ein Mehrfachauswahl-Menü mit den verfügbaren dynamischen Ticket-Feldern, die an ein entferntes System übermittelt werden können. Nur die ausgewählten dynamischen Felder werden in ausgehende Anfragen aufgenommen.
- Dynamische Artikel-Felder
-
Ein Mehrfachauswahl-Menü mit den verfügbaren dynamischen Artikelfeldern, die an ein entferntes System übermittelt werden können. Nur die ausgewählten dynamischen Felder werden in ausgehende Anfragen aufgenommen.
- Anzahl an Artikeln
-
Ein Textfeld, das die maximale Anzahl von Artikeln enthält, die bei einer ausgehenden Anfrage übertragen werden. Die Artikel werden von den neuesten bis zu den ältesten ausgewählt. Wenn keine Anzahl angegeben wird, wird nur der neueste Artikel übertragen.
- Kommunikationskanäle
-
Die ausgehenden Anfragedaten berücksichtigen nur Artikel der ausgewählten Kommunikationskanäle. Wird das Feld leer gelassen, so werden die von allen Kommunikationskanälen erstellten Artikel verwendet.
- Sichtbarkeit für Kunden
-
Die Daten der ausgehenden Anforderung berücksichtigen nur Artikel, die mit der ausgewählten Sichtbarkeit für Kundensicht erstellt wurden.
- Sendertypen
-
Die ausgehenden Anfragedaten berücksichtigen nur Artikel, die von den ausgewählten Absendertypen erstellt wurden. Wird nichts angegeben, werden Artikel aller Absendertypen verwendet.
Mapping
Normalerweise gibt es für jeden Invoker zwei Mapping-Konfigurationsabschnitte, einen für die eingehenden Daten und einen für die ausgehenden Daten. Sie können für jede Mapping-Richtung unterschiedliche Mapping-Typen (Backends) wählen, da ihre Konfiguration unabhängig voneinander und auch unabhängig vom Invoker-Backend ist. Die normale und gängigste Praxis ist, dass der Invoker in beiden Fällen denselben Mapping-Typ mit invertierter Konfiguration verwendet. Die komplette Mapping-Konfiguration erfolgt in einer separaten Ansicht, die vom Mapping-Typ abhängt.
- Mapping für ausgehende Anfragedaten
-
Die Daten vom Invoker werden durch dieses Mapping verarbeitet, um sie in die Art von Daten zu transformieren, die das entfernte System erwartet.
- Mapping für eingehende Antwortdaten
-
Die Antwortdaten werden durch dieses Mapping verarbeitet, um sie in die Art von Daten zu transformieren, die der Invoker erwartet.
Einstellungen für eingehende Antwortdaten
Es ist möglich, bestimmte Daten der eingehenden Antworten automatisch in lokale dynamischen Feldern zu speichern. Die verschiedenen Filter-Optionen können innerhalb jeder einzelnen Aufrufer-Konfiguration ausgewählt werden.
- Dynamisches Feld für die Remote-Ticket-ID
-
Ein Drop-Down-Menü mit den im System verfügbaren dynamischen Ticketfeldern. Wenn ein solches dynamisches Feld ausgewählt wird, wird die vom Remote-System empfangene Ticket-ID verwendet, die innerhalb des ausgewählten dynamischen Feldes gespeichert wird.
- Dynamische Ticket-Felder
-
Ein Mehrfachauswahl-Menü, das die verfügbaren dynamischen Ticket-Felder im System enthält. Alle ausgewählten dynamischen Felder, die auch in den Antwortdaten verfügbar sind und Werte enthalten, werden in den lokalen dynamischen Feldern gespeichert.
Die dynamischen Feldwerte der Antwortdaten werden aus der folgenden Datenstruktur verwendet:
<Ticket>
<DynamicField>..</DynamicField>
</Ticket>
und/oder
<Ticket>
<Article>
<DynamicField>..</DynamicField>
</Article>
</Ticket>
Die Systemkonfigurations-Option GenericInterface::Invoker::Settings::ResponseDynamicField wurde als Fallback für die dynamischen Felder hinzugefügt, die die Ergebnis-Ticket-ID der zugehörigen Antwortdaten enthalten sollten. Sie soll verwendet werden, wenn die Konfiguration nicht über die Benutzeroberfläche des Invokers hinzugefügt wurde und beide Konfigurationen nicht gleichzeitig verwendet werden sollen!
Ereignisauslöser
Event-Trigger sind Ereignisse innerhalb von OTRS wie TicketCreate, ArticleSend, etc. Diese können als Auslöser für die Ausführung des Invokers dienen. Jeder Invoker muss mindestens einen Event-Trigger registriert haben, sonst ist der Invoker nutzlos, da er nie aufgerufen wird. Zusätzlich kann eine Reihe von Regeln (Bedingungen) für jedes Ereignis definiert werden, um mehr Kontrolle über die Auslösung der Ereignisse zu haben. Diese Regeln hängen von den Daten des Objekts ab, das mit dem Ereignis verbunden ist. Die asynchrone Eigenschaft der Ereignisauslöser definiert, ob der OTRS-Prozess den Aufrufer behandelt oder ob er an den OTRS-Daemon delegiert wird.
Bemerkung
Der OTRS-Daemon ist ein separater Prozess, der Aufgaben im Hintergrund ausführt. Wenn Sie den OTRS-Daemon verwenden, wird der OTRS-Prozess selbst nicht beeinträchtigt, falls das entfernte System lange braucht, um zu antworten, falls es nicht verfügbar ist oder falls es Netzwerkprobleme gibt. Wenn Sie den OTRS-Daemon nicht verwenden, kann die Nutzung von Web Services dazu führen, dass OTRS langsam ist oder nicht reagiert. Daher ist es sehr empfehlenswert, so oft wie möglich asynchrone Ereignisauslöser zu verwenden.
Um auf diesen Bereich zugreifen zu können, müssen Sie den aktuellen Invoker speichern, indem Sie auf die Schaltfläche Speichern klicken.
- Ereignis
-
Dieser Invoker wird von den konfigurierten Ereignissen ausgelöst.
- Ereignisauslöser hinzufügen
-
Um ein neues Ereignis hinzuzufügen, wählen Sie das Ereignisobjekt und den Ereignisnamen aus und klicken Sie auf den Plus-Button. Asynchrone Ereignisauslöser werden durch den OTRS-Daemon im Hintergrund verarbeitet (empfohlen). Synchrone Ereignisauslöser werden direkt während der Web-Anfrage verarbeitet.
So fügen Sie einen Ereignisauslöser hinzu:
-
Wählen Sie die Ereignisfamilie aus der ersten Liste aus.
-
Wählen Sie den Namen des Ereignisses aus der zweiten Liste aus.
-
Legen Sie als Eigenschaft „asynchron“ fest. Wenn sie nicht markiert ist, bedeutet dies, dass der Ereignisauslöser nicht asynchron sein wird.
-
Klicken Sie auf die Schaltfläche „Plus“. Es wird ein neuer Ereignisauslöser erstellt, der in der Liste der Ereignisauslöser des Invokers aufgeführt wird.
In der Liste der Ereignisauslöser wird für jedes Ereignis angezeigt, ob es Bedingungen enthält oder nicht. Die Schaltfläche „Bearbeiten“ neben der Bedingungseigenschaft ermöglicht das Hinzufügen oder Bearbeiten der aktuellen Bedingungen des Ereignisses.
Um einen Ereignisauslöser zu löschen, suchen Sie einfach den zu löschenden Ereignisauslöser in der Liste der Ereignisauslöser und klicken auf das Papierkorbsymbol am Ende der Zeile. Daraufhin wird ein Dialogfeld geöffnet, in dem Sie gefragt werden, ob Sie den Ereignisauslöser wirklich löschen möchten. Klicken Sie auf die Schaltfläche Löschen, um den Ereignisauslöser aus der Liste zu entfernen, oder klicken Sie auf die Schaltfläche Abbrechen, um den Dialog zu schließen.
Manchmal kann die Definition eines Ereignisses zur Auslösung eines Invokers zu vielen unnötigen oder falschen Anfragen an einen entfernten Server führen. Es können Ereignisbedingungen festgelegt werden, um die Auslösung des Invokers in solchen Fällen einzuschränken.

Um auf die Ansicht der Ereigniseinstellungen zuzugreifen, in der die Bedingungen definiert werden können, müssen Sie sich in der Invoker-Ansicht befinden und von dort aus auf das Bearbeitungssymbol neben dem Bedingungsstatus des Ereignisses klicken, in dem diese Bedingung wirksam werden soll.
In der Ansicht „Ereigniseinstellungen“ in der Aktionsleiste gibt es eine Schaltfläche, mit der Sie zur Ansicht „Invoker“ zurückkehren können, sowie eine Schaltfläche zum Entfernen aller Ereignisbedingungen. In der Standardeinstellung ist die Ansicht mit der ersten Bedingung vorbelegt. Aktualisieren Sie die Art der Verknüpfung zwischen Bedingungen, wenn mehr als eine Bedingung geplant ist, und ändern Sie die Art der Verknüpfung von Bedingung 1, wenn mehr als ein Feld geplant ist. Beide Verknüpfungsfelder akzeptieren und, oder oder xor als Werte.
Füllen Sie den Feldnamen aus, legen Sie den Übereinstimmungstyp fest (String für exakte Übereinstimmung, Regexp für reguläre Ausdrücke oder Validation Module) und legen Sie den Wert fest, der übereinstimmen soll (im Falle eines Validierungsmoduls den vollständigen Klassennamen wie Kernel::GenericInterface::Event::Validation::ValidateDemo).
Um der Bedingung weitere Felder hinzuzufügen, klicken Sie auf die „Plus“-Schaltfläche in der Kopfzeile der Felder. Um ein Feld zu entfernen, klicken Sie auf die „Minus“-Schaltfläche in der Feldzeile. Es ist notwendig, mindestens ein Feld pro Bedingung beizubehalten.
Um weitere Bedingungen hinzuzufügen, klicken Sie auf die Schaltfläche unter dem letzten Bedingungsfeld. Um eine Bedingung zu entfernen, klicken Sie auf das Minuszeichen in der Kopfzeile der Bedingung. Es ist notwendig, mindestens eine Bedingung im Satz zu behalten. Um alle Bedingungen zu entfernen, klicken Sie auf die Schaltfläche in der Seitenleiste.
OTRS als Requester – HTTP::REST
Im Fall von HTTP::REST wächst diese Konfiguration auch dynamisch in Abhängigkeit von den konfigurierten Invokern. Die Authentifizierungs- und SSL-Optionen ähneln denen in HTTP::SOAP.

Die folgenden Einstellungen sind verfügbar, wenn Sie diese Ressource hinzufügen oder bearbeiten. Die mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder.
- Endpunkt *
-
URI des entfernten Systems, um einen bestimmten Ort für den Zugriff auf einen Web Service anzugeben.
- Timeout *
-
Timeout-Wert für Anfragen.
- Authentifizierung
-
Ein optionaler Authentifizierungsmechanismus für den Zugriff auf das entfernte System. Wählen Sie einen Authentifizierungsmechanismus aus der Liste aus und es werden zusätzliche Felder angezeigt.
- Anmeldeinformation *
-
Wählen Sie die Anmeldeinformation, die Sie in der Ansicht Anmeldedaten hinzugefügt haben. Klicken Sie auf die Schaltfläche Anmeldeinformation hinzufügen, um die Ansicht für die Verwaltung der Anmeldeinformation zu öffnen.
- Zertifikat der Certification Authority (CA)
-
Voller Pfad und Dateiname der Datei der Certification Authority (CA), welche das Zertifikat signiert hat.
- Verzeichnis mit Certification Autorities (CA)
-
Voller Pfad und Dateiname des CA-Verzeichnisses, in dem CA-Zertifikate gespeichert sind.
- Proxy-Optionen verwenden *
-
Optionen für die Verwendung eines Proxy zum Zugriff auf das entfernte System anzeigen oder verbergen.
- Controller-Mapping für Invoker ‚<InvokerName>‘ *
-
Der Controller, an den der Invoker Anfragen senden soll.
Variablen, die mit einem
:gekennzeichnet sind, werden durch den Datenwert ersetzt und mit der Anfrage weitergegeben (z.B./Ticket/:TicketID?UserLogin=:UserLogin&Password=:Password). - Gültiger Anfragebefehl für Invoker ‚<InvokerName>‘
-
Ein spezifisches HTTP-Kommando, das für Anfragen mit diesem Invoker zu verwenden ist (optional).
- Standardbefehl
-
Der Standard-HTTP-Befehl, der für die Anfragen verwendet werden soll. Mögliche Optionen: CONNECT, DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT und TRACE. Wenn kein Befehl ausgewählt wird, wird Standardbefehl verwendet.
- Zusätzliche Anfrage-Header (alle Invoker)
-
Optional können Sie zusätzliche Anfrage-Header für alle Invoker definieren. Diese können verwendet werden, um statische Kopfzeilenwerte zu jeder Anfrage hinzuzufügen. Klicken Sie einfach auf die Schaltfläche Kopfzeile hinzufügen und füllen Sie sowohl die Kopfzeilen- als auch die Wertfelder aus. Die Anzahl der zusätzlichen Kopfzeilen ist nicht begrenzt.
Kopfwertvariablen, die mit einem
:gekennzeichnet sind, werden durch den entsprechenden Datenwert ersetzt (z.B.:TicketIDwird zu1). - Zusätzliche Anfrage-Header (Invoker-spezifisch)
-
Diese Kopfzeilen werden in Anfragen für den ausgewählten Invoker gesetzt. Der Zweck dieser Einstellung ist derselbe wie oben.
Kopfwertvariablen, die mit einem
:gekennzeichnet sind, werden durch den entsprechenden Datenwert ersetzt (z.B.:TicketIDwird zu1).
Bemerkung
Einige Header sind aus Sicherheitsgründen blockiert. Bei Bedarf kann die Liste der blockierten Header in der folgenden Systemkonfiguration über die Einstellungen geändert werden:
-
GenericInterface::Invoker::OutboundHeaderBlacklist -
GenericInterface::Operation::OutboundHeaderBlacklist
Wenn mindestens zwei Invoker hinzugefügt werden, wird die Ansicht des Requester-Transports für HTTP::REST um zwei Felder erweitert.
- Controller-Mapping für Invoker ‚<InvokerName>‘ *
-
In dieser Einstellung wird ein Ressourcenpfad festgelegt. Dieser Pfad muss entsprechend den Erfordernissen des entfernten Web Service und nach dessen Definition festgelegt werden.
Der Pfad kann Variablen in der Form
:<Variablenname>enthalten. Jeder Variablenname, der mit den aktuellen (zu sendenden) Daten übereinstimmt, wird durch den entsprechenden Datenwert ersetzt. Diese übereinstimmenden Variablennamen und -werte werden aus den aktuellen Daten entfernt. Je nach HTTP-Anforderungsbefehl können die verbleibenden Daten als JSON-String im Anforderungskörper oder als Abfrageparameter innerhalb des URI gesendet werden.Beispiele für Daten Var1 = Eins, Var2 = Zwei, Var3 = Drei und Var4 = Vier.
-
Controller-Zuordnung:
/Ressource, nach Ersetzungen:/Resource, verbleibende Daten: Var1 = Eins, Var2 = Zwei, Var3 = Drei und Var4 = Vier -
Controller-Zuordnung:
/Ressource/:Var1, nach Ersetzungen:/Resource/Eins, verbleibende Daten: Var2 = Zwei, Var3 = Drei und Var4 = Vier -
Controller-Zuordnung:
/Resource/:Var1?Param1=:Var2&Var3=:Var3, nach Ersetzungen:/Resource/One?Param1=Two&Var3=Three, verbleibende Daten: Var4 = Vier
-
- Gültiger Anfragebefehl für Invoker ‚<InvokerName>‘
-
Hiermit wird die zu verwendende HTTP-Anforderungsmethode festgelegt. Mögliche Optionen: CONNECT, DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT und TRACE. Wenn kein Befehl ausgewählt wird, wird Standardbefehl verwendet.
OTRS als Requester – HTTP::SOAP
Für den Requester HTTP::SOAP-Netzwerktransport sind weitere Felder zu setzen.

Die folgenden Einstellungen sind verfügbar, wenn Sie diese Ressource hinzufügen oder bearbeiten. Die mit einem Sternchen gekennzeichneten Felder sind Pflichtfelder.
- Endpunkt *
-
URI des entfernten Systems, um einen bestimmten Ort für den Zugriff auf einen Web Service anzugeben.
- Timeout *
-
Timeout-Wert für Anfragen.
- Setzen von SOAPAction *
-
Auf Ja gesetzt, um einen gefüllten
SOAPAction-Header zu senden. Setzen Sie den Wert auf Nein, um einen leerenSOAPAction-Header zu senden. - SOAPAction-Schema *
-
Wählen Sie aus, wie die
SOAPActionaufgebaut sein soll. Einige Web Services erfordern einen bestimmten Aufbau. - SOAPAction-Trenner *
-
Zeichen, das als Trennzeichen zwischen Namensraum und SOAP-Operation verwendet wird. Normalerweise verwenden .Net-Web Services
/als Trennzeichen. - Namensraum *
-
URI, die SOAP-Methoden einen Kontext gibt und damit Mehrdeutigkeiten auflöst.
- Anfragen-Namensschema *
-
Wählen Sie aus, wie der Wrapper der SOAP-Anfragefunktion aufgebaut sein soll.
FunctionNamewird als Beispiel für den tatsächlichen Invoker oder Operationsnamen verwendet.FreeTextwird als Beispiel für den tatsächlich konfigurierten Wert verwendet. - Antwort-Namensschema *
-
Wählen Sie aus, wie der Wrapper der SOAP-Antwortfunktion aufgebaut sein soll.
FunctionNamewird als Beispiel für den tatsächlichen Invoker oder Operationsnamen verwendet.FreeTextwird als Beispiel für den tatsächlich konfigurierten Wert verwendet. - Kodierung
-
Die Zeichenkodierung für SOAP-Nachrichteninhalte.
- Authentifizierung
-
Ein optionaler Authentifizierungsmechanismus für den Zugriff auf das entfernte System. Wählen Sie einen Authentifizierungsmechanismus aus der Liste aus und es werden zusätzliche Felder angezeigt.
- Anmeldeinformation *
-
Wählen Sie die Anmeldeinformation, die Sie in der Ansicht Anmeldedaten hinzugefügt haben. Klicken Sie auf die Schaltfläche Anmeldeinformation hinzufügen, um die Ansicht für die Verwaltung der Anmeldeinformation zu öffnen.
- Zertifikat der Certification Authority (CA)
-
Voller Pfad und Dateiname der Datei der Certification Authority (CA), welche das Zertifikat signiert hat.
- Verzeichnis mit Certification Autorities (CA)
-
Voller Pfad und Dateiname des CA-Verzeichnisses, in dem CA-Zertifikate gespeichert sind.
- Proxy-Optionen verwenden *
-
Optionen für die Verwendung eines Proxy zum Zugriff auf das entfernte System anzeigen oder verbergen.
- Zusätzliche Anfrage-Header (alle Invoker)
-
Optional können Sie zusätzliche Anfrage-Header für alle Invoker definieren. Diese Kopfzeilen werden in jeder Anfrage gesetzt.
Kopfwertvariablen, die mit einem
:gekennzeichnet sind, werden durch den entsprechenden Datenwert ersetzt (z.B.:TicketIDwird zu1). - Zusätzliche Anfrage-Header (Invoker-spezifisch)
-
Diese Kopfzeilen werden in Anfragen für den ausgewählten Invoker gesetzt. Der Zweck dieser Einstellung ist derselbe wie oben.
Kopfwertvariablen, die mit einem
:gekennzeichnet sind, werden durch den entsprechenden Datenwert ersetzt (z.B.:TicketIDwird zu1). - Zusätzliche Anfrage SOAP-Namensräume (alle Invoker)
-
Diese Namensräume werden in jeder Anfrage verwendet.
- Zusätzliche Anfrage SOAP-Namensräume (Invoker-spezifisch)
-
Diese Namensräume werden in Anfragen für diesen speziellen Invoker verwendet.
Bemerkung
Einige Header sind aus Sicherheitsgründen blockiert. Bei Bedarf kann die Liste der blockierten Header in der folgenden Systemkonfiguration über die Einstellungen geändert werden:
-
GenericInterface::Invoker::OutboundHeaderBlacklist -
GenericInterface::Operation::OutboundHeaderBlacklist
- Sortierungsoptionen
-
Sortierung für ausgehende XML-Felder (Struktur, die unter dem Wrapper für den Funktionsnamen beginnt) – siehe Dokumentation für SOAP-Transport.
Web Service Mapping
Es gibt Fälle, in denen die Daten von einem Format in ein anderes umgewandelt werden müssen (Mapping oder Änderung der Datenstruktur), da normalerweise ein Web Service verwendet wird, um mit einem entfernten System zu interagieren, das höchstwahrscheinlich kein anderes OTRS-System ist und/oder die OTRS-Datenstrukturen und -Werte nicht verstehen kann. In diesen Fällen müssen einige oder alle Werte geändert werden, und manchmal sogar die Namen der Werte (Schlüssel) oder sogar die komplette Struktur, um mit den erwarteten Daten auf der anderen Seite übereinzustimmen. Um diese Aufgabe zu bewältigen, gibt es die generische Schnittstellenabbildungsschicht.

Jedes entfernte System hat seine eigenen Datenstrukturen und es ist möglich, neue Mapping-Module für jeden Fall zu erstellen (z.B. gibt es ein angepasstes Mapping-Modul für SAP Solution Manager als Feature), aber es ist nicht immer notwendig. Das Modul Mapping::Simple sollte die meisten Mapping-Anforderungen abdecken.
Bemerkung
Wenn das Mapping::Simple nicht alle Mapping-Bedürfnisse für einen Webservice abdeckt, sollte ein neues Mapping-Modul erstellt werden.
Dieses Modul gibt Ihnen die Möglichkeit, Standardwerte für jeden Schlüssel oder Wert für die gesamten Daten der Kommunikation zuzuordnen.
Am Anfang der Ansicht sehen Sie einen allgemeinen Bereich, in dem Sie die Standardregeln festlegen können, die für alle nicht zugeordneten Tasten und Werte gelten. Es stehen drei Optionen zur Verfügung, die im Folgenden aufgeführt sind:
- Behalten (unverändert lassen)
-
Sie hat keinerlei Einfluss auf die Schlüssel oder Werte.
- Ignorieren (Schlüssel-Wert-Paar entfernen)
-
Wenn dies auf den Schlüssel angewandt wird, werden Schlüssel und Wert gelöscht, denn wenn ein Schlüssel gelöscht wird, wird in der Folge auch der zugehörige Wert gelöscht. Wenn dies auf den Wert angewendet wird, wird nur der Wert gelöscht, der Schlüssel bleibt erhalten, der nun mit einem leeren Wert verknüpft wird.
- Ändern in (verwende angegeben Wert als Standard)
-
Alle Schlüssel und/oder Werte ohne eine definierte Zuordnungsregel verwenden diese als Standard. Wenn Sie diese Option wählen, wird ein neues Textfeld angezeigt, in dem Sie diese Vorgabe festlegen können.
Wenn Sie auf die Plus-Schaltfläche für eine neue Schlüsselzuordnung klicken, wird ein neues Feld für eine einzelne Zuordnungskonfiguration angezeigt. Sie können so viele Tastenzuordnungen hinzufügen, wie Sie benötigen. Klicken Sie einfach erneut auf die Plus-Schaltfläche, und ein neues Zuordnungsfeld wird unter dem bestehenden angezeigt. In diesem Zuordnungsfeld können Sie eine Zuordnung für eine einzelne Taste definieren, mit den folgenden Optionen:
- Genaue(r) Wert(e)
-
Die alte Zeichenkette des Schlüssels wird durch eine neue ersetzt, wenn der alte Schlüssel genau übereinstimmt.
- Regulärer Ausdruck
-
Die Zeichenkette des Schlüssels wird durch eine Regel des regulären Ausdrucks ersetzt.
Wenn Sie auf die Plus-Schaltfläche für eine neue Wertekarte klicken, wird eine neue Zeile für eine Wertekarte angezeigt. Hier ist es auch möglich, Regeln für jeden zuzuordnenden Wert mit denselben Optionen wie für die Schlüsselzuordnung zu definieren (exakter Wert und regulärer Ausdruck). Sie können so viele Werte zur Zuordnung hinzufügen, wie Sie benötigen, und wenn Sie einen davon löschen möchten, klicken Sie einfach auf die Minus-Schaltfläche für jede Zeile mit einem Zuordnungswert.
Sie können den gesamten Bereich der Schlüsselzuordnung (Box) löschen, indem Sie auf die Minustaste in der oberen rechten Ecke jeder Box drücken, die Sie löschen möchten.
Wenn Sie eine komplette Mapping-Konfiguration löschen müssen, gehen Sie zurück zu der entsprechenden Ansicht, suchen Sie die Mapping-Richtung, die Sie zuvor ausgewählt haben, und setzen Sie ihren Wert auf –, und speichern Sie die Konfiguration, um die Änderungen zu übernehmen.
Es ist möglich, XSLT-Vorlagen für das Mapping zu definieren.

XSLT-Mapping
- XSLT-Stylesheet *
-
Hier können Sie Ihren XSLT-Mapping-Code hinzufügen oder bearbeiten.
Das Bearbeitungsfeld ermöglicht die Benutzung verschiedener Funktionen wie automatische Formatierung, Veränderung der Fenstergröße sowie Tag- und Klammer-Vervollständigung.
- Schlüsselattribut benutzen
-
Für eingehende Daten legt diese Option fest, ob XML-Schlüsselattribute in eine Perl-Datenstruktur konvertiert oder ignoriert werden.
Beispiel: Eingehende XML-Daten
<Article> <Subject>some subject</Subject> <Body>some body</Body> <ContentType>text/plain; charset=utf8</ContentType> <TimeUnit>1</TimeUnit> </Article> <Attachment> <Content>someTestData</Content> <ContentType>text/plain</ContentType> <Filename>test1.txt</Filename> </Attachment> <Attachment Content="someTestData" ContentType="text/plain" Filename="test2.txt" />
Resultierende Perl-Daten mit deaktiviertem Schlüsselattribut verwenden:
$VAR1 = { Article => { Body => 'some body', ContentType => 'text/plain; charset=utf8', Subject => 'some subject', TimeUnit => '1', }, Attachment => [ { Content => 'someTestData', ContentType => 'text/plain', Filename => 'test1.txt', }, {}, ], };
Resultierende Perl-Daten mit Schlüsselattribut verwenden aktiviert:
$VAR1 = { Article => { Body => 'some body', ContentType => 'text/plain; charset=utf8', Subject => 'some subject', TimeUnit => '1', }, Attachment => [ { Content => 'someTestData', ContentType => 'text/plain', Filename => 'test1.txt', }, { Content => 'someTestData', ContentType => 'text/plain', Filename => 'test2.txt', }, ], };
- Attribut-Optionen
-
Diese Option muss verwendet werden, um Schlüsselattribute für ausgehende Elemente zu verwenden. Optionen der ersten Ebene definieren die Elemente, die Schlüsselattribute erhalten sollen. Die Optionen der zweiten Ebene legen fest, welche Unterelemente in Attribute umgewandelt und an das umgebende Element angehängt werden sollen. Für Schlüsselattribute werden nur zwei Ebenen von Optionen berücksichtigt. Diese werden für jede Ebene von Elementen in der XML-Struktur verwendet (nicht nur für die erste Ebene).
Bitte beachten Sie, dass eine Sortierung der Elemente in den Attributoptionen möglich ist, aber keinen Einfluss darauf hat, wie Schlüsselattribute behandelt werden.
Wenn jedes Unterelement eines Elements in Attribute umgewandelt wird und das Element ein bestimmtes Unterelement
ContentKeyenthält, wird der Inhalt dieses Unterelements als Wert des umgebenden Elements verwendet. Zur Veranschaulichung dieser Optionen dient das folgende Beispiel.
Beispiel: XSLT Mapping
<?xml version="1.0" encoding="UTF-8"?> <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:date="http://exslt.org/dates-and-times" version="1.0" extension-element-prefixes="date"> <xsl:template match="RootElement"> <xsl:copy> <header> <messageID>someMessageID</messageID> <Attachment> <ContentKey>text1.txt</ContentKey> <Content>someValue</Content> <ContentType>text/plain</ContentType> </Attachment> <Attachment> <Filename>text2.txt</Filename> <Content>someValue</Content> <ContentType>text/plain</ContentType> </Attachment> <Attachment> <ContentKey>text3.txt</ContentKey> <Content>someValue</Content> <ContentDisposition>inline</ContentDisposition> <ContentType>text/plain</ContentType> </Attachment> </header> <ticketID>someTicketID</ticketID> <returnCode>0</returnCode> </xsl:copy> </xsl:template> </xsl:transform>
- Daten-Include
-
Wählen Sie einen oder mehrere Datensätze, welche in vorhergehenden Anfrage-/Antwortphasen erstellt wurden, um diese im Mapping zur Verfügung zu stellen.
Diese Datensätze werden in die Datenstruktur unter
/DataInclude/<DataSetName>dargestellt (in der Ausgabe des Debugger sehen Sie Details der tatsächlichen Struktur).
Webservice für dynamisches Feld
Um ein neues dynamisches Feld vom Typ Web Service zu erstellen, ist es notwendig, einen bereits funktionierenden Web Service zu haben. Dieser muss mindestens einen Invoker vom Typ Generic::PassThrough haben. Dieser Invoker wird aufgerufen, um die Daten vom Remote-Server zu holen. Die ursprünglichen Daten, die in einer Anfrage gesendet werden, sind ähnlich wie im folgenden Beispiel.
{
DynamicFieldID => 123,
DynamicFieldLabel => 'NameX',
DynamicFieldName => 'NameX',
DynamicFieldValue => 'Value',
Form => {
# Form fields
# ...
},
Ticket => {
# Ticket attributes
# ...
},
DynamicField => {
NameX => 'Value'
NameY => [ 'Value' ],
},
UserID => 123,
},
Form-
Dieser Abschnitt enthält die Felder in der aktuellen Form im Webbrowser. Diese Informationen ändern sich mit dem Ausfüllen der Maske.
Ticket-
Dieser Abschnitt (oder ein anderes Quellobjekt, z. B.
CustomerUser) enthält die Attribute des Objekts, zu dem das dynamische Feld gehört.In der Ansicht Neues Telefon-Ticket ist der Abschnitt z.B. leer, da das Ticket noch nicht erstellt wurde, aber in der Ansicht Freie Felder ändern enthält er die Informationen des aktuellen Tickets.
DynamicField-
Dieser Abschnitt enthält alle nicht leeren Werte aller konfigurierten dynamischen Felder für das aktuelle Objekt.
In den meisten Fällen werden sich die Daten, die der Remote-Server benötigt, stark von den bereitgestellten Daten unterscheiden, weshalb es dringend empfohlen wird, ein Mapping-Modul für die ausgehenden Daten zu verwenden, um sie speziell für den Remote-Server-Aufruf zu formatieren.
Das folgende Beispiel für das ausgehende Mapping zeigt ein XSLT-Mapping, das alle Daten verwirft und setzt einen festen Wert für UserLogin, Password und TicketID (wie für eine TicketGet Operation erforderlich).
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform
xmlns:xsl="https://www.w3.org/1999/XSL/Transform"
xmlns:date="https://exsalt.org/dates-and-times"
version="1.0"
extension-element-prefixes="date">
<xsl:output method="xml" encoding="utf-8" indent="yes" />
<!-- Don't return unmached tags -->
<xsl:template match="text()" />
<!-- Remove empty elements -->
<xsl:template match="*[not(node())]" />
<!-- Root template -->
<xsl:template match="/">
<RootElement>
<UserLogin>someuser</UserLogin>
<Password>somepassword</Password>
<TicketID>1</TicketID>
</RootElement>
</xsl:template>
</xsl:transform>
Die Antwort des Servers kann auch sehr unterschiedlich sein, so dass in diesem Fall auch sehr empfehlenswert ist, ein Mapping-Modul für die eingehenden Daten zu verwenden, um die Informationen verarbeiten zu können. Die Antwort muss eine Liste von Schlüssel- und Wertelementen sein.
Das folgende eingehende Mapping-Beispiel zeigt ein XSLT-Mapping, das die Ergebnisse einer Antwort der Operation TicketGet vom Remote-Server konvertiert und den Zustand und die Queue extrahiert und formatiert, wie es für die Verwendung als Optionen für das dynamische Feld erforderlich ist.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform
xmlns:xsl="https://www.w3.org/1999/XSL/Transform"
xmlns:date="https://exsalt.org/dates-and-times"
version="1.0"
extension-element-prefixes="date">
<xsl:output method="xml" encoding="utf-8" indent="yes" />
<!-- Don't return unmached tags -->
<xsl:template match="text()" />
<!-- Remove empty elements -->
<xsl:template match="*[not(node())]" />
<!-- Root template -->
<xsl:template match="/">
<RootElement>
<xsl:apply-templates />
</RootElement>
</xsl:template>
<xsl:template match="/*/Ticket">
<PossibleValue>
<Key>State</Key>
<Value>
<xsl:value-of select="/*/Ticket/State" />
</Value>
</PossibleValue>
<PossibleValue>
<Key>Queue</Key>
<Value>
<xsl:value-of select="/*/Ticket/Queue" />
</Value>
</PossibleValue>
</xsl:template>
</xsl:transform>
Die folgende Definition des Web-Service (importierbare YAML-Datei) kann für den Test des Feldes verwendet werden, aber der Endpunkt muss an das aktuelle System angepasst werden. Dieser Web-Service fungiert als Requester und Provider und gibt immer den Status und die Queue von TicketID 1 als mögliche Werte an das Feld zurück.
Bemerkung
Dieses Beispiel sollte nicht in Verbindung mit dem Webserver für die Entwicklung verwendet werden.
---
Debugger:
DebugThreshold: debug
TestMode: '0'
Description: Dynamic Field Web Service Test
FrameworkVersion: 7.0.x git
Provider:
ErrorHandling: {}
ErrorHandlingPriority: []
Operation:
TicketGet:
Description: ''
IncludeTicketData: ''
MappingInbound: {}
MappingOutbound: {}
Type: Ticket::TicketGet
Transport:
Config:
AdditionalHeaders: ~
MaxLength: '100000000'
NameSpace: https://www.otrs.org/TicketConnector/
RequestNameFreeText: ''
RequestNameScheme: Plain
ResponseNameFreeText: ''
ResponseNameScheme: Response
Type: HTTP::SOAP
RemoteSystem: ''
Requester:
ErrorHandling: {}
ErrorHandlingPriority: []
Invoker:
TicketGet:
Description: Get possible values from the other side.
Events: []
MappingInbound:
Config:
Template: |-
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2001-2023 OTRS AG, https://otrs.com/
This software comes with ABSOLUTELY NO WARRANTY. For details, see
the enclosed file COPYING for license information (GPL). If you
did not receive this file, see https://www.gnu.org/licenses/gpl.txt.
-->
<!-- DOCUMENTATION
* Example XML Input *
<RootElement>
...
</RootElement>
* Example XML Output *
<RootElement>
<PossibleValues>
<Key>???</Key>
<Value>???</Value>
</PossibleValues>
<PossibleValues>
<Key>???</Key>
<Value>???</Value>
</PossibleValues>
...
</RootElement>
-->
<xsl:transform
xmlns:xsl="https://www.w3.org/1999/XSL/Transform"
xmlns:date="https://exslt.org/dates-and-times"
version="1.0"
extension-element-prefixes="date">
<xsl:output method="xml" encoding="utf-8" indent="yes" />
<!-- Don't return unmatched tags -->
<xsl:template match="text()" />
<!-- Remove empty elements -->
<xsl:template match="*[not(node())]" />
<!-- Root template -->
<xsl:template match="/">
<RootElement>
<xsl:apply-templates />
</RootElement>
</xsl:template>
<xsl:template match="/*/Ticket">
<PossibleValue>
<Key>State</Key>
<Value><xsl:value-of select="/*/Ticket/State" /></Value>
</PossibleValue>
<PossibleValue>
<Key>Queue</Key>
<Value><xsl:value-of select="/*/Ticket/Queue" /></Value>
</PossibleValue>
</xsl:template>
</xsl:transform>
Type: XSLT
MappingOutbound:
Config:
Template: |-
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2001-2023 OTRS AG, https://otrs.com/
This software comes with ABSOLUTELY NO WARRANTY. For details, see
the enclosed file COPYING for license information (GPL). If you
did not receive this file, see https://www.gnu.org/licenses/gpl.txt.
-->
<!-- DOCUMENTATION
* Example XML Input *
<RootElement>
...
</RootElement>
* Example XML Output *
<RootElement>
<PossibleValues>
<Key>???</Key>
<Value>???</Value>
</PossibleValues>
<PossibleValues>
<Key>???</Key>
<Value>???</Value>
</PossibleValues>
...
</RootElement>
-->
<xsl:transform
xmlns:xsl="https://www.w3.org/1999/XSL/Transform"
xmlns:date="https://exslt.org/dates-and-times"
version="1.0"
extension-element-prefixes="date">
<xsl:output method="xml" encoding="utf-8" indent="yes" />
<!-- Don't return unmatched tags -->
<xsl:template match="text()" />
<!-- Remove empty elements -->
<xsl:template match="*[not(node())]" />
<!-- Root template -->
<xsl:template match="/">
<RootElement>
<UserLogin>someuser</UserLogin>
<Password>somepassword</Password>
<TicketID>1</TicketID>
</RootElement>
</xsl:template>
</xsl:transform>
Type: XSLT
Type: Generic::PassThrough
Transport:
Config:
Encoding: ''
Endpoint: https://localhost/otrs/nph-genericinterface.pl/Webservice/GenericConfigItemConnectorSOAP
NameSpace: https://www.otrs.org/TicketConnector/
RequestNameFreeText: ''
RequestNameScheme: Plain
ResponseNameFreeText: ''
ResponseNameScheme: Response
SOAPAction: Yes
SOAPActionSeparator: '#'
SSL:
SSLProxy: ''
SSLProxyPassword: ''
SSLProxyUser: ''
Type: HTTP::SOAP
UseMappedData: '1'
