- Erste Schritte
- Benachrichtigungen
- Lizenzierung
- Fehlersuche und ‑behebung
- Connector Builder
- Über Connector Builder
- Erstellen Ihres ersten Connectors
- Erstellen Ihres Connectors aus einer API-Definition
- Konfigurieren der Authentifizierung
- Verwenden von Variablen im Connector-Generator
- Aktivitätsdesigner
- Erstellen eines Triggers
- Globale Skripte
- Checkliste für den Connector Builder
- Erste Schritte
- Beispiel A: Erstellen Sie einen Connector aus einer leeren Canvas mit Authentifizierung mit persönlichem Zugriffstoken
- Beispiel B: Erstellen Sie einen Connector aus einer leeren Canvas mit API-Schlüsselauthentifizierung
- Beispiel C: Erstellen eines Connectors aus einer API-Spezifikation mit OAuth 2.0 Client-Anmeldeinformationenauthentifizierung
- Act! 365
- ActiveCampaign
- Active Directory – Vorschau
- Adobe Acrobat Sign
- Adobe PDF Services
- Amazon Bedrock
- Amazon Connect
- Amazon Polly
- Amazon SES
- Amazon Transcribe
- Amazon Web Services
- Anthropic Claude
- Asana
- AWeber
- Azure AI Document Intelligence
- Azure Defender for Cloud
- Azure Maps
- BambooHR
- Box
- Brevo
- Calendly
- Campaign Monitor
- Cisco Webex Teams
- Citrix Hypervisor
- Citrix ShareFile
- Clearbit
- Confluence Cloud
- Constant Contact
- Coupa
- Team AI – Vorschau
- Customer.io
- Database Hub
- Databricks-Agent
- Datadog
- DeepSeek
- Deputy
- Discord – Vorschau
- DocuSign
- Drop
- Dropbox
- Dropbox Business
- Egnyte
- Eventbrite
- Wechselkurse
- Exchange Server – Vorschau
- Expensify
- Facebook
- Freshbooks
- Freshdesk
- Freshsales
- Freshservice
- GetResponse
- GitHub
- Gmail
- Google Cloud Platform
- Google Docs
- Google Drive
- Google Formulare – Vorschau
- Google Maps
- Google Tabellen
- Google Sprache-zu-Text
- Google Text-to-Speech
- Google Tasks – Vorschau
- Google Vertex
- Google Vision
- Google Workspace
- GoToWebinar
- Greenhouse
- Hootsuite
- http
- HTTP-Webhook
- Hubspot CRM
- HubSpot Marketing
- HyperV – Vorschau
- Icertis
- iContact
- Insightly CRM
- Intercom
- Jina.ai
- Jira
- Keap
- Klaviyo
- LinkedIn
- E-Mail (Mail)
- Mailchimp
- Mailgun
- Mailjet
- MailerLite
- Marketo
- MCP
- Microsoft 365
- Microsoft Azure
- Microsoft Azure Active Directory
- Microsoft Azure AI Foundry
- Microsoft Azure OpenAI
- Microsoft Azure Sentinel
- Microsoft Dynamics 365 CRM
- Microsoft OneDrive und SharePoint
- Microsoft Outlook 365
- Microsoft Power Automate – Vorschau
- Microsoft Sentiment
- Microsoft Sentinel-Threat Intelligence
- Microsoft Teams
- Microsoft Translator
- Microsoft Vision
- Miro
- NetIQ eDirectory
- NVIDIA NIM
- Okta
- OpenAI
- OpenAI V1-konformes LLM
- Oracle Eloqua
- Oracle NetSuite
- PagerDuty
- Paypal
- PDFMonkey
- Perplexity
- Pinecone
- Pipedrive
- QuickBooksOnline
- Quip
- Salesforce
- Salesforce AgentForce und Flows – Vorschau
- Salesforce Marketing Cloud
- SAP BAPI
- SAP Cloud for Customer
- SAP Concur
- SAP OData
- SendGrid
- ServiceNow
- Shopify
- Slack
- SmartRecruiters
- Smartsheet
- Snowflake
- Snowflake Cortex
- Stripe
- Sugar Enterprise
- Sugar Professional
- Sugar Sell
- Sugar Serve
- System Center – Vorschau
- TangoCard
- Todoist
- Trello
- Twilio
- UiPath Apps - Preview
- UiPath Data Fabric
- UiPath Test Manager
- UiPath GenAI-Aktivitäten
- UiPath Orchestrator
- X (früher Twitter)
- Xero
- wassonx.ai zu senden
- WhatsApp Business
- WooCommerce
- Durchführbar
- Workday
- Workday REST
- VMware ESXi vSphere
- YouTube
- Zendesk
- Zoho Campaigns
- Zoho-Desktop
- Zoho Mail
- Zoom
- ZoomInfo
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:
- Öffnen Sie im Integration Service den Connector-Generator und wählen Sie Ihren benutzerdefinierten Connector aus.
- Wählen Sie in der oberen Navigation Globale Skripte aus.
- 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.
Buffer is not available. Use btoa and atob for base64 encoding instead.
The following are not available in the sandbox:
| Kategorie | Nicht verfügbar |
|---|---|
| Evaluation and imports | eval, any require() call, a top-level import or export statement, a dynamic import(...) expression |
| Netzwerk | fetch, XMLHttpRequest, WebSocket |
| Timers and workers | setTimeout, setInterval, setImmediate, Worker, importScripts, postMessage |
| Runtime and globals | Deno, 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_pathto 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
continuetofalseso 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_bodyinto 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.
| Variable | Zugriff | Beschreibung |
|---|---|---|
request_method | Lesen | HTTP-Methode des API-Aufrufs (GET, POST usw.). |
request_vendor_method | Lesen und Schreiben | HTTP-Methode, die an den Anbieter übergeben wird. |
request_headers | Lesen | Anforderungsheader, die als Teil des API-Aufrufs übergeben wurden. |
request_vendor_headers | Lesen und Schreiben | Header, die an den Anbieter gesendet werden. |
request_path | Lesen | Anforderungspfad des API-Aufrufs. |
request_vendor_path | Lesen und Schreiben | Anforderungspfad, der an den Anbieter gesendet wird. Wenn der Pfad mit http beginnt, wird er als vollständige Anforderungs-URL verwendet. |
request_path_variables | Lesen | Aus der URL-Vorlage extrahierte Pfadvariablen. |
request_parameters | Lesen | Abfrageparameter, die als Teil des API-Aufrufs übergeben werden. |
request_vendor_parameters | Lesen und Schreiben | Abfrageparameter, die an den Anbieter gesendet werden. |
request_body | Lesen | Anforderungstext, der als Teil des API-Aufrufs als Zeichenfolge übergeben wurde. |
request_body_raw | Lesen | Der Anforderungstext wurde als Teil des API-Aufrufs als unverarbeitete Zeichenfolge übergeben. |
request_vendor_body | Lesen und Schreiben | Anforderungstext, der an den Anbieter gesendet wird. Akzeptiert Zeichenfolge, Liste oder Zuordnung beim Schreiben. |
request_body_map | Lesen | Anforderungstext, der als Teil des API-Aufrufs als Zuordnung übergeben wurde. |
request_vendor_body_map | Lesen | Anforderungstext, der als Zuordnung an den Anbieter gesendet wird. |
request_vendor_url | Lesen | Vollständige Endpunkt-URL, die für den Anbieteraufruf verwendet wird. |
request_expression | Lesen | CEQL-Parameter where in eine Liste von {attribute, value, operator} -Zuordnungen konvertiert. |
request_previous_response | Lesen | Antworttext der vorherigen verketteten Ressource. null wenn es nicht Teil einer Kette ist. |
request_previous_response_headers | Lesen | Antwortheader von der vorherigen verketteten Ressource. null wenn es nicht Teil einer Kette ist. |
request_root_key | Lesen und Schreiben | dot-notation-Pfad zum Erstellen eines Unterobjekts in der JSON-Nutzlast der Anforderung (z. B data.record). |
object_name | Lesen | kanonischer Objektname für die Anforderung. |
vendor_object_name | Lesen | Name des Anbieterobjekts. Entspricht object_name , es sei denn, er wird auf der Ressource überschrieben. |
configuration | Lesen | Eigenschaften der Connector-Konfiguration. |
response_status_code | Schreiben | HTTP-Statuscode, der zurückgegeben werden soll, wenn continue false ist. |
response_error_message | Schreiben | Fehlermeldung, die zurückgegeben werden soll, bevor die Anforderung an den Anbieter gesendet wird. |
response_body | Schreiben | Antworttext, der zurückgegeben werden soll, wenn continue false ist. |
response_body_raw | Schreiben | Antworttext als Zeichenfolge, die zurückgegeben werden soll, wenn continue false ist. |
response_root_key | Lesen und Schreiben | .Pfad zur Beschränkung der Antwort auf ein Unterobjekt (z. B data.records). |
multipart_hook_context_items | Lesen und Schreiben | Mehrteilige Formularelemente für Dateiuploadanforderungen. |
continue | Schreiben | Auf 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.
| Variable | Zugriff | Beschreibung |
|---|---|---|
response_iserror | Lesen | true wenn die Anbieterantwort einen Fehler anzeigt (Statuscodes außerhalb von 200–207). |
response_status_code | Lesen und Schreiben | HTTP-Statuscode des Anbieters. |
response_body | Lesen und Schreiben | Antworttext des Anbieters. |
response_body_raw | Lesen und Schreiben | Unformatierter Antworttext des Anbieters als Zeichenfolge. |
response_body_raw_map | Lesen | Unformatierter Antworttext des Anbieters als Zuordnung. |
response_body_map | Lesen | Antworttext des Anbieters als Zuordnung. |
response_headers | Lesen und Schreiben | Antwortheader des Anbieters. |
response_error_message | Schreiben | Fehlermeldung, die zurückgegeben werden soll. Konvertiert die Antwort in einen Fehler. |
response_root_key | Lesen und Schreiben | .Pfad zur Beschränkung der Antwort auf ein Unterobjekt (z. B data.records). |
configuration | Lesen und Schreiben | Eigenschaften der Connector-Konfiguration. Änderungen bleiben auf der Connector-Instanz bestehen. |
multipart_hook_context_items | Lesen und Schreiben | Mehrteilige Formularelemente für Dateiuploadanforderungen. |
metadata_merge | Schreiben | Auf true festlegen, um Anbietermetadaten mit Modellmetadaten zu kombinieren. |
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:
| Function | Beschreibung |
|---|---|
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.
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, dasdone()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 Sieheaders. - Schreiben Sie keinen Code nach
done()– er ist nicht erreichbar. - Prüfen Sie auf
nulloderundefined–request_bodyundrequest_vendor_bodysindundefinedfür GET- und DELETE-Anforderungen. - Verwenden Sie
continue: falsezum Kurzschließen – geben Sie eine Antwort direkt zurück, ohne den Anbieter aufzurufen.
- Verwendung von globalen Skripts
- Scripts for a single resource
- Schreiben von Skripten
- Die
done()-Funktion - Verwenden von Snippets
- Voranforderungsskripts
- Beispiel: Fügen Sie einen dynamischen Header aus der Konfiguration ein
- Beispiel: Überschreiben Sie den URL-Pfad des Anbieters
- Beispiel: Ändern Sie den Anforderungstext
- Skripte nach der Anforderung
- Beispiel: Transformieren Sie den Antworttext
- Utility-Funktionen
- Bringen Sie Ihren eigenen LLM-Connector-Anwendungsfall ein
- Voranforderung: Legen Sie Authentifizierungsheader fest
- Voranforderung: Fügen Sie eine Systemnachricht ein
- Nachanforderung: Verarbeiten Sie das Auswahl-Array
- Best Practices