Les conditions standard fonctionnent bien dans la plupart des situations, mais parfois vous devez établir des règles plus strictes, comme vérifier si une date est exactement il y a 30 jours, ou voir si une liste contient un élément spécifique.
L'évaluation du code dans l'étape Condition vous permet de définir une logique fiable et déterministe pour vos procédures Fin en utilisant Python. Nous recommandons cette méthode pour les actions critiques car elle est déterministe et donc plus fiable que le langage naturel.
Astuce pro : Utiliser du code Python dans les conditions des procédures Fin vous offre une logique précise et déterministe qui évite l'interprétation ou l'hallucination de l'IA. Le code s'exécute plus rapidement que l'évaluation en langage naturel, gère les comparaisons complexes plus fiablement, et rend votre logique de branchement explicite et plus facile à maintenir.
Les bases des conditions de code
Pour garantir que votre logique s'exécute correctement, votre code doit suivre ces règles spécifiques :
Résultat booléen : L'expression doit toujours s'évaluer à
TrueouFalse.Accès à l'espace de noms : Vous pouvez accéder aux attributs en utilisant le dictionnaire inputs.
Accès aux attributs de données
Vous pouvez référencer des données de diverses sources en utilisant la structure spécifique de l'espace de noms :
Données de l'entreprise :
inputs["company"]["name"]Données utilisateur :
inputs["user"]["first_name"]Données de la conversation :
inputs["conversation"]["has_attachments"]Données temporaires :
inputs["temporary"]["order_verified"]Données du connecteur de données :
inputs["data_connector"]["Data connector name"]["order_verified"]
Sorties du connecteur de données
Lors de l'utilisation d'un connecteur de données dans une procédure, référez-vous à ses sorties via les attributs temporaires en lecture seule générés à partir de la réponse. Nous recommandons d'utiliser les attributs temporaires plutôt qu'un espace de noms data_connector séparé pour garantir que votre logique reste déterministe.
Note : Les noms d'attributs doivent être référencés exactement comme ils apparaissent dans votre schéma de données.
Exemples d'expressions courantes
Voici des modèles Python standards que vous pouvez utiliser pour construire vos conditions :
Vérifications booléennes
Vérifiez si une valeur est explicitement vraie ou fausse.
inputs["temporary"]["order_verified"] == False
Comparaisons de chaînes
Il est recommandé de normaliser les chaînes (par exemple, les mettre en minuscules) avant de les comparer pour éviter les erreurs de sensibilité à la casse.
inputs["temporary"]["order_fulfillment_status"].lower() == "partial"
Logique combinée
Vous pouvez combiner plusieurs vérifications en utilisant les opérateurs and / or.
inputs["temporary"]["order_verified"] == True and inputs["temporary"]["order_fulfillment_status"].lower() == "partial"
Vérifications de "contient"
Vérifiez si une sous-chaîne spécifique existe dans une chaîne plus grande.
"uk" in inputs["temporary"]["url"].lower()
Travail avec les attributs datetime
Les conditions de code ont accès au module standard datetime de Python, ce qui vous permet d'effectuer une logique complexe basée sur le temps.
Comprendre les fuseaux horaires et le formatage
Pour éviter les erreurs, il est crucial de comprendre comment Intercom gère les différents types d'attributs de date :
Attributs définis par le client : Les attributs stockés dans Intercom (Utilisateur, Conversation, Personnalisé ou Standard) sont toujours exposés sous forme de chaînes ISO 8601 normalisées en UTC (par exemple,
2025-05-27T00:00:00Z).Attributs du connecteur de données : Les dates reçues des API externes sont exposées exactement telles que reçues. Aucune normalisation n'est appliquée. Vous devrez peut-être les analyser ou les convertir manuellement en UTC si la cohérence est requise.
Note : Tout le code dans l'environnement sandbox d'Intercom fonctionne par défaut dans un fuseau horaire basé sur UTC. La fonction datetime.datetime.now() renvoie toujours l'heure UTC actuelle, quel que soit le paramétrage local de votre système.
Exemples datetime
Vérifiez si l'heure actuelle est supérieure à hier
(datetime.datetime.now() > datetime.datetime.now() - datetime.timedelta(days=1)) and len(inputs["temporary"]["Get movies"]) > 0
Vérifiez si une date de commande est dans les 30 derniers jours
Cet exemple compare l'heure UTC actuelle à un attribut temporaire de date de commande.
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
Vérifiez si une heure de commande est avant 14h aujourd'hui (UTC)
Cette vérification complexe extrait les composants date et heure pour vérifier une fenêtre de coupure spécifique.
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
Astuce : Fin est pleinement conscient du fuseau horaire du client. Lorsque Fin collecte un attribut datetime lors d'une conversation, il interprète la valeur dans le fuseau horaire local du client, la convertit en UTC et la stocke.
Boucles et tableaux
Vous pouvez itérer sur des tableaux (listes) de données pour valider des conditions spécifiques.
Pris en charge : Vous pouvez itérer sur un tableau pour vérifier si une condition spécifique est remplie (par exemple, "Une commande dans cette liste a-t-elle un statut 'fulfilled' ?").
Non pris en charge : Vous ne pouvez pas itérer sur un tableau pour exécuter une étape de workflow pour chaque élément. Les conditions de code sont strictement pour l'évaluation, pas pour l'exécution d'actions.
Exemple : Vérifiez une commande spécifique remplie
Ce code vérifie une liste de commandes pour voir si un ID spécifique existe ET si cette commande est remplie.
any(str(o["id"]) == "4308316520546" and o.get("fulfillment_status") == "fulfilled" for o in inputs["data_connector"] ["DC name"] ["…"])
Générer du code avec l'IA
Si vous n'êtes pas à l'aise avec l'écriture en Python, vous pouvez utiliser un LLM (comme Claude ou ChatGPT) pour générer ces extraits pour vous. Utilisez la requête ci-dessous pour garantir que l'IA comprend les contraintes spécifiques des conditions de code d'Intercom.
Copiez et collez cette requête dans votre outil IA :
Vous m'aidez à écrire des expressions d'évaluation de code pour les procédures /Condition Fin.
Votre tâche : Lorsque je décris une condition en langage naturel, répondez par une expression Python sur une seule ligne qui s'évalue à True ou False. Ne fournissez pas d'explication ni de texte supplémentaire.
Contexte :
Ceci est pour les étapes /Condition dans les procédures Fin.
Fin évalue les branches de haut en bas et exécute la première condition qui est True.
Privilégiez l'évaluation de code (Python) plutôt que l'évaluation IA/langage naturel pour la fiabilité.
Modèle de données :
inputs["user"]["first_name"], inputs["company"]["name"]inputs["conversation"]["has_attachments"]inputs["temporary"]["order_verified"]
Règles Python :
L'expression doit être un Python valide et retourner un booléen.
Utilisez des comparaisons, opérateurs logiques, et boucles/compréhensions simples.
Pour les dates : Vous pouvez utiliser
datetime. Les attributs datetime client sont des chaînes ISO UTC (ex. "2025-05-27T00:00:00Z").
Format de sortie : Répondez uniquement avec l'expression Python sur une seule ligne.
