Pular para o conteúdo

Execuções e testes

O botão Testar, no topo do editor, cria uma execução com o selo Teste. A seção Atividade, no trilho esquerdo, reúne essa execução e as que vieram de gatilhos reais.

Teste não significa ambiente descartável: o run e seus passos ficam no histórico, algumas consultas usam registros reais e Analisar com IA executa e consome créditos. Use um alvo apropriado e leia as limitações abaixo antes de interpretar o resultado.

Testar exige automations.write (editar Automações), mas a automação pode estar desligada. Testes repetidos são permitidos e cada um cria outro run no histórico. A consulta da Atividade segue o acesso de leitura das automações da organização.

Ao abrir Testar automação:

  • Canvas atual é o padrão e executa o grafo aberto, inclusive alterações não salvas;
  • Versão no ar aparece quando existe publicação e executa essa versão imutável.

O backend valida o grafo antes de criar o run. Erros cobertos pelo validador fecham o diálogo e destacam os nós no canvas. Nem toda configuração obrigatória de ação é validada; um teste ainda pode começar e falhar num passo vazio ou incompleto.

Com mais de um gatilho, selecione Qual gatilho simular. O teste começa no ramo que sai desse nó.

GatilhoAlvo pedido
Evento de conversa; Sem resposta na conversaconversa
Tag do contato; Contato adicionado à lista; Audiênciacontato
Agendarobjeto JSON com o payload simulado

Para Agendar, o exemplo contém scheduled_for e fired_at em ISO. A ajuda ainda chama esse objeto de payload de Webhook, embora Webhook não seja um gatilho atual. Em Contato adicionado à lista, escolher o contato não preenche list_id, list_name ou consent_source; teste expressões que dependam desses campos separadamente.

É possível continuar sem conversa ou contato; passos que exigem esse contexto podem falhar. A pesquisa lê registros reais da organização, não uma cópia isolada.

O teste usa o mesmo encadeamento do motor. Ele executa imediatamente por até cerca de 20 segundos, ou para antes ao chegar em Aguardar, ao terminar ou falhar. Se precisar continuar depois, o motor normal retoma o run pela fila.

Passo ou efeitoNo teste
Enviar mensageminterpola e grava simulated: true e would_send; não envia
Enviar e-mailgrava assunto/lista simulados; não cria disparo
Chamar webhookgrava a chamada simulada; não faz requisição
Atribuir, tags, gravar no contato, passar para agente e concluir conversacalcula a saída, sem alterar o registro de negócio
Escolher contatoconsulta um contato real, mas não o propaga corretamente aos passos seguintes
Obter conversa do contatoreutiliza uma conversa existente; se não houver, apenas informa que criaria
Condiçãoavalia o contexto disponível e escolhe um ramo
Aguardarrespeita duração e janela reais; uma espera longa também atrasa o teste
Analisar com IAchama o modelo e consome créditos; pode tentar até três vezes
Encerrar automaçãoconclui o run naquele ponto

O aviso do diálogo diz que Obter conversa do contato pode abrir uma conversa real. O runtime atual não cria conversa no teste: reutiliza uma existente ou simula a criação sem propagá-la.

Mensagem e e-mail retornam antes das proteções de saída; o e-mail também retorna antes de validar módulo e remetente. Webhook retorna antes da guarda final de destino e da rede. Um teste simulado não comprova:

  • opt-out, adiamento, vez da resposta ou limite de frequência;
  • janela Meta, modelo aprovado e caixa compatível;
  • módulo de e-mail, remetente ou criação do disparo;
  • alcance, autenticação, resposta ou bloqueio SSRF do webhook.

Valide esses contratos na configuração e acompanhe uma execução real controlada.

A lista mostra 25 runs por página, do mais novo ao mais antigo, com Quando, Gatilho, Status e Custo. Não há filtros. Enquanto uma linha da página está na fila ou em execução, a lista consulta atualizações a cada cinco segundos.

