Skip to main content
Ein Code-Tool führt deinen JavaScript-Code aus, während der Agent telefoniert, und der Agent verwendet, was der Code zurückgibt. Ein Code-Block führt deinen JavaScript-Code als Schritt eines Workflows aus, und spätere Blöcke verwenden, was er zurückgibt. Nutze Code, wenn ein Custom HTTP Tool oder ein Block HTTP-Anfrage nicht ausreicht, zum Beispiel um mehrere Anfragen nacheinander zu senden, eine Anfrage zu signieren oder eine große Antwort auf die wenigen Werte zu kürzen, die der Agent braucht.
Code-Tools und Code-Blöcke sind in den Plänen Scale und Enterprise verfügbar.

Mit Charlie erstellen

Am schnellsten geht es mit Charlie. Beschreibe, was der Code tun soll, welche API er aufruft und welche Zugangsdaten er verwenden soll. Charlie schreibt den Code, richtet die Eingaben ein und verbindet die Zugangsdaten sowie die Salesforce- oder HubSpot-Verbindungen, die in deinem Konto bereits bestehen. Bei einem Code-Tool führt Charlie den Code anschließend mit Testwerten aus und zeigt dir, was der Agent erhalten würde. Die Testanfragen sind echt. Anfragen, die nur Daten lesen, führt Charlie ohne Rückfrage aus. Vor allem, was Daten anlegt, ändert oder löscht, eine Nachricht sendet oder einen Webhook aufruft, fragt Charlie dich zuerst.
Charlie-Chat, in dem auf die Bitte um ein Code-Tool zur Bestellabfrage ein erfolgreicher Testlauf und eine Zusammenfassung der Änderungen folgenCharlie-Chat, in dem auf die Bitte um ein Code-Tool zur Bestellabfrage ein erfolgreicher Testlauf und eine Zusammenfassung der Änderungen folgen

Charlie fügt ein Tool zur Bestellabfrage hinzu und testet es einmal

Einen Code-Block kann Charlie nicht ausführen. Nach einer Änderung bittet Charlie dich, den Workflow zu veröffentlichen und manuell auszuführen, und liest dann das Ergebnis dieser Ausführung. Charlie fragt im Chat nie nach einem API-Schlüssel oder Token. Füge diese selbst als geheime Eingabe oder Zugangsdaten hinzu.

Code schreiben

Der Code ist ein JavaScript-Modul, das eine asynchrone Funktion run exportiert. telli ruft sie mit einem Objekt auf: Ein Code-Tool kann jeden JSON-Wert zurückgeben; der Agent erhält ihn als Ergebnis des Tools. Ein Code-Block muss ein JSON-Objekt zurückgeben; spätere Blöcke lesen es als result. Wenn etwas fehlschlägt, wirf einen Error mit einer kurzen Nachricht, die sagt, was schiefgelaufen ist.
Der Code läuft auf dem Code-Runner von telli, nicht in einem Browser und nicht in Node.js:
  • Er kann Standard-Web-APIs nutzen, zum Beispiel fetch, URL, URLSearchParams, Headers, AbortSignal, TextEncoder, TextDecoder, crypto.subtle, crypto.randomUUID, atob und btoa. Anfragen erreichen jede öffentliche Adresse.
  • Er kann keine npm-Pakete oder anderen Module importieren.
  • Die Uhr läuft in UTC. Übergib beim Formatieren von Datumswerten timeZone an Intl.DateTimeFormat.
  • Variablen auf oberster Ebene können aus einer früheren Ausführung desselben Codes erhalten bleiben, aber auch jederzeit neu beginnen. Halte Werte, die sich ändern, innerhalb von run.
  • Ausgaben von console.log werden nirgends angezeigt. Gib zurück oder wirf, was du sehen musst.

Limits

Code-Tool hinzufügen

  1. Öffne den Agenten und gehe zu Tools → Code-Tools. Wähle Code-Tool hinzufügen….
  2. Schreibe den Code links im Editor Code.
  3. Lege im Tab Konfigurieren fest:
  4. Wähle Fertig und veröffentliche den Agenten. Erwähne das Tool im Prompt, wenn der Agent es nur unter bestimmten Bedingungen verwenden soll.
