Fluxos
Como um agente de IA lista, lê, cria e publica fluxos de conversa sem quebrar o atendimento real.
Como operar fluxos de conversa pela API interna. Pré-requisito: Autenticação. O que cada bloco faz está em Blocos e armadilhas; o passo a passo humano está em Gestão de fluxos.
Alterar um fluxo sem quebrar
Ciclo obrigatório — backup → modifica → publica → confirma:
// 1. BACKUP: leia o fluxo atual
const atual = await (await ctx.get(`/flowbuilder/flow/${ID}`, { headers: H })).json();
// 2. Liste todos quando precisar achar ID por nome
const todos = await (await ctx.get('/flowbuilder/all/get', { headers: H })).json();
// → { flows: [{ id, name, folderId, active, channel }] }
// 3. Criar fluxo vazio (quando for novo; não toca nos existentes)
const criado = await ctx.post('/flowbuilder', { headers: H, data: { name: 'Nome', shortcuts: [], folderId: null, channel: 'whatsapp' } });
// 4. PUBLICAR nodes + conexões (idFlow como STRING; retorno "ok" = sucesso, {} = payload errado)
await ctx.post('/flowbuilder/flow', { headers: H, data: { idFlow: String(ID), nodes, connections } });
// 5. CONFIRMAR com GET após pausa — nunca com o GET imediato
⚠️ Leitura suja pós-escrita: logo após um POST /flowbuilder/flow, o GET pode devolver o estado anterior. Entre deploys no mesmo fluxo, espere ~4–5s e re-verifique antes de modificar de novo — senão o 2º POST sobrescreve com base velha e come a mudança do 1º.
Pastas
POST /folders/flowcria a pasta mas não devolve o id: façaGET /folders/flowem seguida e filtre pelo nome.- Mover fluxo para pasta é
PUT /flowbuilder/folder/movecom{ idFlow, idFolder }. - Não existe
PUT /flowbuilder/{id}(retorna 404) — conteúdo de fluxo só peloPOST /flowbuilder/flowdo ciclo acima.
Import: confira as conexões
Ao importar um fluxo, o Sagazchat pode trazer os nós mas soltar conexões de sub-grafos. Sempre rode uma BFS a partir do start após importar e religue nós inalcançáveis ou sem saída antes de ativar.