UiPath Documentation
integration-service
latest
false
Integration Service-Benutzerhandbuch
Wichtig :
Dieser Inhalt wurde maschinell übersetzt. Die Connector-Pakete, die in Integration Service verfügbar sind, werden maschinell übersetzt. Es kann 1–2 Wochen dauern, bis die Lokalisierung neu veröffentlichter Inhalte verfügbar ist.

Globale Skripte

Configure Global Scripts in Connector Builder to run JavaScript before or after every API request for consistent request and response processing.

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

Scripts for a single resource

Each resource also has its own Scripts tab, alongside Parameters, Request fields, Response fields, and Activity designer. It provides the same Pre-request script and Post-request script editors, the same snippets, and the same variables and done() contract as the connector-level Global Scripts tab.

The difference is scope:

  • A script on the Global Scripts tab runs for every request the connector makes.
  • A script on a resource's Scripts tab runs only for that resource.

Use a resource script when the logic applies to one endpoint, and a global script when it applies to the whole connector.

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.

Scripts run in a sandboxed JavaScript environment, with no network access and no way to import packages.

Standard JavaScript built-ins are available: JSON, Date, Array, Object, URL, encodeURIComponent, URLSearchParams, TextEncoder, TextDecoder, btoa, atob, crypto, Blob, FormData, Headers, Intl, and BigInt.

Wichtig:

Buffer is not available. Use btoa and atob for base64 encoding instead.

The following are not available in the sandbox:

KategorieNicht verfügbar
Evaluation and importseval, any require() call, a top-level import or export statement, a dynamic import(...) expression
Netzwerkfetch, XMLHttpRequest, WebSocket
Timers and workerssetTimeout, setInterval, setImmediate, Worker, importScripts, postMessage
Runtime and globalsDeno, process, globalThis, self, window, WebAssembly, Buffer

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

Select Snippets in the script panel to insert code templates into the active script editor.

The Pre-request script panel offers the following templates, grouped under Prerequest scripts:

  • Update provider URL — Sets request_vendor_path to a full URL, replacing the provider URL for that request.
  • Use a configuration — Reads a value from configuration (the connector's base URL, in the sample) and sends it to the provider as a request header.
  • Skip a provider request — Sets continue to false so the request is never sent to the provider.

The Post-request script panel offers the following templates, grouped under Postrequest scripts:

  • Update the response body — Copies response_body into a local variable, adds a field to it, and returns the modified body.
  • SR metadata generation from vendor metadata — Builds standard resource field metadata from a vendor metadata response, deriving each custom field's type, format, display name, description, supported methods, and enum values.

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