Ein Agent kann bis zu 5 Code-Tools haben.
Dialog eines Code-Tools mit JavaScript links und dem Tab Konfigurieren rechts mit Name, Beschreibung, einem LLM-Parameter orderId, den Zugangsdaten Shop API vom Typ Bearer token und einem Antwort-Timeout von 8 SekundenDialog eines Code-Tools mit JavaScript links und dem Tab Konfigurieren rechts mit Name, Beschreibung, einem LLM-Parameter orderId, den Zugangsdaten Shop API vom Typ Bearer token und einem Antwort-Timeout von 8 Sekunden

Ein Code-Tool mit einer Eingabe, Zugangsdaten und einem Antwort-Timeout von 8 Sekunden

Code-Tool testen

Öffne den Tab Test des Tools, fülle die Testeingaben aus und wähle Ausführen. telli speichert den Entwurf und führt dessen Code so aus wie ein Anruf. Geheime Eingaben und Zugangsdaten verwenden ihre gespeicherten Werte. Ein Testlauf sendet echte Anfragen: Was der Code in deinen Systemen anlegt, ändert oder löscht, passiert tatsächlich. Was der Agent erhält zeigt das Ergebnis oder die Nachricht, die der Agent bei einem Fehler bekäme. Nennt der Fehler eine Zeile deines Codes, springst du mit Gehe zu Zeile dorthin.
Tab Test eines Code-Tools nach einem fehlgeschlagenen Lauf mit der Fehlermeldung der Bestellabfrage, die der Agent erhalten würdeTab Test eines Code-Tools nach einem fehlgeschlagenen Lauf mit der Fehlermeldung der Bestellabfrage, die der Agent erhalten würde

Ein fehlgeschlagener Testlauf zeigt die Nachricht, die der Agent erhalten würde

Wenn ein Code-Tool im Anruf fehlschlägt

Der Agent erhält statt eines Ergebnisses eine Nachricht. Der Anruf geht weiter. Wirft dein Code einen Fehler, erhält der Agent The code failed while running: gefolgt vom Fehler, seiner Zeile und seinem Stack, gekürzt auf 1.000 Zeichen. Der Agent formuliert deine Nachricht für den Anrufer. Schreibe sie deshalb für den Agenten, zum Beispiel The order system returned 503. Tell the caller you cannot check the order right now. Für erwartete Ergebnisse, etwa wenn kein passender Datensatz existiert, gib ein Ergebnis mit einer Nachricht zurück, statt einen Fehler zu werfen. Hat eine Pflichteingabe keinen Wert, läuft der Code nicht und der Agent erhält Missing required value "<name>". Das passiert, wenn der Agent einen erforderlichen LLM-Parameter auslässt oder der Kontakt für eine erforderliche Kontakteigenschaft oder Systemvariable keinen Wert hat. Einen Wert, der beim Kontakt fehlt, kann der Anrufer nicht liefern. Fehlt der Wert bei manchen Kontakten, entferne bei der Eingabe das Häkchen Erforderlich und behandle den fehlenden Wert im Code. Erreicht der Code ein Limit oder lassen sich Zugangsdaten nicht laden, erfährt der Anrufer keine technischen Details. Der Agent sagt dem Anrufer, dass es gerade nicht möglich ist, und bietet andere Hilfe an. Der Grund bleibt im Testergebnis und im Anrufverlauf sichtbar: Der Agent liest höchstens etwa 100 KB eines Ergebnisses. Gib deshalb nur die Werte zurück, die er braucht. In Simulationen laufen Code-Tools nicht. Sie antworten mit der Antwort, die unter Tools in der Simulation festgelegt ist, oder mit einer generierten Antwort.

