Blocos e armadilhas

Schemas dos nodes do flowbuilder e os erros que a API aceita em silêncio mas o motor ignora.

6 min de leitura Atualizado em 4 de set. de 2026

O que cada node faz e — mais importante — o que grava sem erro mas não funciona. Publicação em Fluxos. Handles de conexão na origem: a (saída principal), a1/a2… (opções de menu), b (fallback do stopFlow), timeout (saída por inatividade do menu).

NodePara queArmadilha durável
startInício; id sempre "1", únicoSó tem saída; não configure efeitos nele
singleBlockSequência de mensagens/mídias (seq + elements)O number de cada element tem o prefixo do type (message0, img0, video0, audio0, interval0). Abreviou (m0, v0) → o motor pula o bloco inteiro no atendimento
stopFlowPergunta e captura resposta em variávelSaída a = respondeu, b = timeout. A pergunta vive dentro dele, nunca num Conteúdo anterior
menuOpções (typeMenu: list ou number)Saída de inatividade é o handle timeoutnunca b (a API aceita, o motor ignora). list só renderiza lista nativa no WhatsApp Oficial; no QR cai para numérico sozinho (não é bug)
actionMeta-bloco de efeitos (taggy, queueDirect, mathematicalOperation, ticketManager, notification, remarketing, transfertoAI…)notification existe dentro de action.actions — node isolado notification é legado e não funciona
transfertoAI (subação)Entrega a conversa a um assistenteShape exato data.assistant: { id, name } (plano assistentId grava mas o painel fica vazio). Assistente tem de existir na mesma conta. A IA recebe o histórico — o prompt continua de onde o fluxo parou
conditionif/else (typeRule: AND/OR)Operadores em MAIÚSCULO (EQUAL, NOTEQUAL, CONTAINS, NOTCONTAINS, BEGINSWITH, HASSOMEVALUE); schema antigo minúsculo grava mas não dispara. Tag exige tagId + tagName
httpRequestChamada HTTP (type, baseUrl, dataHttp e headerHttp como strings de JSON, inputs com data: ['#campo']keyValue)Nunca inclua o campo request (snapshot de teste, pode ter dado real de cliente). Padrão relay: loop stopFlowhttpRequest
randomizer / distributorA/B por % / round-robinConecte ambas as saídas (a+b, a1+a2…) ou leads caem no vazio

Mídias

  • O value de um element de mídia é o arquivo no storage: suba via POST /quick-messages multipart (campo medias, não media) e reaproveite o url no fluxo — copiar o value reaproveita a mídia em outro fluxo/conta sem re-upload.
  • Não delete a quick-message porta-arquivo — pode apagar o arquivo e quebrar a mídia no fluxo.
  • Ritmo humano: element interval em segundos entre mensagens (seq: ['message0','interval0','message1']).
  • A IA não envia mídia: foto/catálogo vai em bloco do fluxo antes do transfertoAI.