Las condiciones estándar funcionan bien para la mayoría de las situaciones, pero a veces necesitas crear reglas más estrictas, como verificar si una fecha es exactamente hace 30 días o si una lista contiene un elemento específico.
La evaluación de código en el paso de Condición te permite definir lógica confiable y determinista para tus Fin Procedures usando Python. Recomendamos usar este método para acciones críticas porque es determinista y por lo tanto más confiable que el lenguaje natural.
Consejo profesional: Usar código Python en las condiciones de Fin Procedure te brinda lógica precisa y determinista que evita la interpretación o alucinación de IA. El código se ejecuta más rápido que la evaluación en lenguaje natural, maneja comparaciones complejas con mayor fiabilidad y hace que tu lógica de ramificación sea explícita y más fácil de mantener.
Los fundamentos de las condiciones de código
Para asegurar que tu lógica funcione correctamente, tu código debe seguir estas reglas específicas:
Resultado booleano: La expresión siempre debe evaluarse a
TrueoFalse.Acceso al espacio de nombres: Puedes acceder a los atributos usando el diccionario inputs.
Accediendo a atributos de datos
Puedes referenciar datos de varias fuentes usando la estructura específica del espacio de nombres:
Datos de la empresa:
inputs["company"]["name"]Datos del usuario:
inputs["user"]["first_name"]Datos de la conversación:
inputs["conversation"]["has_attachments"]Datos temporales:
inputs["temporary"]["order_verified"]Datos del Data Connector:
inputs["data_connector"]["Data connector name"]["order_verified"]
Salidas del Data Connector
Cuando usas un Data Connector en un Procedure, referencia sus salidas a través de los atributos temporales de solo lectura generados a partir de la respuesta. Recomendamos usar atributos temporales en lugar de un espacio de nombres data_connector separado para asegurar que tu lógica siga siendo determinista.
Nota: Los nombres de atributos deben referenciarse exactamente como aparecen en tu esquema de datos.
Ejemplos comunes de expresiones
Aquí hay patrones estándar de Python que puedes usar para construir tus condiciones:
Comprobaciones booleanas
Verifica si un valor es explícitamente verdadero o falso.
inputs["temporary"]["order_verified"] == False
Comparaciones de cadenas
Es buena práctica normalizar las cadenas (por ejemplo, convertirlas a minúsculas) antes de compararlas para evitar errores de sensibilidad a mayúsculas y minúsculas.
inputs["temporary"]["order_fulfillment_status"].lower() == "partial"
Lógica combinada
Puedes combinar múltiples comprobaciones usando los operadores and / or.
inputs["temporary"]["order_verified"] == True and inputs["temporary"]["order_fulfillment_status"].lower() == "partial"
Comprobaciones de "Contiene"
Verifica si una subcadena específica existe dentro de una cadena más grande.
"uk" in inputs["temporary"]["url"].lower()
Trabajando con atributos datetime
Las condiciones de código tienen acceso al módulo estándar datetime de Python, lo que te permite realizar lógica compleja basada en tiempo.
Comprendiendo zonas horarias y formatos
Para evitar errores, es crítico entender cómo Intercom maneja diferentes tipos de atributos de fecha:
Atributos definidos por el cliente: Los atributos almacenados en Intercom (Usuario, Conversación, Personalizado o Estándar) siempre se exponen como cadenas ISO 8601 normalizadas a UTC (por ejemplo,
2025-05-27T00:00:00Z).Atributos del data connector: Las fechas recibidas de APIs externas se exponen exactamente como se reciben. No se aplica normalización. Puede que necesites analizar o convertir manualmente estas fechas a UTC si se requiere consistencia.
Nota: Todo el código dentro del entorno sandbox de Intercom opera en una zona horaria basada en UTC por defecto. La función datetime.datetime.now() siempre devuelve la hora UTC actual, sin importar la configuración local de tu sistema.
Ejemplos de datetime
Verifica si la hora actual es mayor que ayer
(datetime.datetime.now() > datetime.datetime.now() - datetime.timedelta(days=1)) and len(inputs["temporary"]["Get movies"]) > 0
Verifica si la fecha de un pedido está dentro de los últimos 30 días
Este ejemplo compara la hora UTC actual contra un atributo temporal de fecha de pedido.
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
Verifica si la hora de un pedido es antes de las 2 PM hoy (UTC)
Esta comprobación compleja extrae los componentes de fecha y hora para verificar una ventana de corte específica.
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
Consejo: Fin es totalmente consciente de la zona horaria del cliente. Cuando Fin recopila un atributo datetime durante una conversación, interpreta el valor en la zona horaria local del cliente, lo convierte a UTC y lo almacena.
Bucles y arrays
Puedes iterar sobre arrays (listas) de datos para validar condiciones específicas.
Soportado: Puedes iterar sobre un array para verificar si se cumple una condición específica (por ejemplo, "¿Algún pedido en esta lista tiene un estado de 'fulfilled'?" ).
No soportado: No puedes iterar sobre un array para ejecutar un paso de flujo de trabajo para cada elemento. Las condiciones de código son estrictamente para evaluación, no para ejecución de acciones.
Ejemplo: Verificar un pedido específico cumplido
Este código verifica una lista de pedidos para ver si existe un ID específico Y si ese pedido está cumplido.
any(str(o["id"]) == "4308316520546" and o.get("fulfillment_status") == "fulfilled" for o in inputs["data_connector"] ["DC name"] ["…"])
Generar código con IA
Si no te sientes cómodo escribiendo Python, puedes usar un LLM (como Claude o ChatGPT) para generar estos fragmentos por ti. Usa el siguiente prompt para asegurar que la IA entienda las restricciones específicas de las condiciones de código de Intercom.
Copia y pega este prompt en tu herramienta de IA:
Me estás ayudando a escribir expresiones de evaluación de código para Fin Procedure /Condition.
Tu trabajo: Cuando describa una condición en lenguaje natural, responde con una expresión Python de una sola línea que evalúe a True o False. No des explicación ni texto extra.
Contexto:
Estos son para pasos /Condition en procedimientos Fin.
Fin evalúa las ramas de arriba hacia abajo y ejecuta la primera condición que sea True.
Prefiere la evaluación de código (Python) sobre la evaluación de IA/lenguaje natural para mayor fiabilidad.
Modelo de datos:
inputs["user"]["first_name"], inputs["company"]["name"]inputs["conversation"]["has_attachments"]inputs["temporary"]["order_verified"]
Reglas de Python:
La expresión debe ser Python válido y devolver un booleano.
Usa comparaciones, operadores lógicos y bucles/comprensiones simples.
Para fechas: Puedes usar
datetime. Los atributos datetime del cliente son cadenas ISO UTC (ej. "2025-05-27T00:00:00Z").
Formato de salida: Responde solo con la expresión Python en una línea.
