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).
| Node | Para que | Armadilha durável |
|---|---|---|
start | Início; id sempre "1", único | Só tem saída; não configure efeitos nele |
singleBlock | Sequê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 |
stopFlow | Pergunta e captura resposta em variável | Saída a = respondeu, b = timeout. A pergunta vive dentro dele, nunca num Conteúdo anterior |
menu | Opções (typeMenu: list ou number) | Saída de inatividade é o handle timeout — nunca 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) |
action | Meta-bloco de efeitos (taggy, queueDirect, mathematicalOperation, ticketManager, notification, remarketing, transfertoAI…) | notification só existe dentro de action.actions — node isolado notification é legado e não funciona |
transfertoAI (subação) | Entrega a conversa a um assistente | Shape 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 |
condition | if/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 |
httpRequest | Chamada 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 stopFlow ↔ httpRequest |
randomizer / distributor | A/B por % / round-robin | Conecte ambas as saídas (a+b, a1+a2…) ou leads caem no vazio |
Mídias
- O
valuede um element de mídia é o arquivo no storage: suba viaPOST /quick-messagesmultipart (campomedias, nãomedia) e reaproveite ourlno fluxo — copiar ovaluereaproveita 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
intervalem 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.