Code-Block hinzufügen

  1. Nutze im Workflow-Editor + auf der Zeichenfläche und wähle Dienstprogramme → Code.
  2. Wähle unter Eingaben Eingabe hinzufügen. Gib jeder Eingabe einen Namen und ordne ihr Workflow-Daten, einen festen Wert oder ein Geheimnis zu.
  3. Füge unter Zugangsdaten die Zugangsdaten hinzu, die der Code braucht.
  4. Schreibe den Code im Editor JavaScript. Gib ein JSON-Objekt zurück.
  5. Wähle in der Feldauswahl eines späteren Blocks result des Code-Blocks oder eines seiner Felder.
Workflow-Editor mit einem Trigger Kontakt erstellt und einem Code-Block; das Code-Panel zeigt eine Eingabe phone mit der Telefonnummer des Kontakts, die Zugangsdaten Shop API und JavaScriptWorkflow-Editor mit einem Trigger Kontakt erstellt und einem Code-Block; das Code-Panel zeigt eine Eingabe phone mit der Telefonnummer des Kontakts, die Zugangsdaten Shop API und JavaScript

Ein Code-Block, der einen neuen Kontakt an ein externes System sendet

Jede Ausführung eines Code-Blocks hat 28 Sekunden, abzüglich der Zeit, die das Laden seiner Zugangsdaten braucht. Ein Workflow kann bis zu 5 Code-Blöcke enthalten, jeder Code-Block bis zu 50 Eingaben.

Code-Block testen

Veröffentliche den Workflow, öffne Durchläufe → Manuell ausführen und starte ihn. Manuelle Ausführungen führen echte Aktionen aus, auch die Anfragen des Codes. In den Ausführungsdetails zeigt der Code-Schritt sein JavaScript, bei einem geworfenen Fehler den Fehler und sein Ergebnis unter Ausgaben → Ausgaben laden.

Wenn ein Code-Block fehlschlägt

Der Code-Schritt wird als fehlgeschlagen markiert, die Blöcke danach auf diesem Pfad laufen nicht, und die Ausführung endet als fehlgeschlagen. telli wiederholt den Schritt nicht. Die Ausführungsdetails nennen den Grund: Der Code hat einen Fehler geworfen, das Zeitlimit überschritten, zu viel CPU-Zeit gebraucht, keinen Speicher mehr gehabt, kein JSON-Objekt zurückgegeben, mehr als 1 MiB zurückgegeben, Code und Eingaben waren zusammen größer als 1 MiB, oder Zugangsdaten ließen sich nicht laden.

Geheimnisse und Zugangsdaten

Schreibe nie einen API-Schlüssel, Token oder ein Passwort in den Code oder in eine Eingabe vom Typ Konstante. Beide werden als Klartext gespeichert. Verwende stattdessen eine geheime Eingabe oder Zugangsdaten.
  • Geheime Eingabe: Füge eine Eingabe vom Typ Geheim hinzu. Der Wert wird beim Speichern verschlüsselt, und der Code liest ihn wie jede andere Eingabe.
  • Zugangsdaten: Wähle unter Zugangsdaten + Hinzufügen und wähle Zugangsdaten aus Einstellungen → Entwickler oder deine Salesforce- oder HubSpot-Verbindung aus Einstellungen → Integrationen. Gib ihnen einen Namen; der Code liest sie als credentials.<name>.
Zugangsdaten kommen in einer dieser Formen an: telli holt vor der Ausführung für jede Salesforce- oder HubSpot-Verbindung einen Token. Er bleibt die ganze Ausführung über gültig, der Code muss ihn also nie erneuern. Ein Code-Tool oder Code-Block kann bis zu 10 Zugangsdaten verwenden. Wenn deine Salesforce-Org Anmeldungen auf IP-Bereiche beschränkt oder Sitzungen an eine IP-Adresse bindet, lehnt Salesforce den Token ab, sobald der Code ihn verwendet. telli ersetzt im Ergebnis und in Fehlermeldungen jeden Wert einer geheimen Eingabe und jeden Token oder jedes Geheimnis von Zugangsdaten durch [redacted]. Dabei findet telli nur den exakten Wert: Ein Geheimnis, das der Code kürzt, kodiert oder verändert, bleibt lesbar. Gib nie ein Geheimnis zurück und wirf es nie in einem Fehler.