Triggering einer Studio-Operation über einen Webhook in Jitterbit Studio
Einführung
Mit API Manager können Sie eine Studio-Operation als HTTP-Endpunkt veröffentlichen. Wenn ein externes System eine HTTP-Anfrage an diesen Endpunkt sendet, empfängt API Manager die Anfrage und führt sofort die verknüpfte Operation aus, wobei der Anfragebody und die Header durch Jitterbit-Variablen weitergeleitet werden.
Dieses Muster ist nützlich, um auf Echtzeitereignisse von externen Systemen wie CRM-Plattformen, Ticketing-Tools oder benutzerdefinierten Anwendungen zu reagieren, die ausgehende Webhooks unterstützen.
Diese Anleitung behandelt den Typ Custom API in API Manager. Sie geht von Folgendem aus:
- Eine Custom API ist in API Manager in derselben Umgebung wie das Projekt konfiguriert und veröffentlicht.
- Ein Studio-Projekt existiert mit mindestens einer Operation zum Empfangen der eingehenden Anfrage.
Der allgemeine Ablauf ist:
Teil 1: Erstellen der Custom API
Schritt 1: API erstellen
-
Öffnen Sie API Manager und klicken Sie auf New API.
-
Wählen Sie Custom API als API-Typ.
-
API Name: Geben Sie einen Namen für die API ein (z. B.
Webhook Receiver). Dieser Name wird in API Manager und in Operationsprotokollen angezeigt. -
URL Prefix: Geben Sie das Basissegment des Pfads für die öffentliche Endpunkt-URL ein (z. B.
my-webhook). -
Version: Geben Sie eine Versionsnummer ein (z. B.
1.0). Diese wird Teil der Endpunkt-URL. -
Enable SSL: Aktivieren Sie diese Option, um HTTPS-Verbindungen zu erzwingen. Dies wird für alle Produktionsendpunkte empfohlen.
-
Enable CORS: Aktivieren Sie diese Option, wenn das externe System Cross-Origin-Anfragen aus einem Browser-Kontext sendet.
-
Klicken Sie auf Save.
Schritt 2: Konfigurieren des Service-Endpunkts
-
Klicken Sie im API-Editor auf Add Service.
-
Method: Wählen Sie die HTTP-Methode aus, die das externe System zum Senden des Webhooks verwendet (z. B. POST).
-
Path: Geben Sie den Endpunkt-Unterpfad ein (z. B.
/events). Dieser wird an die Basis-URL angehängt. -
Operation: Wählen Sie die Studio-Operation aus, die die eingehende Anfrage verarbeitet.
-
Response Type: Wählen Sie System Variable. Mit dieser Einstellung wird der Response-Body durch den Wert bestimmt, den die Operation der Variable
$jitterbit.api.responsezuweist. -
Timeout: Legen Sie die maximale Zeit fest, die API Manager auf den Abschluss der Operation wartet. Der Standard ist 30 Sekunden.
-
Klicken Sie auf Save und dann auf Publish.
Nach der Veröffentlichung zeigt API Manager die vollständige Endpunkt-URL im Format https://<host>/<prefix>/<version>/<path> an. Kopieren Sie diese URL und konfigurieren Sie das externe System so, dass es Webhook-Payloads an diese URL sendet.
Teil 2: Zugriff auf die Request-Payload in der Operation
Wenn API Manager die verknüpfte Operation auslöst, werden Jitterbit-Variablen mit den eingehenden Request-Daten gefüllt. Lesen Sie diese Variablen in einem Script-Schritt am Anfang der Operation.
| Variable | Inhalt |
|---|---|
$jitterbit.api.request.body |
Der rohe Request-Body als String. |
$jitterbit.api.request.headers.content-type |
Der Wert des Content-Type-Request-Headers. |
$jitterbit.api.request.headers.fulluri |
Der vollständige Request-URI einschließlich Pfad. Nützlich für das Routing, wenn mehrere Pfade zu einer Operation führen. |
$jitterbit.api.request.method |
Die HTTP-Methode der Anfrage (z. B. POST). |
Das folgende Beispiel protokolliert den eingehenden Body und URI im Operationsprotokoll:
<trans>
WriteToOperationLog("Received body: " + $jitterbit.api.request.body);
WriteToOperationLog("URI: " + $jitterbit.api.request.headers.fulluri);
</trans>
Um die Payload in einer Transformation zu verwenden, weisen Sie sie einer Variablen zu und ordnen diese Variable als Quelle zu:
<trans>
$payload = $jitterbit.api.request.body;
</trans>
Routing von Anfragen über mehrere Pfade
Wenn die API mehrere Service-Pfade hat (z. B. /createRecord und /updateRecord), können Sie alle Pfade einer einzelnen Controller-Operation zuordnen und eine Case()-Anweisung verwenden, um basierend auf dem URI zu Sub-Operationen zu leiten:
<trans>
Case(
Index($jitterbit.api.request.headers.fulluri, "/createRecord") >= 0,
RunOperation("<TAG>operation:Create Record</TAG>");,
Index($jitterbit.api.request.headers.fulluri, "/updateRecord") >= 0,
RunOperation("<TAG>operation:Update Record</TAG>");
);
</trans>
Dies hält die API-Konfiguration einfach (ein Einstiegspunkt), während die Controller-Operation die Dispatch-Logik verarbeitet.
Teil 3: Eine Antwort an den Aufrufer zurückgeben
Wenn Response Type auf System Variable eingestellt ist, gibt API Manager den Wert von $jitterbit.api.response als HTTP-Response-Body zurück. Legen Sie diese Variable in der Operation fest, bevor sie abgeschlossen wird.
Das folgende Beispiel gibt eine JSON-Bestätigung zurück:
<trans>
$jitterbit.api.response = '{"status":"received"}';
</trans>
Wenn $jitterbit.api.response nicht gesetzt ist, gibt API Manager eine leere 200 OK-Antwort zurück.
Um einen anderen HTTP-Statuscode als 200 zurückzugeben, legen Sie $jitterbit.api.response.status_code zusammen mit dem Response-Body fest:
<trans>
$jitterbit.api.response.status_code = "400";
$jitterbit.api.response = '{"error":"Missing required field"}';
</trans>
Hinweis
Einige externe Systeme erfordern eine Antwort innerhalb eines kurzen Timeout-Fensters (oft 3–10 Sekunden). Wenn die Operation zeitaufwändige Arbeiten ausführt, sollten Sie eine Bestätigung sofort zurückgeben und die Payload asynchron mit RunOperation verarbeiten, wobei der Parameter async auf true gesetzt ist.
Integration überprüfen
-
Kopieren Sie in API Manager die veröffentlichte Endpoint-URL.
-
Senden Sie eine Test-POST-Anfrage an den Endpoint mit einem Tool wie curl oder Postman, einschließlich eines JSON-Body.
-
Öffnen Sie die Operation Logs und bestätigen Sie, dass die Operation ausgeführt wurde und dass der protokollierte Body mit der Test-Payload übereinstimmt.
-
Bestätigen Sie, dass der HTTP-Response-Body und der Statuscode den in
$jitterbit.api.responseund$jitterbit.api.response.status_codefestgelegten Werten entsprechen.