Editor de Expressões CEL
O AutoTalk usa expressões CEL (Common Expression Language) em agentes de IA e workflows para tornar o comportamento dinâmico — personalizando mensagens do sistema com nomes de contatos, executando etapas condicionalmente e calculando valores em tempo de execução.
Esta página explica como escrever e testar expressões CEL usando o editor integrado.
Onde as expressões aparecem
As expressões CEL aparecem onde quer que você veja o emblema CEL na interface de configuração:
- Agente > Aba Mensagens — conteúdo da mensagem do sistema (ex.: injetar o nome do contato em um prompt)
- Agente > Aba Ações — o campo Condição em cada etapa de pré-ação ou pós-ação
- Workflow > Etapas — condições de etapas e mapeamentos de saída
O editor de expressões

Quando você abre uma etapa de ação para edição, o campo Condição mostra o editor de expressões compacto. Ele possui:
- Destaque de sintaxe — palavras-chave, strings e operadores são coloridos
- Validação em tempo real — um emblema vermelho de erro aparece com a mensagem de erro exata quando a expressão é inválida (o emblema verde Válido fica no ambiente de trabalho expandido, não no campo compacto)
- Botão Formatar — formata automaticamente a expressão (atalho de teclado:
Ctrl+Shift+F) - Botão Expandir — abre o ambiente de trabalho completo (veja abaixo)
CEL simples vs CEL bruto

Campos de mensagem do sistema (e outros campos de texto) oferecem dois modos de criação, alternados pelo botão CEL no cabeçalho do campo:
| Modo | Exemplo | Quando usar |
|---|---|---|
| CEL Simples (SCEL) | Hello {{contact.name}}! | Sintaxe mais simples para texto com substituições de variáveis |
| CEL Bruto | "Hello " + contact.name + "!" | Sintaxe CEL completa quando você precisa de lógica, condicionais ou chamadas de função |
Ambos os modos produzem o mesmo resultado. A sintaxe {{variavel}} é convertida automaticamente para CEL bruto quando você salva.
Opções avançadas de campo
Expanda a gaveta Avançado abaixo de qualquer campo de expressão para configurar:
| Opção | O que faz |
|---|---|
| Em caso de erro | O que acontece se a expressão gerar um erro em tempo de execução: lançar o erro (throw, o padrão), retornar null, usar fallback para uma string, ou manter a expressão original |
| Tipo de resultado | Tipo de saída esperado (any — o padrão — string, number, boolean, date, array ou object) |
| Valor de fallback | Uma string literal usada como resultado quando Em caso de erro está definido como Fallback para string |
O ambiente de trabalho completo
Clique em Expandir em qualquer editor de expressão para abrir o ambiente de trabalho completo em uma visualização dedicada. Sua barra de ferramentas tem botões de alternância Explorer e Teste que abrem um painel flutuante sobre o editor.
Explorer

O painel Explorer mostra tudo disponível no contexto atual:
- Árvore de variáveis — todas as variáveis que você pode referenciar nesta expressão, expansíveis para ver campos aninhados. Clique em qualquer variável ou campo para inseri-lo no cursor.
- Lista de funções — todas as funções integradas com sua assinatura e descrição. Clique para inserir.
- Caixa de busca — filtra tanto variáveis quanto funções conforme você digita.
As variáveis mostradas dependem de onde a expressão está localizada:
| Localização | Variáveis disponíveis |
|---|---|
| Pré-ações / pós-ações do agente | contact, contactMessage, conversation, company, step(0), step(1), ... |
| Mensagens do sistema do agente | company, contact, contactMessage, conversation, e quaisquer resultados de ferramentas em context.tools.* |
| Etapas do Workflow | _workflow, occurrenceDate, entradas do gatilho, step(0), ... |
Nota: o contato é exposto como a variável
contact— escrevacontact.namenas expressões. (Versões antigas rotulavam o contato comoclientna árvore do Explorer; a chave em tempo de execução sempre foicontact.)
Teste

O painel Teste permite avaliar a expressão com valores de variáveis personalizados sem afetar uma conversa real:
- Edite o JSON à esquerda para definir valores de teste para variáveis (ex.: defina
contact.namecomo"Alice") - Clique em Executar (ou pressione
Ctrl+Enter) - O resultado aparece à direita — seja o valor calculado ou uma mensagem de erro formatada
Referência de variáveis
Para uma lista completa de todas as funções disponíveis, consulte a Referência de Funções CEL.
Estas variáveis estão disponíveis dentro de expressões de agentes:
| Variável | Descrição |
|---|---|
contact | O contato que enviou a mensagem — contact.name, contact.contactIdentification, contact.tags, contact.customAttributes, etc. |
contactMessage | A mensagem recebida — contactMessage.body.text, contactMessage.type, etc. |
conversation | A sessão da conversa — conversation.contactId, conversation.lastMessageAt, conversation.isGroup, etc. |
company | O perfil da sua empresa — company.companyName, company.options, etc. |
step(N) | Saída de uma etapa anterior no índice N — ex.: step(0).jwt, step(2).data[0], ou get(step(1), 'executionContext.status') |
Não existe uma variável
employeede nível superior nos contextos de agentes. Busque os dados de funcionário/profissional por meio de uma etapa de dados e leia-os destep(N).data[0].
Verificações comuns de resultado de etapas
Use as funções auxiliares de etapa para verificações concisas de status de etapas:
step_ok(0) // true se a etapa 0 completou com sucesso
step_data(0, "title") // obter data.title da etapa 0
step_data(1, "choices.0.message.content", "") // resposta do LLM com fallback
step_error(2) // {code, user_message, retryable} ou null
Ou use step(N).executionContext diretamente para verificações de nível mais baixo:
get(step(0), 'executionContext.status') == 'completed'
get(step(1), 'executionContext.safeError.code') == 'unsupported_media_format'
get(step(2), 'executionContext.safeResult.reason') == 'condition_false'
safeError é destinado para depuração e ramificação seguras. Ele não expõe stack traces brutos, segredos ou payloads de provedores.
Consulte a Referência de Funções CEL para a lista completa de funções.
Depurando erros de expressão
Quando uma expressão CEL falha durante uma conversa real, uma bolha de erro aparece no chat — visível apenas para sua equipe, não para o contato.
Lendo a bolha de erro

A bolha colapsada mostra o tipo de erro e uma mensagem de uma linha. Clique em ▼ Expandir para ver o painel de detalhes completo.