UiPath Documentation
integration-service
2.2510
true

Integration Service-Benutzerhandbuch

Letzte Aktualisierung 24. Apr. 2026

Globale Skripte

Auf der Registerkarte Globale Skripte im Connector Builder können Sie JavaScript schreiben, das vor oder nach jeder API-Anforderung Ihres Connectors ausgeführt wird. Verwenden Sie Skripts vor der Anforderung, um ausgehende Anforderungen zu ändern, und Skripts nach der Anforderung, um eingehende Antworten zu verarbeiten.

Verwendung von globalen Skripts

Globale Skripts sind nützlich, wenn Sie konsistente Logik auf alle Anforderungen in einem Connector anwenden müssen, z. B.:

  • Einfügen oder Überschreiben von Anforderungsheadern, Parametern oder Text vor dem Senden
  • Dynamisches Erstellen der Anbieter-URL basierend auf Konfigurationswerten
  • Transformieren eines Anbieterantworttexts, bevor er an den Workflow zurückgegeben wird
  • Stoppen einer Anforderung basierend auf benutzerdefinierten Bedingungen, ohne die Anbieter-API aufzurufen

Schreiben von Skripten

So öffnen Sie die Registerkarte Globale Skripte:

  1. Öffnen Sie im Integration Service den Connector-Generator und wählen Sie Ihren benutzerdefinierten Connector aus.
  2. Wählen Sie in der oberen Navigation Globale Skripte aus.
  3. Erweitern Sie Voranforderungsskript oder Nachanforderungsskript und geben Sie Ihr JavaScript ein.

Skripte werden in einer Sandbox-JavaScript-Umgebung ausgeführt. Es gelten die folgenden Einschränkungen:

  • require() ist nur für einen vorab genehmigten Satz von Bibliotheken verfügbar ( siehe Verwenden von Snippets). Beliebige Pakete können nicht importiert werden.
  • Netzwerk-APIs (fetch, XMLHttpRequest, WebSocket) sind nicht verfügbar.
  • eval ist nicht verfügbar.
  • Standardmäßige JavaScript-integrierte Elemente (JSON, Date, Array, Object, URL, Buffer, encodeURIComponent) sind verfügbar.

Die done() -Funktion

Jedes Skript muss done() aufrufen, um die Fertigstellung zu signalisieren. done() beendet die Ausführung sofort – Code, der nach done() geschrieben wurde, ist nicht erreichbar.

// Pass through unchanged
done();

// Override one or more output values
done({
  request_vendor_headers: updatedHeaders
});

// Return multiple overrides
done({
  request_vendor_body: newBody,
  request_vendor_headers: newHeaders
});

// Stop the request — do not call the vendor API
done({ continue: false });

// Stop the request and return an error
done({
  continue: false,
  response_status_code: 400,
  response_error_message: "Invalid action"
});
// Pass through unchanged
done();

// Override one or more output values
done({
  request_vendor_headers: updatedHeaders
});

// Return multiple overrides
done({
  request_vendor_body: newBody,
  request_vendor_headers: newHeaders
});

// Stop the request — do not call the vendor API
done({ continue: false });

// Stop the request and return an error
done({
  continue: false,
  response_status_code: 400,
  response_error_message: "Invalid action"
});

Verwenden von Snippets

Wählen Sie Snippets im Skriptbereich aus, um Codevorlagen in den aktiven Skript-Editor einzufügen. Die folgenden Vorlagen sind verfügbar:

  • Bibliothek importieren – Fügt einen require() -Aufruf für eine der vorab genehmigten Bibliotheken ein, die in der Skript-Sandbox verfügbar sind: buffer, crypto, http, https, querystring, url, util, zlib, axios, lodash, jmespath, moment, request, request-promise.
  • Voraussetzungsskripts:
    • Anbieter aktualisieren – Fügt eine Vorlage zum Ändern der Eigenschaften von ausgehenden Anbieteranfragen ein.
    • Konfigurationsobjekt verwenden – Fügt eine Vorlage zum Lesen von Connector-Konfigurationswerten ein.
    • Eine Anbieteranforderung anhalten – Fügt ein done({ continue: false }) -Muster ein, um die Anforderung kurzzuschließen, ohne die Anbieter-API aufzurufen.

Voranforderungsskripts

Ein Voranforderungsskript wird ausgeführt, bevor jeder API-Aufruf an den Anbieter gesendet wird. Variablen mit Schreib- oder Lese- und Schreibzugriff können über done() festgelegt werden.