Audiência, Sem resposta na conversa e Agendar usam um run pai para descobrir ocorrências e filhos para percorrer o grafo. O histórico pode conter uma linha pai sem passos e linhas para cada contato, conversa ou horário.

Excluir a automação apaga em cascata versões, runs e passos; desligá-la preserva o histórico.

StatusInterpretação atual
Na filapróximo tick, continuação após o orçamento ou horário de um Aguardar
Executandoreivindicada e processando um passo
Aguardandoexiste na interface, mas o motor não grava esse status; esperas aparecem como Na fila
Concluídachegou ao fim, encontrou Encerrar ou uma condição de saída de Aguardar
Falhouum passo/requisito falhou; leia erro e saída
Canceladausada por runs pais de agenda/campanha substituídos ou desativados; não pela saída de Aguardar

O cron roda uma vez por minuto e reivindica até 50 runs elegíveis. Um gatilho normal pode esperar quase um minuto; Testar inicia o run na própria requisição.

Ao selecionar uma linha, o grafo é o da versão usada pelo run, não o rascunho atual. Nós executados recebem estado e os demais ficam esmaecidos; uma Condição indica o ramo escolhido.

Limitações atuais:

  • o gatilho não gera passo, então seu cartão e a primeira ligação ficam esmaecidos mesmo no ramo usado;
  • a lista não consulta trigger_node_id; Entrou por não distingue dois gatilhos do mesmo tipo;
  • Agendar e seus filhos aparecem como Sem gatilho.

Use grafo e sequência de passos juntos; o primeiro trecho iluminado e o rótulo do gatilho não são prova completa.

Cada item mostra nó, hora, tentativa do run, status, Entrada, Saída e erro. A saída é o melhor registro disponível: JSON da IA, ramo, would_send, skipped ou canceled_by.

Entrada não é o valor resolvido recebido pelo passo. O motor grava apenas { "config": ... }, a configuração crua. Texto/prompt final, variáveis, headers e body resolvidos podem não ficar registrados.

Quando uma proteção impede um envio real, a razão entra em output.skipped, mas o passo fica Concluído. O selo Pulado existe, porém o runner atual não grava esse status.

Código de skippedSignificado
contact_opted_outcontato recusou comunicação automática
conversation_snoozedconversa adiada
customer_awaiting_replycliente falou por último
frequency_caplimite agregado das últimas 24 horas atingido
meta_window_closedtexto livre bloqueado e sem fallback utilizável
template_not_foundmodelo não encontrado
template_no_inboxcaixa compatível não resolvida
template_wrong_inboxmodelo de outra WABA/caixa
template_not_approvedmodelo não aprovado
template_invalidcomponentes ou variáveis inválidos

Quando todos os passos visíveis fecham, a linha do tempo para de atualizar. Isso ocorre em Aguardar e quando o orçamento termina entre passos. Se a lista mudar de Na fila para Concluída e o detalhe não mudar, recarregue ou selecione o run novamente.

Uma falha pode mostrar a explicação do primeiro alerta de configuração aberto da automação abaixo do erro técnico. Esse alerta não é correlacionado ao run ou nó; confirme código e passo antes de agir.

Custo soma débitos de credit_usage associados aos passos. Hoje o consumo direto vem de Analisar com IA. tentativa N é a tentativa do run, não cada chamada interna ao modelo. Em retry por JSON inválido, o provedor pode cobrar até três chamadas, mas o ledger atual pode registrar somente a primeira; em BYOK, compare com o provedor.

  1. Diferencie Teste, run pai e run real de contato/conversa.
  2. Leia status e erro; não confunda Na fila de uma espera com travamento.
  3. Abra a versão histórica e localize o último passo.
  4. Leia Saída primeiro e trate Entrada como configuração crua.
  5. Procure skipped, canceled_by, simulated, would_send e branch.
  6. Após espera/continuação, recarregue para buscar passos posteriores.
  7. Confirme proteções, canal, modelo Meta, e-mail e webhook fora da simulação.
  8. Só então altere o canvas e rode outro teste; o run antigo continua ligado à versão usada.