Condições padrão funcionam bem para a maioria das situações, mas às vezes você precisa criar regras mais rigorosas, como verificar se uma data é exatamente 30 dias atrás ou se uma lista contém um item específico.
A avaliação de código no passo de Condição permite definir lógica confiável e determinística para seus Fin Procedures usando Python. Recomendamos usar este método para ações críticas porque é determinístico e, portanto, mais confiável que linguagem natural.
Dica profissional: Usar código Python nas condições do Fin Procedure oferece lógica precisa e determinística que evita interpretação ou alucinação da IA. O código roda mais rápido que avaliação em linguagem natural, lida com comparações complexas de forma mais confiável e torna sua lógica de ramificação explícita e mais fácil de manter.
O básico das condições de código
Para garantir que sua lógica funcione corretamente, seu código deve seguir estas regras específicas:
Resultado booleano: A expressão deve sempre avaliar para
TrueouFalse.Acesso ao namespace: Você pode acessar atributos usando o dicionário inputs.
Acessando atributos de dados
Você pode referenciar dados de várias fontes usando a estrutura específica do namespace:
Dados da empresa:
inputs["company"]["name"]Dados do usuário:
inputs["user"]["first_name"]Dados da conversa:
inputs["conversation"]["has_attachments"]Dados temporários:
inputs["temporary"]["order_verified"]Dados do Data Connector:
inputs["data_connector"]["Data connector name"]["order_verified"]
Saídas do Data connector
Ao usar um Data Connector em um Procedure, referencie suas saídas via os atributos temporários somente leitura gerados a partir da resposta. Recomendamos usar atributos temporários em vez de um namespace data_connector separado para garantir que sua lógica permaneça determinística.
Nota: Os nomes dos atributos devem ser referenciados exatamente como aparecem no seu esquema de dados.
Verificando códigos de status para tratamento avançado de erros
O status_code de uma chamada do data connector é exposto como um atributo de saída. Use-o em um passo de Condição para ramificar em códigos HTTP específicos para tratamento avançado de falhas.
Verifique se um data connector retornou uma resposta de erro:
inputs["data_connector"]["Your connector name"]["status_code"] >= 400
Trate um código de erro específico:
inputs["data_connector"]["Your connector name"]["status_code"] == 404
Exemplos comuns de expressões
Aqui estão padrões padrão de Python que você pode usar para construir suas condições:
Verificações booleanas
Verifique se um valor é explicitamente verdadeiro ou falso.
inputs["temporary"]["order_verified"] == False
Comparações de strings
É prática recomendada normalizar strings (por exemplo, torná-las minúsculas) antes de compará-las para evitar erros de sensibilidade a maiúsculas e minúsculas.
inputs["temporary"]["order_fulfillment_status"].lower() == "partial"
Lógica combinada
Você pode combinar várias verificações usando os operadores and / or.
inputs["temporary"]["order_verified"] == True and inputs["temporary"]["order_fulfillment_status"].lower() == "partial"
Verificações de "Contém"
Verifique se uma substring específica existe dentro de uma string maior.
"uk" in inputs["temporary"]["url"].lower()
Trabalhando com atributos datetime
Condições de código têm acesso ao módulo padrão datetime do Python, permitindo realizar lógica complexa baseada em tempo.
Entendendo fusos horários e formatação
Para evitar erros, é fundamental entender como o Intercom lida com diferentes tipos de atributos de data:
Atributos definidos pelo cliente: Atributos armazenados no Intercom (Usuário, Conversa, Personalizado ou Padrão) são sempre expostos como strings ISO 8601 normalizadas em UTC (ex.:
2025-05-27T00:00:00Z).Atributos do data connector: Datas recebidas de APIs externas são expostas exatamente como recebidas. Nenhuma normalização é aplicada. Pode ser necessário analisar ou converter manualmente para UTC se for necessária consistência.
Nota: Todo código dentro do ambiente sandbox do Intercom opera em um fuso horário baseado em UTC por padrão. A função datetime.datetime.now() sempre retorna a hora atual em UTC, independentemente das configurações do seu sistema local.
Exemplos de datetime
Verifique se o horário atual é maior que ontem
(datetime.datetime.now() > datetime.datetime.now() - datetime.timedelta(days=1)) and len(inputs["temporary"]["Get movies"]) > 0
Verifique se a data de um pedido está dentro dos últimos 30 dias
Este exemplo compara o horário UTC atual com um atributo temporário de data do 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
Verifique se o horário de um pedido é antes das 14h de hoje (UTC)
Esta verificação complexa extrai os componentes de data e hora para verificar uma janela 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
Dica: Fin está totalmente ciente do fuso horário do cliente. Quando o Fin coleta um atributo datetime durante uma conversa, ele interpreta o valor no fuso horário local do cliente, converte para UTC e armazena.
Loops e arrays
Você pode iterar sobre arrays (listas) de dados para validar condições específicas.
Suportado: Você pode iterar sobre um array para verificar se uma condição específica é atendida (por exemplo, "Algum pedido nesta lista tem status 'fulfilled'?" ).
Exemplo: Verifique um pedido específico cumprido
Este código verifica uma lista de pedidos para ver se um ID específico existe E se esse pedido está cumprido.
any(str(o["id"]) == "4308316520546" and o.get("fulfillment_status") == "fulfilled" for o in inputs["data_connector"] ["DC name"] ["…"])
Gerar código com IA
Se você não se sente confortável escrevendo Python, pode usar um LLM (como Claude ou ChatGPT) para gerar esses trechos para você. Use o prompt abaixo para garantir que a IA entenda as restrições específicas das condições de código do Intercom.
Copie e cole este prompt na sua ferramenta de IA:
Você está me ajudando a escrever expressões de avaliação de código para Fin Procedure /Condition.
Sua tarefa: Quando eu descrever uma condição em linguagem natural, responda com uma expressão Python de uma linha que avalie para True ou False. Não forneça explicações ou texto extra.
Contexto:
Estas são para passos /Condition em procedimentos Fin.
Fin avalia os ramos de cima para baixo e executa a primeira condição que for True.
Prefira avaliação de código (Python) em vez de avaliação por IA/linguagem natural para maior confiabilidade.
Modelo de dados:
inputs["user"]["first_name"], inputs["company"]["name"]inputs["conversation"]["has_attachments"]inputs["temporary"]["order_verified"]
Regras do Python:
A expressão deve ser Python válido e retornar um booleano.
Use comparações, operadores lógicos e loops/compreensões simples.
Para datas: Você pode usar
datetime. Atributos datetime do cliente são strings ISO UTC (ex.: "2025-05-27T00:00:00Z").
Formato de saída: Responda apenas com a expressão Python em uma linha.