VariableZugriffBeschreibung
request_methodLesenHTTP-Methode des API-Aufrufs (GET, POST usw.).
request_vendor_methodLesen und SchreibenHTTP-Methode, die an den Anbieter übergeben wird.
request_headersLesenAnforderungsheader, die als Teil des API-Aufrufs übergeben wurden.
request_vendor_headersLesen und SchreibenHeader, die an den Anbieter gesendet werden.
request_pathLesenAnforderungspfad des API-Aufrufs.
request_vendor_pathLesen und SchreibenAnforderungspfad, der an den Anbieter gesendet wird. Wenn der Pfad mit http beginnt, wird er als vollständige Anforderungs-URL verwendet.
request_path_variablesLesenAus der URL-Vorlage extrahierte Pfadvariablen.
request_parametersLesenAbfrageparameter, die als Teil des API-Aufrufs übergeben werden.
request_vendor_parametersLesen und SchreibenAbfrageparameter, die an den Anbieter gesendet werden.
request_bodyLesenAnforderungstext, der als Teil des API-Aufrufs als Zeichenfolge übergeben wurde.
request_body_rawLesenDer Anforderungstext wurde als Teil des API-Aufrufs als unverarbeitete Zeichenfolge übergeben.
request_vendor_bodyLesen und SchreibenAnforderungstext, der an den Anbieter gesendet wird. Akzeptiert Zeichenfolge, Liste oder Zuordnung beim Schreiben.
request_body_mapLesenAnforderungstext, der als Teil des API-Aufrufs als Zuordnung übergeben wurde.
request_vendor_body_mapLesenAnforderungstext, der als Zuordnung an den Anbieter gesendet wird.
request_vendor_urlLesenVollständige Endpunkt-URL, die für den Anbieteraufruf verwendet wird.
request_expressionLesenCEQL-Parameter where in eine Liste von {attribute, value, operator} -Zuordnungen konvertiert.
request_previous_responseLesenAntworttext der vorherigen verketteten Ressource. null wenn es nicht Teil einer Kette ist.
request_previous_response_headersLesenAntwortheader von der vorherigen verketteten Ressource. null wenn es nicht Teil einer Kette ist.
request_root_keyLesen und Schreibendot-notation-Pfad zum Erstellen eines Unterobjekts in der JSON-Nutzlast der Anforderung (z. B data.record).
object_nameLesenkanonischer Objektname für die Anforderung.
vendor_object_nameLesenName des Anbieterobjekts. Entspricht object_name , es sei denn, er wird auf der Ressource überschrieben.
configurationLesenEigenschaften der Connector-Konfiguration.
response_status_codeSchreibenHTTP-Statuscode, der zurückgegeben werden soll, wenn continue false ist.
response_error_messageSchreibenFehlermeldung, die zurückgegeben werden soll, bevor die Anforderung an den Anbieter gesendet wird.
response_bodySchreibenAntworttext, der zurückgegeben werden soll, wenn continue false ist.
response_body_rawSchreibenAntworttext als Zeichenfolge, die zurückgegeben werden soll, wenn continue false ist.
response_root_keyLesen und Schreiben.Pfad zur Beschränkung der Antwort auf ein Unterobjekt (z. B data.records).
multipart_hook_context_itemsLesen und SchreibenMehrteilige Formularelemente für Dateiuploadanforderungen.
continueSchreibenAuf false festlegen, um den Anbieteraufruf zu überspringen. Die Standardeinstellung ist true.

Beispiel: Fügen Sie einen dynamischen Header aus der Konfiguration ein

var headers = request_vendor_headers || {};
var config = configuration || {};

headers['Authorization'] = 'Bearer ' + config['oauth_token'];

done({ request_vendor_headers: headers });
var headers = request_vendor_headers || {};
var config = configuration || {};

headers['Authorization'] = 'Bearer ' + config['oauth_token'];

done({ request_vendor_headers: headers });

Beispiel: Überschreiben Sie den URL-Pfad des Anbieters

var baseUrl = configuration['base_url'];
if (!baseUrl) {
  done({ continue: false, response_error_message: "Missing configuration: 'base_url'" });
  return;
}

var apiVersion = configuration['api_version'] || 'v1';
var modelId = request_path_variables.modelId;
var vendorUrl = baseUrl.startsWith('http') ? baseUrl : 'https://' + baseUrl;

