Passar para o conteúdo principal

Como escrever condições de código para Procedimentos Fin

Domine condições de código mais rápido com atributos de dados, manipulação de datetime e fuso horário, loops e arrays, e exemplos de código gerados por IA.

Escrito por Beth-Ann Sher

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 Procedimentos Fin 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 Procedimento Fin 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 True ou False.

  • 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 Procedimento, 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.


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:

  1. Atributos definidos pelo cliente: Atributos armazenados no Intercom (Usuário, Conversa, Personalizado ou Padrão) são sempre expostos como strings ISO 8601 normalizadas para UTC (ex.: 2025-05-27T00:00:00Z).

  2. 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'?" ).

  • Não suportado: Você não pode iterar sobre um array para executar uma etapa de fluxo de trabalho para cada item. Condições de código são estritamente para avaliação, não para execução de ações.

Exemplo: Verificar 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 Procedimentos Fin / Condição.

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ção ou texto extra.

Contexto:

  • Estas são para passos /Condicional 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 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.

Respondeu à sua pergunta?