TurboFlowTurboFlow Trigger und Aktionen

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

AusdruckLiest
{{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.exposed aktiviert ist, wird derselbe Trigger als aufrufbares Tool für Sprachassistenten registriert.

Konfigurationsfelder

voice_tool.exposedboolean
Required

Ob der Trigger für Sprachassistenten als aufrufbares Tool sichtbar ist.

voice_tool.tool_namestring

Tool-Name, den das LLM aufruft. Verwende Snake Case und halte den Namen bei 64 Zeichen oder weniger, zum Beispiel book_calendly_meeting.

voice_tool.tool_descriptionstring

Beschreibung in natürlicher Sprache, die dem LLM angezeigt wird. Die Länge muss zwischen 10 und 1024 Zeichen liegen.

voice_tool.parametersParameterDef[]

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.

namestring
Required

Parametername in Snake Case.

typestring
Required

Parametertyp. Unterstützte Werte sind string, number, boolean, array und object.

Allowed values:stringnumberbooleanarrayobject
descriptionstring

Hinweis, der dem LLM angezeigt wird. Maximale Länge sind 500 Zeichen.

sourcestring
Required

Woher der Parameterwert kommt. Verwende ai, wenn das LLM den Wert erzeugen soll, oder static, wenn der Parameter immer einen festen static_value verwendet.

Allowed values:aistatic
requiredboolean

Ob das LLM diesen Parameter bereitstellen muss. Verwende dieses Feld nur, wenn source den Wert ai hat.

static_valueunknown

Fest codierter Wert, der verwendet wird, wenn source den Wert static hat.

itemsobject

JSON-Schema-Hinweis für die Struktur von Array-Elementen. Verwende dies, wenn type den Wert array hat.

propertiesobject

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.

bodyobject
Required

Der geparste eingehende Request-Body.

body.contextobject

Voice-Call-Kontext, wenn der Trigger als Voice-Tool läuft. Häufige Felder sind call_id, contact_id und assistant_id.

body.<param_name>unknown

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

IntegrationTrigger-IDEreignisseVerifizierung
Cal.combooking_eventsBOOKING_CREATED, BOOKING_RESCHEDULED, BOOKING_CANCELLED, BOOKING_REJECTED, BOOKING_REQUESTEDHMAC-SHA256 über X-Cal-Signature-256
Calendlyinvitee_eventsinvitee.created, invitee.canceledHMAC-SHA256 über Calendly-Webhook-Signature
Slackevent_receivedmessage, app_mention, reaction_added, reaction_removed, channel_created, member_joined_channel, member_left_channel, file_sharedSlack Signing Secret
Metalead_receivedleadgenHMAC über X-Hub-Signature-256 mit META_APP_SECRET

Meta-Trigger-Konfiguration

Verwende diese Felder, wenn du den Meta-Lead-Trigger konfigurierst.

page_idstring
Required

Meta-Page-ID, der das Lead-Formular-Webhook gehört.

form_idstring

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

urlurl
Required

Ziel-URL für die Anfrage.

methodstring
Required

HTTP-Methode. Standard ist POST.

Allowed values:GETPOSTPUTPATCHDELETE
headersjson

Zusätzliche Request-Header.

bodyunknown

Request-Body. TurboFlow JSON-kodiert den Wert automatisch.

timeout_secondsnumber

Request-Timeout in Sekunden. Zulässiger Bereich ist 1 bis 60. Standard ist 30.

Ausgabefelder

statusnumber
Required

HTTP-Statuscode, den der Zielserver zurückgegeben hat.

okboolean
Required

true, wenn der Response-Status im 2xx-Bereich liegt.

bodyunknown

Geparster JSON-Response-Body, wenn die Response JSON ist, andernfalls Rohtext.

headersjson

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

first_namestring
Required

Vorname oder vollständiger Name des Kontakts.

last_namestring

Nachname des Kontakts.

phonestring

Telefonnummer für den Kontakt. Die Plattform normalisiert diesen Wert auf E.164.

emailstring

E-Mail-Adresse für den Kontakt.

sourcestring

Wert für die Kontaktquelle.

Allowed values:manualimportcampaigninbound_callweb_formreferralother
company_idstring

Talkturo-Unternehmens-ID.

tagsstring[]

Liste von Tags, die auf den Kontakt angewendet werden sollen.

Ausgabefelder

contact_idstring
Required

Talkturo-Kontakt-ID.

createdboolean
Required

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

contact_idstring
Required

Talkturo-Kontakt-ID, die angerufen werden soll.

campaign_idstring
Required

Kampagnen-ID, die Assistenten, Caller-ID und Wiederholungsregeln bereitstellt.

timing_modestring

Wann der Anruf platziert werden soll. Standard ist immediate.

Allowed values:immediatedelayschedule
delay_minutesnumber

Minuten Wartezeit vor dem Anruf, wenn timing_mode den Wert delay hat. Zulässiger Bereich ist 0 bis 43200.

scheduled_atstring

Absoluter Anrufzeitpunkt im ISO-8601-Format, wenn timing_mode den Wert schedule hat.

Ausgabefelder

campaign_contact_idstring
Required

Kampagnen-Kontakt-Datensatz-ID, die für den ausgehenden Anruf erstellt oder verwendet wurde.

call_idstring | null

Anruf-ID, wenn der Anruf sofort erstellt wird, oder null, wenn noch kein Live-Anrufdatensatz existiert.

statusstring
Required

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

modestring

Ausgabemodus. Standard ist fields.

Allowed values:fieldsjson
fieldsarray

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.

templateunknown

Vollständiges zurückgegebenes Objekt im Modus json.

Ausgabefelder

outputobject
Required

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"
    }
  ]
}

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

leftunknown
Required

Linker Operand. Das kann ein Literalwert oder ein Ausdruck sein.

operatorstring
Required

Vergleichsoperator. Standard ist eq.

rightunknown

Rechter Operand. Dieses Feld wird bei unären Operatoren ignoriert. Aktuell unterstützte Operatoren sind binär.

Operatoren

OperatorTypBeschreibung
eqbinärLose Gleichheit
neqbinärUngleich
gtbinär numerischGrößer als
gtebinär numerischGrößer als oder gleich
ltbinär numerischKleiner als
ltebinär numerischKleiner als oder gleich
containsbinär stringZeichenkette enthält Teilstring
starts_withbinär stringZeichenkette beginnt mit
ends_withbinär stringZeichenkette endet mit

Ausgabefelder

resultboolean
Required

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.

ZielNode-Typ
Beliebigen eingehenden Payload empfangen oder ein Voice-Tool freigebenwebhook_trigger
Einen Flow aus Cal.com, Calendly, Slack oder Meta startenIntegration-Trigger
Eine externe API aufrufenhttp_request
Einen CRM-Kontakt erstellen oder aktualisierentalkturo_upsert_contact
Einen ausgehenden AI-Anruf startentalkturo_call_contact
Einen benutzerdefinierten JSON-Payload zurückgebenformat_output
Anhand von Workflow-Daten verzweigencondition

Verwandte Seiten