done({
  request_vendor_path: vendorUrl + '/' + apiVersion + '/models/' + modelId + '/completions'
});
var baseUrl = configuration['base_url'];
if (!baseUrl) {
  done({ continue: false, response_error_message: "Missing configuration: 'base_url'" });
  return;
}

var apiVersion = configuration['api_version'] || 'v1';
var modelId = request_path_variables.modelId;
var vendorUrl = baseUrl.startsWith('http') ? baseUrl : 'https://' + baseUrl;

done({
  request_vendor_path: vendorUrl + '/' + apiVersion + '/models/' + modelId + '/completions'
});

Beispiel: Ändern Sie den Anforderungstext

var body = typeof request_body_map === 'string'
  ? JSON.parse(request_body_map)
  : request_body_map;

body.max_tokens = body.max_tokens || 1024;
body.temperature = 0.7;

done({
  request_vendor_headers: { 'Content-Type': 'application/json' },
  request_vendor_body: JSON.stringify(body)
});
var body = typeof request_body_map === 'string'
  ? JSON.parse(request_body_map)
  : request_body_map;

body.max_tokens = body.max_tokens || 1024;
body.temperature = 0.7;

done({
  request_vendor_headers: { 'Content-Type': 'application/json' },
  request_vendor_body: JSON.stringify(body)
});

Skripte nach der Anforderung

Ein Post-Anforderungsskript wird ausgeführt, nachdem eine Antwort vom Anbieter empfangen wurde. Alle Voranforderungsvariablen bleiben als Lesen verfügbar. Die antwortspezifischen Variablen unten werden hinzugefügt, und configuration wird zu Lesen und Schreiben. Variablen mit Schreib- oder Lese- und Schreibzugriff können über done() festgelegt werden.

VariableZugriffBeschreibung
response_iserrorLesentrue wenn die Anbieterantwort einen Fehler anzeigt (Statuscodes außerhalb von 200–207).
response_status_codeLesen und SchreibenHTTP-Statuscode des Anbieters.
response_bodyLesen und SchreibenAntworttext des Anbieters.
response_body_rawLesen und SchreibenUnformatierter Antworttext des Anbieters als Zeichenfolge.
response_body_raw_mapLesenUnformatierter Antworttext des Anbieters als Zuordnung.
response_body_mapLesenAntworttext des Anbieters als Zuordnung.
response_headersLesen und SchreibenAntwortheader des Anbieters.
response_error_messageSchreibenFehlermeldung, die zurückgegeben werden soll. Konvertiert die Antwort in einen Fehler.
response_root_keyLesen und Schreiben.Pfad zur Beschränkung der Antwort auf ein Unterobjekt (z. B data.records).
configurationLesen und SchreibenEigenschaften der Connector-Konfiguration. Änderungen bleiben auf der Connector-Instanz bestehen.
multipart_hook_context_itemsLesen und SchreibenMehrteilige Formularelemente für Dateiuploadanforderungen.
metadata_mergeSchreibenAuf true festlegen, um Anbietermetadaten mit Modellmetadaten zu kombinieren.
Tipp:

Beginnen Sie jedes Nach-Anforderungs-Skript mit einem Fehlerschutz. Wenn die Antwort ein Fehler ist, rufen Sie done() ohne Argumente auf, um sie unverändert zu übergeben.

Beispiel: Transformieren Sie den Antworttext

if (response_iserror) {
  done();
  return;
}

var body = typeof response_body === 'string'
  ? JSON.parse(response_body)
  : response_body;

body.processed = true;
body.timestamp = new Date().toISOString();

done({ response_body: body });
if (response_iserror) {
  done();
  return;
}

var body = typeof response_body === 'string'
  ? JSON.parse(response_body)
  : response_body;

body.processed = true;
body.timestamp = new Date().toISOString();

done({ response_body: body });

Utility-Funktionen

Die folgenden Dienstprogrammfunktionen sind in beiden Skripttypen verfügbar:

FunctionBeschreibung
console.log()Gibt eine Debugging-Meldung aus.

Bringen Sie Ihren eigenen LLM-Connector-Anwendungsfall ein

Wenn Sie einen Connector für einen LLM-Anbieter erstellen – z. B. ein selbst gehostetes Modell oder einen Inferenzendpunkt eines Drittanbieters – können Sie mit Global Scripts Anforderungen und Antworten so anpassen, dass sie dem erwarteten Vertrag entsprechen, ohne jede Ressource einzeln zu ändern.

Tipp:

