Standardbedingungen funktionieren in den meisten Situationen gut, aber manchmal müssen Sie strengere Regeln erstellen, wie z. B. zu prüfen, ob ein Datum genau 30 Tage zurückliegt oder ob eine Liste einen bestimmten Eintrag enthält.
Die Codeauswertung im Condition step ermöglicht es Ihnen, zuverlässige, deterministische Logik für Ihre Fin Procedures mit Python zu definieren. Wir empfehlen diese Methode für kritische Aktionen, da sie deterministisch und somit zuverlässiger als natürliche Sprache ist.
Profi-Tipp: Die Verwendung von Python-Code in Fin Procedure-Bedingungen bietet Ihnen präzise, deterministische Logik, die KI-Interpretationen oder Halluzinationen vermeidet. Code läuft schneller als die Auswertung natürlicher Sprache, verarbeitet komplexe Vergleiche zuverlässiger und macht Ihre Verzweigungslogik explizit und leichter wartbar.
Die Grundlagen von Codebedingungen
Um sicherzustellen, dass Ihre Logik korrekt ausgeführt wird, muss Ihr Code diese spezifischen Regeln befolgen:
Boolesches Ergebnis: Der Ausdruck muss immer zu
TrueoderFalseausgewertet werden.Namespace-Zugriff: Sie können Attribute über das inputs-Dictionary zugreifen.
Zugriff auf Datenattribute
Sie können Daten aus verschiedenen Quellen mit der spezifischen Namespace-Struktur referenzieren:
Firmendaten:
inputs["company"]["name"]Benutzerdaten:
inputs["user"]["first_name"]Konversationsdaten:
inputs["conversation"]["has_attachments"]Temporäre Daten:
inputs["temporary"]["order_verified"]Data Connector-Daten:
inputs["data_connector"]["Data connector name"]["order_verified"]
Data Connector-Ausgaben
Wenn Sie einen Data Connector in einer Procedure verwenden, referenzieren Sie dessen Ausgaben über die schreibgeschützten Temporary attributes, die aus der Antwort generiert werden. Wir empfehlen die Verwendung von Temporary attributes anstelle eines separaten data_connector-Namespace, um sicherzustellen, dass Ihre Logik deterministisch bleibt.
Hinweis: Attributnamen sollten genau so referenziert werden, wie sie in Ihrem Datenschema erscheinen.
Statuscodes für erweiterte Fehlerbehandlung prüfen
Der status_code eines Data Connector-Aufrufs wird als Ausgabeattribut bereitgestellt. Verwenden Sie ihn in einem Condition step, um bei bestimmten HTTP-Antwortcodes für erweiterte Fehlerbehandlung zu verzweigen.
Prüfen, ob ein Data Connector eine Fehlerantwort zurückgegeben hat:
inputs["data_connector"]["Your connector name"]["status_code"] >= 400
Einen spezifischen Fehlercode behandeln:
inputs["data_connector"]["Your connector name"]["status_code"] == 404
Beispiele für gängige Ausdrücke
Hier sind Standard-Python-Muster, die Sie zum Erstellen Ihrer Bedingungen verwenden können:
Boolesche Prüfungen
Prüfen, ob ein Wert explizit wahr oder falsch ist.
inputs["temporary"]["order_verified"] == False
String-Vergleiche
Es ist gute Praxis, Strings vor dem Vergleich zu normalisieren (z. B. in Kleinbuchstaben umzuwandeln), um Fehler durch Groß-/Kleinschreibung zu vermeiden.
inputs["temporary"]["order_fulfillment_status"].lower() == "partial"
Kombinierte Logik
Sie können mehrere Prüfungen mit den Operatoren and / or kombinieren.
inputs["temporary"]["order_verified"] == True and inputs["temporary"]["order_fulfillment_status"].lower() == "partial"
"Enthält"-Prüfungen
Prüfen, ob ein bestimmter Teilstring in einem größeren String vorhanden ist.
"uk" in inputs["temporary"]["url"].lower()
Arbeiten mit Datetime-Attributen
Codebedingungen haben Zugriff auf das Standard-datetime-Modul von Python, mit dem Sie komplexe zeitbasierte Logik ausführen können.
Verständnis von Zeitzonen und Formatierung
Um Fehler zu vermeiden, ist es entscheidend zu verstehen, wie Intercom verschiedene Arten von Datumsattributen behandelt:
Kundendefinierte Attribute: Attribute, die in Intercom (User, Conversation, Custom oder Standard) gespeichert sind, werden immer als UTC-normalisierte ISO 8601-Strings angezeigt (z. B.
2025-05-27T00:00:00Z).Data Connector-Attribute: Von externen APIs empfangene Daten werden genau so angezeigt, wie sie empfangen wurden. Es wird keine Normalisierung angewendet. Möglicherweise müssen Sie diese manuell parsen oder in UTC konvertieren, wenn Konsistenz erforderlich ist.
Hinweis: Der gesamte Code innerhalb der Intercom-Sandbox-Umgebung arbeitet standardmäßig in einer UTC-basierten Zeitzone. Die Funktion datetime.datetime.now() gibt immer die aktuelle UTC-Zeit zurück, unabhängig von Ihren lokalen Systemeinstellungen.
Beispiele für Datetime
Prüfen, ob die aktuelle Zeit größer als gestern ist
(datetime.datetime.now() > datetime.datetime.now() - datetime.timedelta(days=1)) and len(inputs["temporary"]["Get movies"]) > 0
Prüfen, ob ein Bestelldatum innerhalb der letzten 30 Tage liegt
Dieses Beispiel vergleicht die aktuelle UTC-Zeit mit einem temporären Bestelldatum-Attribut.
current_time = datetime.datetime.now(datetime.timezone.utc)
order_date = datetime.datetime.fromisoformat(
inputs["temporary"]["order_date"]
)
difference = current_time - order_date
difference.days <= 30
Prüfen, ob eine Bestellzeit vor 14 Uhr heute (UTC) liegt
Diese komplexe Prüfung extrahiert die Datums- und Zeitkomponenten, um ein bestimmtes Zeitfenster zu überprüfen.
d = datetime.datetime.now(datetime.timezone.utc).date()
start_of_day = datetime.datetime.combine(
d,
datetime.time(0, tzinfo=datetime.timezone.utc),
)
end_time = datetime.datetime.combine(
d,
datetime.time(14, 0, tzinfo=datetime.timezone.utc),
)
order_time = datetime.datetime.fromisoformat(
inputs["temporary"]["order_time"]
)
start_of_day < order_time < end_time
Tipp: Fin ist sich der Zeitzone eines Kunden vollständig bewusst. Wenn Fin während eines Gesprächs ein Datetime-Attribut sammelt, interpretiert es den Wert in der lokalen Zeitzone des Kunden, konvertiert ihn in UTC und speichert ihn.
Schleifen und Arrays
Sie können über Arrays (Listen) von Daten iterieren, um bestimmte Bedingungen zu validieren.
Unterstützt: Sie können über ein Array iterieren, um zu prüfen, ob eine bestimmte Bedingung erfüllt ist (z. B. "Hat eine Bestellung in dieser Liste den Status 'fulfilled'?" ).
Beispiel: Prüfen auf eine bestimmte erfüllte Bestellung
Dieser Code prüft eine Liste von Bestellungen, ob eine bestimmte ID existiert UND ob diese Bestellung erfüllt ist.
any(str(o["id"]) == "4308316520546" and o.get("fulfillment_status") == "fulfilled" for o in inputs["data_connector"] ["DC name"] ["…"])
Code mit KI generieren
Wenn Sie sich mit dem Schreiben von Python nicht wohlfühlen, können Sie ein LLM (wie Claude oder ChatGPT) verwenden, um diese Code-Snippets für Sie zu generieren. Verwenden Sie die folgende Eingabeaufforderung, um sicherzustellen, dass die KI die spezifischen Einschränkungen der Intercom-Codebedingungen versteht.
Kopieren Sie diese Eingabeaufforderung in Ihr KI-Tool:
Sie helfen mir, Fin Procedure /Condition Codeausdrucksauswertungen zu schreiben.
Ihre Aufgabe: Wenn ich eine Bedingung in natürlicher Sprache beschreibe, antworten Sie mit einem einzeiligen Python-Ausdruck, der zu True oder False ausgewertet wird. Geben Sie keine Erklärungen oder zusätzlichen Text an.
Kontext:
Diese sind für /Condition-Schritte in Fin Procedures.
Fin wertet Verzweigungen von oben nach unten aus und führt die erste Bedingung aus, die True ist.
Bevorzugen Sie Codeauswertung (Python) gegenüber KI-/natürlicher Spracheauswertung für Zuverlässigkeit.
Datenmodell:
inputs["user"]["first_name"], inputs["company"]["name"]inputs["conversation"]["has_attachments"]inputs["temporary"]["order_verified"]
Python-Regeln:
Ausdruck muss gültiges Python sein und einen booleschen Wert zurückgeben.
Verwenden Sie Vergleiche, logische Operatoren und einfache Schleifen/Comprehensions.
Für Daten: Sie können
datetimeverwenden. Kunden-Datetime-Attribute sind UTC-ISO-Strings (z. B. "2025-05-27T00:00:00Z").
Ausgabeformat: Antworten Sie nur mit dem Python-Ausdruck in einer Zeile.
