Flow Builder
O Flow Builder é o editor visual de fluxos conversacionais determinísticos. Ele permite construir jornadas de conversa completas sem programar, conectando nós que representam cada etapa da interação com o usuário.
Estrutura Geral de um Flow
[Nó Inicial] ──► [Saudação]
│
┌──────┴──────┐
▼ ▼
[#comprar] [#suporte]
│ │
▼ ▼
[Coleta CPF] [Abre Ticket]
│
▼
[Confirmar Pedido]
│
┌─────────┴─────────┐
▼ ▼
[✅ Sucesso] [%anything_else]Um flow é composto por:
- Nós — pontos de decisão e resposta
- Edges — conexões entre nós
- Responses — conteúdo enviado ao usuário
- Triggers — eventos especiais (início, fallback)
- Intents — exemplos de frases treinadas
- Entities — valores capturáveis (números, datas, nomes)
Nós (Nodes)
Cada nó representa um estado da conversa. Um nó possui:
| Campo | Descrição |
|---|---|
| Título | Nome interno (não enviado ao usuário) |
| Condição | Regra que ativa este nó |
| Responses | Lista de respostas a enviar |
| Context Actions | Variáveis a definir/capturar |
| Actions | Integrações (webhooks, CRM, etc.) |
| SkipUserInput | Executa sem aguardar mensagem do usuário |
| SelectChildrenByPriority | Avalia filhos por ordem, não por correspondência |
Nó Inicial
O flow sempre começa pelo Nó Inicial, que possui o ID fixo 000000000000000000000000. Ele é o ponto de entrada de toda conversa nova.
SkipUserInput
Quando ativado, o nó é processado imediatamente após o nó anterior, sem esperar uma nova mensagem do usuário. Útil para:
- Nós de transição intermediária
- Confirmações automáticas
- Sequências de mensagens encadeadas
SelectChildrenByPriority
Quando ativado, os nós filhos são avaliados na ordem em que aparecem no fluxo, e o primeiro que satisfazer a condição é ativado. Sem esta flag, o sistema avalia todos e pode escolher o mais relevante.
Condições
Cada nó (exceto o inicial) precisa de uma condição para ser ativado.
Intents (`#`)
Representam a intenção por trás da mensagem do usuário. São treinadas com exemplos de frases:
#comprar → "quero comprar", "me interessa", "pode me enviar o preço?"
#cancelar → "cancelar pedido", "não quero mais", "desistir"
#suporte → "não está funcionando", "preciso de ajuda", "problema"Para usar: #nome_da_intent
Entidades (`@`)
Representam valores específicos dentro da mensagem do usuário. São configuradas com sinônimos e valores:
@numero → "42", "cento e vinte", "3" (números em geral)
@cpf → CPF formatado
@data → datas em formatos variados
@produto → "camiseta", "tênis", "calça" (com sinônimos)Para usar: @nome_da_entidade
Condição de Sistema (`%`)
Condições especiais predefinidas pela plataforma:
| Condição | Descrição |
|---|---|
%anything_else |
Qualquer mensagem que não corresponda a nenhum outro nó (fallback global) |
Operadores
Você pode combinar múltiplas condições:
| Operador | Sintaxe | Exemplo |
|---|---|---|
| E (AND) | E- |
#comprar E- @produto |
| OU (OR) | OU- |
#sim OU- #confirmar |
| Igual | =- |
@status =- ativo |
| Diferente | !=- |
@status !=- cancelado |
Tipos de Resposta
Cada nó pode ter um ou mais responses associados. O tipo define como o conteúdo é apresentado ao usuário.
`text` — Resposta Única
Envia uma mensagem de texto simples:
Olá! Seja bem-vindo à Empresa X. Como posso te ajudar?`multiple` — Resposta Aleatória
Define várias opções de texto. O sistema escolhe aleatoriamente uma delas a cada execução. Ótimo para variar respostas repetitivas:
Opção 1: "Entendido! Vou verificar isso para você."
Opção 2: "Certo, deixa eu checar aqui."
Opção 3: "Perfeito! Um momento enquanto consulto."`options` — Botões / Opções Selecionáveis
Apresenta botões de resposta rápida para o usuário escolher:
Qual serviço você precisa?
┌─────────────┐
│ 💰 Financeiro│
├─────────────┤
│ 🔧 Suporte │
├─────────────┤
│ 📦 Pedidos │
└─────────────┘Cada botão cria uma edge para o nó correspondente.
Connections (Edges)
Edges são as conexões entre nós. Cada tipo define como o fluxo se move:
| Tipo | Descrição |
|---|---|
flow |
Transição normal após resposta |
jump |
Pula diretamente para outro nó sem processamento |
button |
Criado automaticamente pelos botões de options |
jump_and_process |
Pula para outro nó e o processa como se fosse uma mensagem nova |
jump_and_response |
Pula e envia a resposta do nó de destino |
Triggers
Triggers são eventos especiais que disparam ações independentes do fluxo de nós.
`START_CONVERSATION`
Executado quando uma nova conversa começa. Ideal para:
- Enviar mensagem de boas-vindas
- Capturar dados iniciais
- Configurar variáveis de contexto iniciais
Ações disponíveis no trigger:
RESPONSE— envia uma respostaJUMP_TO— vai para um nó específicoSET_CONTEXT— define variáveis de contextoJUMP_AND_PROCESS— vai para um nó e o processa
`MISSING_ANYTHING_ELSE`
Executado quando o sistema não encontra nenhum nó correspondente à mensagem do usuário (e não há nó com %anything_else). É o fallback de último recurso.
Context Actions
Context Actions permitem salvar e capturar dados durante o fluxo. São executadas no momento em que o nó é ativado.
Usuário: "Meu CPF é 123.456.789-00"
↓
[Nó: Capturar CPF]
Context Action:
type: set_entity
key: cpf_usuario
value: @cpf
↓
Variável $cpf_usuario = "123.456.789-00"Veja a documentação completa em Variáveis ($).
Intents e Entities: Treinamento
Para que o sistema reconheça #intents e @entities, é necessário treinar o chatbot com exemplos:
Intents
Cada intent precisa de pelo menos 3 exemplos de frases que expressem aquela intenção:
Intent: #comprar
Exemplos:
- "quero comprar"
- "me interessa adquirir"
- "quanto custa?"
- "tem disponível?"
- "pode me passar o preço?"Quanto mais variados os exemplos, melhor o reconhecimento.
Entities
Cada entidade precisa de sinônimos ou valores aceitos:
Entity: @tamanho_roupa
Valores: P, M, G, GG, XG
Sinônimos:
P → "pequeno", "small", "P"
M → "médio", "medium", "M"
G → "grande", "large", "G"Versões de Snapshot
Cada vez que você publica um flow, é criada uma nova versão (snapshot). A plataforma mantém o histórico de versões, permitindo:
- Rollback para versão anterior
- Comparação entre versões
- A/B testing de fluxos
O flow só fica ativo para novos usuários após a publicação.