Bei gängigen LLM-Anbietern (AWS Bedrock, Azure OpenAI, Google Vertex AI, OpenAI V1 kompatibel) können Sie mit einer Connector-Vorlage beginnen, die das Authentifizierungssetup und die Skripte für Sie vorab ausfüllt. Weitere Informationen finden Sie unter Verwenden von Connector-Vorlagen.

Die folgenden Skripte zeigen eine vollständige Einrichtung vor und nach der Anforderung für dieses Szenario.

Voranforderung: Legen Sie Authentifizierungsheader fest

Fügen Sie den API-Schlüssel des Anbieters aus der Connector-Konfiguration ein und erzwingen Sie die erwartete Content-Type:

var headers = {
  'Content-Type': 'application/json',
  'x-api-key': configuration['api_key']
};

done({
  request_vendor_headers: headers,
  request_vendor_body: request_body_map
});
var headers = {
  'Content-Type': 'application/json',
  'x-api-key': configuration['api_key']
};

done({
  request_vendor_headers: headers,
  request_vendor_body: request_body_map
});

Voranforderung: Fügen Sie eine Systemnachricht ein

Legen Sie die Standard-Modellparameter fest und stellen Sie sicher, dass in jeder Konversation, die an das Modell gesendet wird, eine Systemmeldung vorhanden ist:

var body = typeof request_body_map === 'string'
  ? JSON.parse(request_body_map)
  : request_body_map;

body.max_tokens = body.max_tokens || 1024;
body.temperature = 0.7;

var hasSystemMessage = body.messages.some(function(msg) {
  return msg.role === 'system';
});

if (!hasSystemMessage) {
  body.messages.unshift({
    role: 'system',
    content: 'You are a helpful assistant.'
  });
}

done({
  request_vendor_headers: { 'Content-Type': 'application/json' },
  request_vendor_body: JSON.stringify(body)
});
var body = typeof request_body_map === 'string'
  ? JSON.parse(request_body_map)
  : request_body_map;

body.max_tokens = body.max_tokens || 1024;
body.temperature = 0.7;

var hasSystemMessage = body.messages.some(function(msg) {
  return msg.role === 'system';
});

if (!hasSystemMessage) {
  body.messages.unshift({
    role: 'system',
    content: 'You are a helpful assistant.'
  });
}

done({
  request_vendor_headers: { 'Content-Type': 'application/json' },
  request_vendor_body: JSON.stringify(body)
});

Nachanforderung: Verarbeiten Sie das Auswahl-Array

Iterieren Sie das choices -Array in der Anbieterantwort und fügen Sie benutzerdefinierte Metadaten hinzu, bevor Sie zum Workflow zurückkehren:

if (response_iserror) {
  done();
  return;
}

var body = typeof response_body === 'string'
  ? JSON.parse(response_body)
  : response_body;

if (body.choices && body.choices.length > 0) {
  body.choices.forEach(function(choice) {
    choice.processed_by = 'connector-post-script';
  });
}

body.custom_metadata = {
  processed: true,
  timestamp: new Date().toISOString()
};

done({ response_body: body });
if (response_iserror) {
  done();
  return;
}

var body = typeof response_body === 'string'
  ? JSON.parse(response_body)
  : response_body;

if (body.choices && body.choices.length > 0) {
  body.choices.forEach(function(choice) {
    choice.processed_by = 'connector-post-script';
  });
}

body.custom_metadata = {
  processed: true,
  timestamp: new Date().toISOString()
};

done({ response_body: body });

Best Practices

  • Immer done()aufrufen – ein Skript, das done() nicht aufruft, hängt die Anforderung auf.
  • Kopieren Sie Variablen vor dem Mutieren – die Laufzeit verwendet den strikten Modus. Zuerst eine lokale Variable zuweisen: var headers = request_vendor_headers;, dann ändern Sie headers.
  • Schreiben Sie keinen Code nach done() – er ist nicht erreichbar.
  • Prüfen Sie auf null oder undefinedrequest_body und request_vendor_body sind undefined für GET- und DELETE-Anforderungen.
  • Verwenden Sie continue: false zum Kurzschließen – geben Sie eine Antwort direkt zurück, ohne den Anbieter aufzurufen.

War diese Seite hilfreich?

Verbinden

Benötigen Sie Hilfe? Support

Möchten Sie lernen? UiPath Academy

Haben Sie Fragen? UiPath-Forum

Auf dem neuesten Stand bleiben