TurboFlow Trigger und Actions
Referenz für jeden TurboFlow-Trigger-, Action- und Logic-Node inklusive Feldtypen, Optionen, Ausgaben und Ausdrucksnutzung.
{
"email": "{{trigger.body.email}}",
"contactId": "{{talkturo_upsert_contact.contact_id}}",
"httpStatus": "{{http_request.status}}",
"responseBody": "{{http_request.body}}",
"matched": "{{condition.result}}"
}
Baue Workflows mit Trigger-, Action- und Logic-Nodes
TurboFlow-Workflows beginnen mit einem Trigger, laufen durch eine oder mehrere Actions und verzweigen mit Logic-Nodes. Diese Referenz dokumentiert jeden verfügbaren Node-Typ, die genauen Konfigurationsfelder, die jeder Node akzeptiert, und die Ausgabe, die jeder Node nachgelagerten Nodes bereitstellt.
Verwende Ausdrücke in jedem konfigurierbaren Feld, um Werte aus früheren Nodes zu lesen. Setze Referenzen in {{ }}-Syntax, zum Beispiel {{trigger.body.email}} oder {{talkturo_upsert_contact.contact_id}}.
So fließen Node-Ausgaben durch einen Workflow
Jeder Node fügt sein Ergebnis unter seiner Node-ID zum Workflow-Kontext hinzu. Nachgelagerte Nodes können diese Werte mit Ausdrücken referenzieren. So kannst du Trigger-Payloads in Actions übergeben, Action-Ergebnisse wiederverwenden und anhand von Logic-Ergebnissen verzweigen.
Ausdruckssyntax
Ausdrücke verwenden doppelte geschweifte Klammern um einen Pfad. Der Pfad beginnt in der Regel mit einer Node-ID, gefolgt von dem Ausgabefeld, das du lesen möchtest.
Der Ausdrucks-Picker zeigt Werte, die von vorgelagerten Nodes verfügbar sind. Wenn ein Wert dort nicht erscheint, kann der aktuelle Node noch nicht darauf zugreifen.
Häufige Ausdrucksbeispiele
| Ausdruck | Liest |
|---|---|
{{trigger.body.email}} | Ein eingehendes Webhook-Feld namens email |
{{trigger.body.context.call_id}} | Voice-Kontext, der an einen Tool-Aufruf angehängt ist |
{{http_request.body.status}} | Ein verschachteltes Feld innerhalb eines HTTP-Response-Bodys |
{{talkturo_upsert_contact.contact_id}} | Die CRM-Kontakt-ID, die von der Upsert-Action zurückgegeben wurde |
{{condition.result}} | Das boolesche Ergebnis eines Condition-Nodes |
Trigger-Nodes
Trigger starten einen Workflow. Jeder Flow verwendet einen Trigger als Einstiegspunkt, und einige Trigger verifizieren außerdem eingehende Ereignisse aus externen Integrationen.
webhook_trigger
webhook_trigger ist der universelle Einstiegspunkt für jeden Flow. Er unterstützt direkte externe Webhooks und optional die Freigabe als Voice-Tool für AI-Assistenten.
Was dieser Trigger macht
- Externer Webhook-Empfänger — jedes externe System kann eine
POST-Anfrage an die Trigger-URL des Flows senden. - Voice-Tool — wenn
voice_tool.exposedaktiviert ist, wird derselbe Trigger als aufrufbares Tool für Sprachassistenten registriert.
Konfigurationsfelder
Ob der Trigger für Sprachassistenten als aufrufbares Tool sichtbar ist.
Tool-Name, den das LLM aufruft. Verwende Snake Case und halte den Namen bei 64 Zeichen oder weniger, zum Beispiel book_calendly_meeting.
Beschreibung in natürlicher Sprache, die dem LLM angezeigt wird. Die Länge muss zwischen 10 und 1024 Zeichen liegen.
Typisierte Eingabeparameter, die dem LLM bereitgestellt werden, wenn der Trigger als Voice-Tool dient.
ParameterDef-Felder
Verwende ein ParameterDef-Objekt für jeden Tool-Parameter.
Parametername in Snake Case.
Parametertyp. Unterstützte Werte sind string, number, boolean, array und object.
stringnumberbooleanarrayobjectHinweis, der dem LLM angezeigt wird. Maximale Länge sind 500 Zeichen.
Woher der Parameterwert kommt. Verwende ai, wenn das LLM den Wert erzeugen soll, oder static, wenn der Parameter immer einen festen static_value verwendet.
aistaticOb das LLM diesen Parameter bereitstellen muss. Verwende dieses Feld nur, wenn source den Wert ai hat.
Fest codierter Wert, der verwendet wird, wenn source den Wert static hat.
JSON-Schema-Hinweis für die Struktur von Array-Elementen. Verwende dies, wenn type den Wert array hat.
JSON-Schema-Hinweis für die Objektform. Verwende dies, wenn type den Wert object hat.
Ausgabefelder
Nachgelagerte Nodes können eingehende Trigger-Daten aus trigger.body lesen.
Der geparste eingehende Request-Body.
Voice-Call-Kontext, wenn der Trigger als Voice-Tool läuft. Häufige Felder sind call_id, contact_id und assistant_id.
Ein Feld für jedes eingehende Webhook-Feld oder jeden Tool-Parameter.
Wenn du einen Webhook-Trigger als Voice-Tool freigibst, kommen die Tool-Eingaben weiterhin über trigger.body an. Lies sie mit Ausdrücken wie {{trigger.body.meeting_type}}.
Beispielkonfiguration für ein Voice-Tool
{
"voice_tool": {
"exposed": true,
"tool_name": "book_calendly_meeting",
"tool_description": "Books a meeting for the caller and returns the booking result",
"parameters": [
{
"name": "full_name",
"type": "string",
"description": "Caller full name",
"source": "ai",
"required": true
},
{
"name": "email",
"type": "string",
"description": "Best email address for the meeting invite",
"source": "ai",
"required": true
},
{
"name": "meeting_type",
"type": "string",
"description": "Meeting type to book",
"source": "static",
"static_value": "demo_call"
}
]
}
}
Integration-Trigger
Integration-Trigger starten einen Workflow aus verifizierten Ereignissen, die von externen Systemen gesendet werden.
Unterstützte Integration-Trigger
| Integration | Trigger-ID | Ereignisse | Verifizierung |
|---|---|---|---|
| Cal.com | booking_events | BOOKING_CREATED, BOOKING_RESCHEDULED, BOOKING_CANCELLED, BOOKING_REJECTED, BOOKING_REQUESTED | HMAC-SHA256 über X-Cal-Signature-256 |
| Calendly | invitee_events | invitee.created, invitee.canceled | HMAC-SHA256 über Calendly-Webhook-Signature |
| Slack | event_received | message, app_mention, reaction_added, reaction_removed, channel_created, member_joined_channel, member_left_channel, file_shared | Slack Signing Secret |
| Meta | lead_received | leadgen | HMAC über X-Hub-Signature-256 mit META_APP_SECRET |
Meta-Trigger-Konfiguration
Verwende diese Felder, wenn du den Meta-Lead-Trigger konfigurierst.
Meta-Page-ID, der das Lead-Formular-Webhook gehört.
Optionaler Formularfilter. Wenn gesetzt, akzeptiert der Trigger nur Ereignisse für das angegebene Formular.
Action-Nodes
Actions führen Arbeit aus, nachdem ein Trigger ausgelöst wurde. Sie können externe APIs aufrufen, CRM-Daten erstellen oder aktualisieren, ausgehende Anrufe starten oder die finale Antwort des Workflows formen.
http_request
http_request sendet eine HTTP-Anfrage an jede erreichbare URL und stellt die vollständige Response nachgelagerten Nodes zur Verfügung.
Konfigurationsfelder
Ziel-URL für die Anfrage.
Zusätzliche Request-Header.
Request-Body. TurboFlow JSON-kodiert den Wert automatisch.
Request-Timeout in Sekunden. Zulässiger Bereich ist 1 bis 60. Standard ist 30.
Ausgabefelder
HTTP-Statuscode, den der Zielserver zurückgegeben hat.
true, wenn der Response-Status im 2xx-Bereich liegt.
Geparster JSON-Response-Body, wenn die Response JSON ist, andernfalls Rohtext.
Response-Header.
Beispielkonfiguration
{
"url": "https://api.acmecrm.com/v1/leads",
"method": "POST",
"headers": {
"Authorization": "Bearer dkai_example_9xmk7q2r",
"Content-Type": "application/json"
},
"body": {
"email": "{{trigger.body.email}}",
"name": "{{trigger.body.full_name}}"
},
"timeout_seconds": 30
}
talkturo_upsert_contact
talkturo_upsert_contact erstellt oder aktualisiert einen CRM-Kontakt. Der Abgleich erfolgt zuerst über die Telefonnummer, danach über die E-Mail.
Konfigurationsfelder
Vorname oder vollständiger Name des Kontakts.
Nachname des Kontakts.
Telefonnummer für den Kontakt. Die Plattform normalisiert diesen Wert auf E.164.
E-Mail-Adresse für den Kontakt.
Wert für die Kontaktquelle.
manualimportcampaigninbound_callweb_formreferralotherTalkturo-Unternehmens-ID.
Ausgabefelder
Talkturo-Kontakt-ID.
true, wenn die Action einen neuen Kontakt erstellt hat. false, wenn sie einen bestehenden Kontakt aktualisiert hat.
Beispielkonfiguration
{
"first_name": "{{trigger.body.first_name}}",
"last_name": "{{trigger.body.last_name}}",
"phone": "{{trigger.body.phone}}",
"email": "{{trigger.body.email}}",
"source": "web_form",
"tags": [
"demo-request",
"priority-lead"
]
}
talkturo_call_contact
talkturo_call_contact startet einen ausgehenden AI-Anruf über eine Kampagne.
Konfigurationsfelder
Talkturo-Kontakt-ID, die angerufen werden soll.
Kampagnen-ID, die Assistenten, Caller-ID und Wiederholungsregeln bereitstellt.
Wann der Anruf platziert werden soll. Standard ist immediate.
immediatedelayscheduleMinuten Wartezeit vor dem Anruf, wenn timing_mode den Wert delay hat. Zulässiger Bereich ist 0 bis 43200.
Absoluter Anrufzeitpunkt im ISO-8601-Format, wenn timing_mode den Wert schedule hat.
Ausgabefelder
Kampagnen-Kontakt-Datensatz-ID, die für den ausgehenden Anruf erstellt oder verwendet wurde.
Anruf-ID, wenn der Anruf sofort erstellt wird, oder null, wenn noch kein Live-Anrufdatensatz existiert.
Aktueller Request-Status für den ausgehenden Anruf.
Setze delay_minutes nur für den Modus delay und scheduled_at nur für den Modus schedule. TurboFlow erlaubt weiterhin Ausdrücke in beiden Feldern, was hilft, wenn die Anrufzeit aus vorgelagerten Daten kommt.
Beispielkonfiguration
{
"contact_id": "{{talkturo_upsert_contact.contact_id}}",
"campaign_id": "cmp_7af42c1d9e",
"timing_mode": "schedule",
"scheduled_at": "{{trigger.body.follow_up_time}}"
}
format_output
format_output formt das JSON-Objekt, das der Workflow an den Sprachassistenten zurückgibt.
Konfigurationsfelder
Liste der Ausgabezeilen im Modus fields. Jede Zeile enthält einen key und einen value, und jede Zeile wird zu einem Top-Level-Schlüssel im zurückgegebenen Objekt.
Vollständiges zurückgegebenes Objekt im Modus json.
Ausgabefelder
Benutzerdefiniertes Objekt, das im Modus fields erstellt oder im Modus json direkt aus template zurückgegeben wird.
Beispielkonfiguration
{
"mode": "fields",
"fields": [
{
"key": "contact_id",
"value": "{{talkturo_upsert_contact.contact_id}}"
},
{
"key": "created",
"value": "{{talkturo_upsert_contact.created}}"
},
{
"key": "message",
"value": "Contact saved and ready for follow-up"
}
]
}
{
"mode": "json",
"template": {
"contact": {
"id": "{{talkturo_upsert_contact.contact_id}}",
"created": "{{talkturo_upsert_contact.created}}"
},
"source": "{{trigger.body.source}}"
}
}
Logic-Nodes
Logic-Nodes steuern, welchem Pfad der Workflow als Nächstes folgt.
condition
condition wertet zwei Operanden aus und leitet den Workflow über den true- oder false-Handle weiter.
Konfigurationsfelder
Linker Operand. Das kann ein Literalwert oder ein Ausdruck sein.
Vergleichsoperator. Standard ist eq.
Rechter Operand. Dieses Feld wird bei unären Operatoren ignoriert. Aktuell unterstützte Operatoren sind binär.
Operatoren
| Operator | Typ | Beschreibung |
|---|---|---|
eq | binär | Lose Gleichheit |
neq | binär | Ungleich |
gt | binär numerisch | Größer als |
gte | binär numerisch | Größer als oder gleich |
lt | binär numerisch | Kleiner als |
lte | binär numerisch | Kleiner als oder gleich |
contains | binär string | Zeichenkette enthält Teilstring |
starts_with | binär string | Zeichenkette beginnt mit |
ends_with | binär string | Zeichenkette endet mit |
Ausgabefelder
Boolesches Ergebnis der Condition-Auswertung.
Beispielkonfiguration
{
"left": "{{http_request.status}}",
"operator": "gte",
"right": 200
}
Ein Condition-Node funktioniert in der Regel am besten, wenn left und right bereits auf denselben Typ normalisiert sind. Vergleiche zum Beispiel Zahlen mit Zahlen und Zeichenketten mit Zeichenketten.
Node-Referenz nach Zweck
Verwende diese Tabelle, um schnell den richtigen Node auszuwählen.
| Ziel | Node-Typ |
|---|---|
| Beliebigen eingehenden Payload empfangen oder ein Voice-Tool freigeben | webhook_trigger |
| Einen Flow aus Cal.com, Calendly, Slack oder Meta starten | Integration-Trigger |
| Eine externe API aufrufen | http_request |
| Einen CRM-Kontakt erstellen oder aktualisieren | talkturo_upsert_contact |
| Einen ausgehenden AI-Anruf starten | talkturo_call_contact |
| Einen benutzerdefinierten JSON-Payload zurückgeben | format_output |
| Anhand von Workflow-Daten verzweigen | condition |