Workflows
Ein Workflow ist eine visuelle Karte dessen, was Ihr Agent Schritt für Schritt tun soll — wer zuerst spricht, was zu fragen ist, wann verzweigt wird, wann der Anruf weitergeleitet wird und wann der Anruf an einen anderen Agenten übergeben wird. Sie bauen ihn auf einer Leinwand, indem Sie Knoten platzieren und verbinden.
Verwenden Sie einen Workflow, wenn ein einzelnes Prompt nicht ausreicht — wenn der Anruf klare Phasen hat („zuerst qualifizieren, dann Daten erfassen, dann entweder buchen oder weiterleiten"), wenn Sie deterministisches Routing auf Basis der Antworten des Anrufers benötigen (nicht „die KI macht es meistens richtig") oder wenn ein Agent einen Teil der Arbeit an einen Spezialisten abgeben soll.
Ein Prompt ist eine lange Anweisung. Der Agent liest sie einmal und nutzt sie für das gesamte Gespräch. Ein Workflow besteht aus vielen kleinen Anweisungen, eine pro Knoten, mit expliziten Übergängen dazwischen. Der Graph steuert das Gespräch — der Agent auf jedem Knoten besitzt nur seinen Ausschnitt.
Wenn Ihr Agent bereits gut mit einem einzelnen Prompt funktioniert, brauchen Sie keinen Workflow. Greifen Sie zu Workflows, wenn Sie immer mehr „wenn X dann Y"-Regeln zum Prompt hinzufügen und sie nicht mehr zuverlässig funktionieren.
Der Editor
Der Workflow-Editor lebt in einem eigenen Tab auf der Agentenseite. Sie sehen eine Leinwand mit einem Start-Knoten und einem End-Knoten standardmäßig. Sie fügen Knoten aus der Werkzeugleiste hinzu, ziehen sie auf die Leinwand und verbinden sie mit Kanten.
Das rechte Panel wechselt je nach Auswahl:
- Klick auf einen Knoten — öffnet sein Einstellungspanel (Prompt, Felder, Retrieval-Variablen usw.).
- Klick auf eine Kante — öffnet ihre Trigger-Einstellungen (AI decides / Condition / Always).
- Das Variables-Panel (Werkzeugleisten-Schaltfläche) listet jede Variable, die der Workflow deklariert oder nutzt, mit Ein-Klick-Sprung zu dem Knoten, der sie setzt oder liest.
Führen Sie einen In-Browser-Test-Call direkt aus dem Editor aus — eine leuchtende „Glühwürmchen"-Markierung verfolgt die Live-Position, sodass Sie genau sehen können, welcher Knoten in jedem Moment aktiv ist.
Undo / Redo (v2.8) — der Editor hält eine Historie von bis zu 20 Schritten vor, sodass Sie einen falschen Zug zurücknehmen (oder wiederholen) können, ohne neu zu bauen. Das Löschen eines Knotens erfragt zuerst eine Bestätigung (v2.8), damit Sie keinen Schritt durch einen versehentlichen Klick verlieren.
Sie müssen nicht von einer leeren Leinwand starten. Der Einstiegspunkt „build as workflow" legt einen Workflow für den Agenten an und bringt Sie direkt in den Builder — eine Aktion erstellt den Workflow und öffnet den Editor, bereit zum Hinzufügen von Knoten.
Workflows haben drei Status:
- Draft — bearbeitbar, noch nicht live. Verwenden Sie Test Call zum Ausprobieren.
- Active — live für echte Anrufe. Der Agent verwendet diesen Workflow ab dem nächsten Anruf.
- Template — wiederverwendbare Vorlage, nie direkt mit einem Agenten verbunden. Sie können sie auf mehrere Agenten instanziieren.
Knoten
Jeder Knoten ist ein Schritt im Gespräch. Verschiedene Knotentypen tun verschiedene Dinge — einige sprechen, einige hören zu, einige routen, einige führen Tools aus.
Agent
Der Agent-Knoten ist das Herz einer Workflow-Phase. Wenn der Graph einen Agent-Knoten erreicht, übernimmt dieser Agent das Wort und führt das Gespräch, bis ein Übergang ausgelöst wird.
Sie konfigurieren Persona und Aufgabe des Agent-Knotens direkt auf der Leinwand (der Prompt-Tab öffnet sich beim Klick auf den Knoten) — dies ist der Prompt für diesen Ausschnitt des Gesprächs, nicht für den gesamten Anruf. Sie können auch Knowledge Bases und Tools pro Knoten anhängen.
Greeting — die Eröffnungszeile. Wenn dies der Einstiegsknoten ist (der erste Stopp nach Start), hört der Anrufer dies zuerst.
Wenn ein Graph einen Anruf steuert, wird der Prompt des aktiven Knotens über den Basis-Prompt des Agenten gelegt (den aus dem Model-Tab). Der Graph besitzt Persönlichkeit und Aufgabe für jede Phase, während die Basisanweisungen des Agenten als Fundament erhalten bleiben.
Subagent
Ein Subagent ist ein Helfer, der inline läuft — er übernimmt das Gespräch für eine fokussierte Aufgabe und gibt das Ergebnis dann an den Auftraggeber zurück.
Subagenten eignen sich, wenn ein Arbeitsschritt wiederverwendbar oder klar abgegrenzt ist: „Identität des Anrufers verifizieren", „Lieferadresse erfassen", „Lead mit SPIN-Methode qualifizieren". Der Eltern-Agent ruft den Subagenten auf, der Subagent erledigt seine Aufgabe und meldet ein Ergebnis, der Eltern-Agent macht weiter.
Subagent-Knoten haben dieselben Tabs wie ein Agent-Knoten (Prompt, Knowledge, Tools, Actions) — der Editor erstellt automatisch einen versteckten Backing-Agenten für Sie. Sie sehen diesen versteckten Agenten nicht in Ihrer Hauptliste, und er zählt nicht gegen das Agenten-Limit Ihres Tarifs.
Return variable — das Feld zum Speichern des Subagent-Ergebnisses (z. B. identity_verified, lead_score).
Wer zuerst spricht
Standardmäßig eröffnet ein Subagent seinen Turn, indem er spricht — er begrüßt oder stellt seine erste Frage, sobald er übernimmt. Zwei Schalter ändern das:
- Wait for the caller (don't speak first) — der Subagent bleibt beim Eintritt still und antwortet erst, wenn der Anrufer etwas sagt. Aktivieren Sie das, wenn der Subagent der erste Stopp im Anruf ist und Sie wollen, dass der Anrufer beginnt (ein echtes „Hallo?") statt der Agent eröffnet — oder mitten im Anruf, wenn der vorherige Schritt bereits alles gesagt hat und der Subagent nur noch auf die Antwort hören soll.
- Silent step (don't speak) — der Subagent spricht überhaupt nicht. Er liest das bisherige Gespräch, entscheidet ein Ergebnis und gibt die Kontrolle direkt zurück. Verwenden Sie ihn als unsichtbaren Router: „lies, was der Anrufer gefragt hat, und entscheide, welche Abteilung das ist" — kein Wort gesprochen, nur eine Entscheidung, auf die der Graph verzweigt.
Allowed result values
Ein Subagent endet normalerweise mit dem Wert, den er für angemessen hält. Wenn Sie auf dieses Ergebnis mit Condition-Kanten verzweigen wollen, pinnen Sie es stattdessen auf eine geschlossene Liste erlaubter Werte:
- Listen Sie jeden erlaubten Wert unter Allowed result values auf (z. B.
sales,support,billing). - Der Subagent muss mit genau einem davon enden — er kann keinen neuen erfinden.
- Paaren Sie jeden Wert mit einer Condition-Kante (
result is "sales"→ …) für sauberes, vorhersehbares Routing.
Das ist der zuverlässige Weg, einen Subagenten entscheiden und routen zu lassen: Das Ergebnis matcht garantiert einen Ihrer Zweige.
Ein Subagent gibt ein einzelnes Ergebnis zurück, wenn er fertig ist. Verdrahten Sie, was als Nächstes passiert, mit Condition- oder Always-Kanten auf diesem Ergebnis — der Ausgang eines Subagenten verwendet keine „AI decides"-Kanten. Deshalb sind Allowed result values + Condition-Kanten das empfohlene Muster für einen routenden Subagenten.
Message
Der Message-Knoten spricht eine feste Zeile, kein KI-Turn, keine Improvisation. Verwenden Sie ihn für Übergänge („Einen Moment, ich leite Sie jetzt weiter…"), gesetzlich erforderliche Hinweise oder vorformulierte Bestätigungen, bei denen der Wortlaut zählt.
Text — was zu sprechen ist. Unterstützt {{variable}}-Tokens zum Einfügen erfasster Werte, z. B. "Danke {{first_name}}, ich habe Sie für {{appointment_time}} eingebucht."
Ein Message-Knoten verbraucht den Turn — der Agent fügt nichts darüber hinaus hinzu.
Gather input
Ein Gather input-Knoten stellt eine Frage und erfasst die Antwort des Anrufers in eine Variable.
Prompt — die zu stellende Frage. Unterstützt {{tokens}}.
Variable — der Name des Feldes, in dem die Antwort gespeichert wird.
Max silence (v2.8) — eine Obergrenze pro Frage, wie lange auf die Antwort des Anrufers gewartet wird, bevor es weitergeht. Legen Sie sie pro Gather-input-Knoten fest, sodass eine kurze Ja/Nein-Frage früher ablaufen kann als eine, bei der der Anrufer eine lange Kontonummer vorlesen soll.
Verwenden Sie ihn, wann immer Sie einen bestimmten Wert vor dem Weitermachen brauchen — E-Mail, Kontonummer, Personenzahl, Problemkategorie. Der nächste Turn des Anrufers wird zum Wert; Sie können direkt danach mit einer Condition-Kante darauf verzweigen.
Update state
Ein Update state-Knoten schreibt einen oder mehrere Werte in die Variablen des Workflows, ohne zu sprechen oder zu fragen. Verwenden Sie ihn, um Standardwerte voreinzustellen, Fortschritts-Flags zu markieren oder Werte aus vorherigen Schritten zu komponieren.
Variable / Value — ein Schlüssel-Wert-Paar. More variables (optional) — zusätzliche Schlüssel-Wert-Paare.
Sowohl Schlüssel als auch Werte unterstützen {{tokens}}, sodass Sie neue Werte aus bestehenden zusammensetzen können.
Condition
Der Condition-Knoten ist ein reiner Routing-Knoten — er spricht nicht, fragt nicht, sondern leitet den Anruf einfach den passenden ausgehenden Zweig entlang.
Die Bedingung selbst liegt auf jeder ausgehenden Kante, nicht auf dem Knoten — siehe Condition-Kanten unten.
Verwenden Sie einen Condition-Knoten, wenn Sie einen klaren „Fan-out"-Punkt in Ihrem Graph wollen: viele Zweige, die vom Wert einer Variable abhängen. Im Vergleich zum Anbringen von Bedingungen an Agent-Knoten-Kanten macht ein dedizierter Condition-Knoten die Routing-Logik visuell offensichtlich.
Tool
Der Tool-Knoten führt eines der verbundenen Tools des Agenten als Graph-Schritt aus — ohne dass die KI mitentscheidet, ob es aufgerufen wird. Verwenden Sie ihn, wenn Sie einen Fakt wollen, kein Gespräch: „diesen Kunden nachschlagen", „Bestand prüfen", „aktuelles Wetter per GET abrufen".
Sie können entweder:
- Eines der bestehenden Tools des Agenten wählen (Kalenderabfrage, Knowledge-Base-Suche, eine spezifische Integrations-Aktion) oder
- Einen Inline-HTTP-Aufruf direkt auf dem Knoten konfigurieren (URL, Methode, Header, Parameter, Body).
Die Antwort des Tools wird für alle nachgelagerten Knoten verfügbar. Wenn die Antwort ein JSON-Objekt ist, wird jedes Top-Level-Feld zu einer eigenen Variable — eine Antwort wie {"is_known": true, "tier": "gold"} schreibt sowohl is_known als auch tier, auf die Sie verzweigen können.
Jedes Textfeld am Tool-Knoten — URL, Header-Werte, Body — unterstützt {{tokens}}. Ziehen Sie eine Variable in einen URL-Pfad, einen Header oder einen Request-Body, ohne Code zu schreiben.
Wenn ein Tool-Aufruf fehlschlägt (HTTP-Fehler, Timeout, Netzwerk), wird der Fehler geloggt und der Graph läuft weiter — ohne die Daten. Planen Sie Ihre nachgelagerten Bedingungen so, dass sie den „kein Wert"-Fall behandeln.
Knowledge (RAG)
Der Knowledge (RAG)-Knoten ist eine Tool-Variante mit Fokus auf Abruf aus der Knowledge Base. Wählen Sie eine der Knowledge Bases des Agenten, formulieren Sie eine Suchanfrage (gerne mit {{tokens}}), und der Knoten führt die Abfrage als Graph-Schritt aus.
Verwenden Sie ihn, wenn der Workflow etwas nachschlagen soll, bevor ein Agent-Knoten spricht — z. B. die letzte Bestellung des Kunden abrufen, damit der nächste Agent-Knoten sie erwähnen kann, ohne fragen zu müssen. Der abgerufene Inhalt landet in einer Variable, die Sie in Prompts und Nachrichten einbinden können.
Integration
Der Integration-Knoten ist eine fokussierte Variante von Tool für verbundene externe Dienste — Google Calendar, Outlook, HubSpot. Sie wählen den Provider und die spezifische Aktion (z. B. check_availability, create_event), setzen die Parameter, und der Knoten ruft die Integration deterministisch auf.
Wenn die Integration auf diesem Agenten nicht verbunden ist, läuft der Knoten ohne etwas zu tun durch — Ihr Graph macht weiter. Prüfen Sie nachgelagerte Bedingungen auf den „nicht gelaufen"-Fall.
Phone transfer
Der Phone transfer-Knoten leitet den Anruf an eine externe Telefonnummer weiter (warm transfer). Nach erfolgreicher Weiterleitung hat der Anruf Ihren Workflow verlassen — Ihr Agent ist nicht mehr in der Leitung.
Number — Ziel im internationalen Format mit führendem + (z. B. +15551234567). Unterstützt {{tokens}}, sodass das Ziel aus einem früheren Schritt stammen kann (z. B. die Antwort auf „mit welchem Büro sollen wir Sie verbinden?").
Wenn die Weiterleitung nicht zustande kommt (ungültige Nummer, keine Antwort, Telefonanbindung nicht eingerichtet), rollt der Graph zurück und der aktuelle Agent bleibt in der Leitung. Das Gespräch läuft normal weiter — der Agent kann sich entschuldigen und einen anderen Weg versuchen.
End call
Der End call-Knoten schließt ab — der Agent spricht den konfigurierten Abschiedstext und legt dann auf. Verwenden Sie ihn als sauberen Abschluss für „alles erledigt"-Zweige oder für den „wir können leider nicht helfen"-Zweig aus einer schwer behandelbaren Condition.
Keine Konfiguration nötig außer einer eingehenden Kante.
Workflow wiederverwenden (Sub-workflow)
Ein Sub-workflow-Knoten ist für das Einbetten eines anderen Workflows als Sub-Graph reserviert. Dieser Knoten ist im Editor, aber noch nicht vollständig verdrahtet — der Graph läuft hindurch, ohne etwas zu tun. Verlassen Sie sich für Produktionsanrufe noch nicht darauf. Wir schalten ihn ein, sobald wiederverwendbare Sub-Graphen released sind.
Kanten (Verbindungen)
Sie verbinden einen Knoten mit dem nächsten über eine Kante. Der Trigger der Kante entscheidet, wann der Übergang ausgelöst wird.
Es gibt drei Trigger:
| Trigger | Wer entscheidet | Wann er auslöst |
|---|---|---|
| AI decides | Die KI | Wenn das Gespräch es zum natürlichen nächsten Schritt macht. Die KI bekommt ein „Übergangs-Tool" zum Aufrufen. |
| Condition | Die Laufzeit | Wenn eine Variable einer von Ihnen geschriebenen Regel entspricht. Wird vor der KI-Antwort ausgewertet. |
| Always | Die Laufzeit | Bedingungslos — sobald der Quell-Knoten fertig ist. Kein Anrufer-Input, keine KI-Beteiligung. |
AI decides (intent-basiert)
Verwenden Sie AI decides, wenn nur die KI weiß, wann gewechselt werden muss — „wenn der Anrufer nach Preisen fragt, an den Vertriebs-Agenten weiterleiten", „wenn es nach Beschwerde klingt, den Entschuldigungs-Subagenten ausführen".
Sie schreiben eine kurze Intent-Beschreibung auf der Kante (z. B. „Anrufer fragt nach Preisen oder will upgraden"). Die KI sieht es als ein mit diesem Intent beschriftetes Tool und entscheidet basierend auf dem Gespräch, ob sie es aufruft. Bei mehreren AI-decides-Kanten wählt die KI höchstens eine pro Turn.
Condition (deterministische Verzweigung)
Verwenden Sie Condition, wenn der Graph — nicht die KI — basierend auf einem bekannten Fakt entscheiden soll: „wenn lead_score is more than 7, zum Abschluss-Agenten; sonst, höflich beenden".
Bedingungen werden vor der KI-Antwort ausgewertet, also gewinnen sie immer gegen die KI auf diesem Turn. Die KI darf eine matchende Bedingung nicht überstimmen.
Sie können eine Bedingung aus diesen Operatoren bauen:
| Operator | Bedeutung | Beispiel |
|---|---|---|
| is | exakte Übereinstimmung (case-insensitive bei Text) | intent is "billing" |
| is not | stimmt nicht überein | status is not "active" |
| contains | Substring-Match (case-insensitive) | feedback contains "broken" |
| is more than | numerisch > | lead_score is more than 7 |
| is less than | numerisch < | wait_minutes is less than 5 |
Sie können Klauseln auch mit All (jede Klausel muss matchen — UND) oder Any (mindestens eine muss matchen — ODER) kombinieren und verschachteln. Eine Regel wie „der Anrufer ist bekannt und sein Tier ist gold oder premium" wird zu:
All:
- is_known is true
- Any:
- tier is gold
- tier is premium
Wenn Sie eine noch nicht gesetzte Variable referenzieren (z. B. die KI hat sie nie erfasst), schlagen Bedingungen darauf immer fehl — sie werfen keinen Fehler, sie matchen einfach nicht. So gibt loyalty_tier is "gold" false zurück, wenn loyalty_tier nie gesetzt wurde. Bauen Sie Ihre Zweige so, dass sie das behandeln — meist mit einem Else-Zweig (siehe unten).
Else-Zweig — wenn keine Bedingung matcht
Wenn Sie mehrere Condition-Kanten von einem Knoten haben und keine matcht, fällt der Anruf auf die niedrigst-priorisierte Nicht-Condition-Kante zurück (Always oder eine AI-decides-Kante). Wenn es überhaupt keinen Fallback gibt, übernimmt die KI wieder die Kontrolle und kann frei weitermachen.
Übliches Muster: mehrere Conditions für die bekannten Pfade plus eine Always-Kante zu einem Catch-all (eine Message, dann End call oder weiterleiten).
Always (Auto-Advance)
Verwenden Sie Always, wenn der nächste Schritt bedingungslos ist — keine Entscheidung, kein Anrufer-Input. Zwei natürliche Anwendungen:
- Schritte verketten: Message → Update state → Message → Tool → Condition. Jeder Schritt endet und die Always-Kante macht sofort weiter.
- Auto-Advance nachdem der Agent fertig gesprochen hat: ein Agent-Knoten mit einer Always-Ausgangskante bedeutet „sobald die KI aufhört zu sprechen, mach weiter" — kein Anrufer-Input nötig. Nützlich für Monolog-Flows wie ein Präsentations-Agent, der etwas liefert und dann zum nächsten Abschnitt übergeht.
Condition und Always (die deterministischen) gewinnen immer gegen AI decides. Wenn eine Condition matcht, werden die Übergangs-Tools der KI für diesen Turn ignoriert. Das erlaubt Ihnen, Regeln zu schreiben, die die KI nicht umgehen kann.
Reihenfolge der Zweige
Wenn mehrere Kanten denselben Knoten verlassen, können Sie im Editor eine Priorität festlegen, indem Sie die Zeilen nach oben oder unten ziehen. Zweige mit niedrigerer Priorität werden zuerst geprüft. Das spielt nur eine Rolle, wenn zwei Zweige im selben Turn auslösen könnten — typischerweise zwei Condition-Kanten mit überlappenden Regeln. Der erste passende Zweig gewinnt.
Carry context — wie viel der nächste Agent erinnert
Jede Kante hat eine Carry context-Einstellung, die steuert, wie viel vom Gesprächs-Transkript der nächste Knoten sieht:
- Full transcript (Standard) — der nächste Agent sieht alles bisher Gesagte.
- Summary only — die Plattform fasst das bisherige Gespräch zusammen und übergibt dem nächsten Agenten eine kurze Zusammenfassung.
- Nothing — der nächste Agent startet frisch, ohne vorheriges Transkript.
Verwenden Sie Summary only bei der Übergabe an einen Spezialisten-Agenten, der nicht jedes Wort braucht — das spart Tokens und hält den neuen Agenten fokussiert. Verwenden Sie Nothing für Zweige, bei denen die Persona des neuen Agenten getrennt sein soll (z. B. eine Zufriedenheitsumfrage am Ende des Anrufs).
Variablen
Variablen sind das Gedächtnis des Workflows. Die meisten Dinge in einem Workflow drehen sich darum, eine Variable zu setzen oder eine zu lesen.
Variablen deklarieren
Das Variables-Panel (Werkzeugleisten-Schaltfläche) zeigt jede Variable des Workflows mit den Schritten, die sie setzen oder lesen. Klicken Sie auf eine Variable, um zum Setter zu springen; das ist der schnellste Weg zu finden, wo etwas schief geht.
Sie können eine Variable mit einem Standardwert deklarieren im Panel — nützlich für Flags wie escalated=false, die von Anfang an existieren müssen, damit Ihre Bedingungen nicht heimlich auf „fehlt" fehlschlagen.
Eingebaute Variablen
Eine Reihe von Variablen wird für Sie gefüllt — Sie deklarieren und setzen sie nie, sie sind einfach da. Der Abschnitt Eingebaute Variablen im Variablen-Bereich listet alle auf; ein Klick kopiert das Token, das Sie dann in jedes Feld einfügen können.
Sie kommen in vier Gruppen, und die Gruppe ist wichtig, weil sie bestimmt, wann der Wert existiert.
Der Anruf — bekannt, bevor der Agent ein Wort sagt:
| Variable | Was drinsteht |
|---|---|
{{call_from}} | Die Nummer des Anrufers |
{{call_to}} | Die gewählte Nummer |
{{call_direction}} | inbound oder outbound |
{{customer_phone}} | Die Nummer des Kunden — der Anrufer bei eingehenden, der Angerufene bei ausgehenden Anrufen |
{{customer_email}} | Die E-Mail des Kunden, sofern bekannt |
Weil es diese vom ersten Moment an gibt, können Sie schon am allerersten Knoten danach verzweigen — eine Bedingung auf call_from, um einen bekannten VIP mit Namen zu begrüßen, nach Ländervorwahl zu routen oder unbekannte Nummern zuerst durch eine Prüfung zu schicken.
Der Kontakt — gefüllt, wenn der Anrufer einem Kontakt zugeordnet wird:
| Variable | Was drinsteht |
|---|---|
{{firstname}} / {{lastname}} | Name des Anrufers |
{{email}} | E-Mail des Anrufers |
{{phone}} | Telefon des Anrufers |
{{company}} | Firma des Anrufers |
Der Moment — bei jedem Lesen neu berechnet, eine Bedingung darauf heißt also „genau jetzt":
| Variable | Was drinsteht |
|---|---|
{{current_time}} | Uhrzeit jetzt, HH:MM, in der Zeitzone des Agenten |
{{current_date}} | Datum jetzt, YYYY-MM-DD |
{{current_datetime}} | Beides zusammen |
{{current_hour}} | Stunde, 00–23 — mit „ist größer/kleiner als" für Öffnungszeiten-Logik |
{{current_weekday}} | Wochentag (Monday…) |
{{session_duration}} | Bisherige Gesprächsdauer, m:ss |
{{session_duration_sec}} | Dasselbe in Sekunden — diese für numerische Vergleiche |
{{current_node}} | Name des laufenden Schritts |
{{previous_node}} | Name des Schritts, aus dem wir kamen |
{{current_hour}} und {{session_duration_sec}} sind die beiden, die sich wirklich lohnen: die eine schaltet einen Zweig nach Geschäftszeiten, ganz ohne Integration, die andere lässt Sie ein Gespräch abkürzen — „wenn wir über neun Minuten sind, zusammenfassen und weiterleiten".
Nach dem Anruf — diese sind während des Gesprächs leer und füllen sich erst, wenn es endet:
| Variable | Was drinsteht |
|---|---|
{{call_summary}} | KI-Zusammenfassung des Anrufs |
{{call_transcription}} | Vollständiges Transkript |
{{call_sentiment}} | Wie der Anruf verlaufen ist |
{{call_task_achieved}} | Ob das Ziel erreicht wurde (true/false) |
{{call_summary}} in einer E-Mail, die während des Anrufs rausgeht, ergibt eine leere Zeile — die Zusammenfassung existiert noch nicht. Um eine davon zu nutzen, schalten Sie am Sendeknoten Nach Anrufende senden ein. Siehe E-Mail, SMS und WhatsApp senden.
Wie Variablen gesetzt werden
| Quelle | Beispiel |
|---|---|
| Standardwerte (im Variables-Panel deklariert) | escalated = false gesetzt vor Anrufbeginn |
| Gather input | Die gesprochene Antwort des Anrufers wird in die Variable des Knotens erfasst |
| Update state | Sie schreiben einen Wert direkt (Literal oder mit {{tokens}} zusammengesetzt) |
| Tool / Integration-Ergebnis | Die gesamte Antwort wird unter dem Namen des Knotens gespeichert; ist die Antwort ein JSON-Objekt, wird jedes Top-Level-Feld zu einer eigenen Variable |
| Subagent-Rückgabe | Was auch immer der Subagent als Ergebnis liefert, wird in der Return-Variable des Subagent-Knotens gespeichert |
Variablen lesen — {{tokens}}
Überall, wo Sie auf einem Knoten Text eingeben können — Agent-Prompt, Message-Text, Gather-Prompt, Tool-URL/Body/Header, Phone-transfer-Nummer, Update-state-Value, Condition-Werte — können Sie {{variable}} einfügen und es wird zur Laufzeit ersetzt.
Auch Pfade mit Punkt-Notation funktionieren für verschachtelte Daten — z. B. wenn eine Tool-Antwort {"customer": {"name": "Anna", "tier": "gold"}} war, können Sie {{customer.name}} oder {{customer.tier}} lesen.
Wenn ein Token eine nicht existierende Variable referenziert, bleibt der wörtliche {{name}}-Text stehen (er wird nicht ausgeblendet). Das ist beabsichtigt — so sind kaputte Templates in einem Test-Call leicht zu erkennen, statt sie still zu verschlucken.
E-Mail, SMS und WhatsApp senden
Drei Knoten schicken etwas aus dem Anruf hinaus: E-Mail senden, SMS senden und WhatsApp senden. Sie haben denselben Aufbau — an wen, was drinsteht und eine optionale Bedingung — und einen Schalter, der alles daran ändert, wie sie sich verhalten.
| Feld | Gilt für | Hinweise |
|---|---|---|
| Empfänger | alle drei | Feste Adressen oder eine {{Variable}}, die während des Anrufs gefüllt wurde. SMS und WhatsApp brauchen E.164 (+431234567). |
| Betreff | Nimmt {{Token}} wie jedes andere Feld | |
| Nachricht | alle drei | Der Text |
| Template SID | Nur nötig, wenn Sie zuerst schreiben — siehe WhatsApp-Preise | |
| Bedingung (optional) | alle drei | Nur senden, wenn sie zutrifft — etwa nur mailen, wenn {{eskaliert}} true ist |
| Nach Anrufende senden | alle drei | Der wichtige, siehe unten |
Sofort senden oder nach dem Anruf
Standardmäßig feuert ein Sendeknoten in dem Moment, in dem der Anruf ihn erreicht. Der Anrufer ist noch in der Leitung, und alles, was erst danach entsteht, ist noch leer.
Schalten Sie Nach Anrufende senden ein, stellt sich der Knoten in die Warteschlange: Der Anruf endet, und erst dann geht die Nachricht raus. Genau das macht die Variablen nach dem Anruf brauchbar.
| Sendet während des Anrufs | Sendet nach dem Anruf | |
|---|---|---|
{{call_summary}} | leer | gefüllt |
{{call_transcription}} | leer | vollständiges Gespräch |
{{call_sentiment}}, {{call_task_achieved}} | leer | gefüllt |
| Anrufer sieht es noch im Gespräch | ja | nein |
Nutzen Sie sofort senden für alles, worauf der Anrufer wartet — den Bestätigungscode, den Buchungslink, den Sie gerade versprochen haben. Nutzen Sie nach dem Anruf für alles, was über den Anruf handelt statt für den Anrufer: die Zusammenfassung ans Team, das Transkript ins CRM, die Nachfassmail, die widerspiegeln soll, wie das Gespräch gelaufen ist.
{{call_summary}} funktioniert in einer SMS nach dem Anruf. {{call_transcription}} nicht — ein vollständiges Transkript liefe in SMS auf Dutzende Segmente hinaus und wird dort deshalb nicht angeboten. Transkripte gehen per E-Mail.
Die Anrufaufzeichnung anhängen
Der E-Mail-Knoten kann die Aufzeichnung des Anrufs als Audiodatei anhängen. Dafür gibt es zwei Voraussetzungen, und der Schalter bleibt deaktiviert, bis beide erfüllt sind:
- Nach Anrufende senden muss an sein — vor dem Ende gibt es nichts anzuhängen.
- Aufzeichnung muss in den Einstellungen des Agenten aktiviert sein.
Sind beide gesetzt, bekommt die Empfängerin das Audio zusätzlich zum Text. Die übliche Kombination: Zusammenfassung im Text, Transkript darunter, Aufzeichnung im Anhang — genug, damit eine Kollegin den Faden aufnimmt, ohne etwas anhören zu müssen, und das Audio da, wenn sie den Tonfall hören will.
Eine angehängte Aufzeichnung ist ein echtes Gespräch, das Ihre Plattform per E-Mail verlässt. Schicken Sie sie an interne Adressen, die Sie kontrollieren, denken Sie daran, was Ihren Anrufern zur Aufzeichnung gesagt wurde, und sehen Sie im Auftragsverarbeitungsvertrag nach, wie Aufzeichnungen behandelt werden.
Sich verabschieden
Der Knoten Anruf beenden schließt das Gespräch ab, und wie er das tut, ist eine Minute Ihrer Zeit wert — es ist das Letzte, was der Anrufer hört.
Wie verabschieden bietet zwei Modi:
| Modus | Was Sie schreiben | Wann es passt |
|---|---|---|
| Genauer Wortlaut | Die Sätze selbst | Sie wollen die Formulierung kontrollieren — eine rechtliche Formel, einen Marken-Abschluss |
| Anweisung an die KI | Was der Abschied leisten soll, z. B. „danke für die Zeit und verabschiede dich herzlich" | Es soll natürlich klingen und zum gerade geführten Gespräch passen |
Im Modus Genauer Wortlaut können Sie mehrere Verabschiedungen schreiben, eine pro Zeile. Pro Anruf wird zufällig eine gewählt. Das ist die Kleinigkeit, die einen Agenten mit hohem Volumen davor bewahrt, wie eine Ansage zu klingen — zwanzig Anrufer hintereinander hören denselben Satz und merken das; bei fünf Varianten merkt es niemand.
Lassen Sie das Feld leer, nutzt der Agent seine Standardverabschiedung.
In die Anrufsprache übersetzen übersetzt die Verabschiedung automatisch in die Sprache, in der der Anruf tatsächlich geführt wurde. Praktisch, wenn Ihr Agent mehrere Sprachen bedient und Sie nicht pro Sprache eine Liste pflegen wollen. Lassen Sie es aus, wenn der Wortlaut exakt so stehen muss, wie geschrieben — eine übersetzte Rechtsformel ist nicht mehr die Formel, die Sie freigegeben haben.
Häufige Muster
Qualifizieren → Verzweigen → Routen
Start
└─ Agent (greeting + qualify)
└─ Gather input (intent)
└─ Condition: intent == "sales" → Agent (sales)
└─ Condition: intent == "support" → Subagent (triage)
└─ Always (catch-all) → Message "Let me connect you" → Phone transfer
Nachschlagen → Personalisieren
Start
└─ Tool (CRM lookup, writes is_known, name, tier)
└─ Condition: is_known == true → Agent (warm greeting with {{name}})
└─ Always (else) → Agent (cold greeting)
Wiederverwendbarer Helfer (Subagent side-trip)
Agent (main conversation)
└─ AI decides: "Caller mentions an address" → Subagent (address collector)
└─ on finish: result = full_address
└─ Agent continues with {{full_address}}
Was während eines Workflow-Anrufs gesperrt ist
Einige Defaults ändern sich, wenn ein Graph den Anruf steuert:
- Die Sprache ist gesperrt auf die Sprache, die der erste Agent des Workflows verwendet. Die KI kann während des Anrufs nicht die Sprache wechseln. Das verhindert, dass das Modell bei einem lauten Turn in die falsche Sprache abdriftet.
- Der Haupt-Prompt des Agenten wird ersetzt durch den Prompt des aktiven Knotens. Das ist die Regel „der Graph besitzt die Persona" — siehe die Warnung unter Agent.
- Die erste Nachricht kommt vom Greeting des Einstiegsknotens, nicht vom Feld „Begin Message" des Agenten.
Loop-Schutz — Schritt-Budget
Jeder Workflow hat eine maximale Anzahl an Übergängen pro Anruf (Standard 25). Jedes Mal, wenn der Graph zu einem neuen Knoten wechselt, sinkt der Zähler um eins. Wenn er null erreicht, hört der Workflow auf, zwischen Knoten zu springen, um Endlosschleifen zu verhindern.
Sie können einen Fallback-Knoten für diesen Fall festlegen (typischerweise ein Phone transfer oder End call) — der Anruf wird dorthin umgeleitet, sobald das Budget aufgebraucht ist. Andernfalls übernimmt die KI wieder die Kontrolle und der Graph friert effektiv für den Rest des Anrufs ein.
Sie müssen sehr selten darüber nachdenken — es ist ein Sicherheitsnetz für Graphen, die versehentlich loopen. Wenn Sie es im normalen Gebrauch treffen, haben Sie wahrscheinlich irgendwo einen Zyklus.
Versionen und Veröffentlichen
Wenn Sie einen Workflow bearbeiten, ändert das nicht, was Anrufer hören. Der Editor öffnet immer Ihre Arbeitskopie — einen privaten Entwurf, den Sie umbauen, kaputt machen und reparieren können, ohne dass es jemand merkt. Anrufe laufen weiter über die veröffentlichte Version, bis Sie etwas anderes entscheiden.
Die Werkzeugleiste zeigt, was gerade gilt:
| Was Sie sehen | Was es bedeutet |
|---|---|
| Live: v3 | Anrufer werden mit Version 3 bedient. Ihre Änderungen betreffen sie nicht. |
| Veröffentlichen | Friert die Arbeitskopie als neue Version ein und schaltet sie live. |
| Zurückziehen | Nimmt die veröffentlichte Version vom Netz. Anrufe fallen auf die Arbeitskopie zurück — praktisch für ein schnelles Zurückrollen, aber denken Sie daran: die Arbeitskopie ist das, was Sie zuletzt auf der Fläche liegen ließen. |
Die Gewohnheit, die sich lohnt: frei bauen, einen Testanruf machen und erst veröffentlichen, wenn der Ablauf tut, was Sie erwarten. Stellt sich eine veröffentlichte Version als falsch heraus, ist die vorherige in Sekunden wieder live — jede Version bleibt in der Liste.
Beim Veröffentlichen wird der Graph so kopiert, wie er in diesem Moment ist. Spätere Änderungen wirken sich nicht auf die Live-Version aus — Sie müssen erneut veröffentlichen. Das ist Absicht: eine halbfertige Änderung kann niemals in einen laufenden Anruf geraten.
Zweige
Ein Zweig ist eine zweite Arbeitskopie desselben Workflows. Nutzen Sie ihn, wenn Sie einen anderen Weg ausprobieren wollen — eine kürzere Qualifizierung, ein anderes Weiterleitungsziel — ohne den Ablauf zu stören, dem Sie bereits vertrauen.
Zweige legen Sie im Versionsbereich an, wechseln dort zwischen ihnen und löschen sie, wenn Sie fertig sind. Nur die Version, die Sie veröffentlichen, erreicht Anrufer — ein Zweig darf also unfertig liegen bleiben, so lange Sie möchten.
Das ist der sicherste Weg, einen Workflow zu überarbeiten, der bereits echte Anrufe bedient: verzweigen, den Teil neu bauen, den Zweig testen und ihn veröffentlichen, wenn er das Original schlägt.
Die Fläche exportieren
Der Editor exportiert den Graphen als PNG, JPG oder PDF. Das ist ein Bild des Ablaufs, keine Sicherung — zurückimportieren lässt es sich nicht. Es ist für die Gespräche außerhalb der Plattform gedacht: ein Anrufskript mit Kolleginnen abstimmen, einem Kunden zeigen, wie sein Agent eine Anfrage behandelt, oder den Ablauf an ein Ticket hängen.
Testen
Die Test Call-Schaltfläche im Editor öffnet einen In-Browser-Anruf mit dem aktuellen Workflow-Entwurf. Während der Anruf läuft, bewegt sich ein leuchtendes Glühwürmchen zwischen den Knoten auf der Leinwand, sodass Sie genau sehen, wo der Anruf ist. Der Editor ist während eines Test-Calls gesperrt, um zu verhindern, dass Bearbeitungen den Live-Zustand desynchronisieren.
Verwenden Sie Test Call zur Überprüfung:
- Ihre Bedingungen matchen die Werte, die Sie erwarten (sehen Sie zu, ob das Glühwürmchen einen Zweig überspringt, von dem Sie dachten, er würde auslösen).
- Ihre Tokens werden korrekt ersetzt (achten Sie auf hängende
{{name}}, falls ein Wert noch nicht gesetzt war). - Tool-Fehler degradieren graceful (Ihr Fallback-Pfad löst tatsächlich aus).
Wichtige Fehlerfälle
| Situation | Was passiert |
|---|---|
| Tool / Integration-Aufruf schlägt fehl | Der Graph läuft ohne die Daten weiter. Ihre nachgelagerten Bedingungen sollten die fehlende Variable behandeln. |
| Phone transfer schlägt fehl (ungültige Nummer, keine Antwort, fehlende Telefonanbindung) | Der Graph rollt zurück, der aktuelle Agent bleibt in der Leitung, und das Gespräch läuft normal weiter. |
| Subagent startet nicht | Der Abstecher wird abgebrochen, der Eltern-Agent bleibt, und eine kurze Fehlerzeile wird gesprochen. |
{{missing_variable}} im Text | Bleibt wörtlich im Output — bei Test-Calls leicht zu erkennen. |
| Sub-workflow-Knoten | Läuft derzeit hindurch, ohne etwas zu tun. Verlassen Sie sich noch nicht darauf. |
| Schritt-Budget aufgebraucht | Leitet zum Fallback-Knoten um, falls einer gesetzt ist, sonst übernimmt die KI wieder. |
Wann KEIN Workflow zu verwenden
Workflows sind mächtig, aber nicht die richtige Antwort für jeden Agenten. Bleiben Sie bei einem einzelnen Prompt, wenn:
- Das Gespräch ergebnisoffen ist („Fragen des Anrufers zu unseren Produkten beantworten").
- Sie keine klare Verzweigungslogik haben — die meisten Entscheidungen sind Ermessensfragen, die die KI gut handhabt.
- Sie nur einen Agent-Knoten und einen End call schreiben würden — das ist nur ein Prompt mit zusätzlichen Schritten.
Greifen Sie zu einem Workflow, wenn:
- Sie den Anruf als Flussdiagramm mit drei oder mehr klaren Phasen skizzieren können.
- Sie mindestens eine deterministische Verzweigung auf eine Variable brauchen (eine Condition).
- Sie einen Gesprächsausschnitt über mehrere Agenten wiederverwenden wollen (einen Subagent).
- Sie bereits „wenn der Anrufer X sagt, mache Y"-Regeln in einem Prompt stapeln und sie unzuverlässig sind.