WhatsApp: fluxos do bot
Roteiros de conversa do bot de WhatsApp: fluxos, blocos, ligações, sessões, testes, pedidos de mudança dos sellers e pacotes prontos.
O bot de WhatsApp da loja segue roteiros chamados fluxos. Quando um cliente escreve, a plataforma escolhe um fluxo (por palavra-chave ou pelo fluxo padrão), abre uma sessão para ele e anda de bloco em bloco: manda uma mensagem, mostra um menu, pergunta um dado, consulta o catálogo, passa para um atendente. Esta seção documenta como ler, montar, testar e instalar esses fluxos.
Como funciona
- Crie o fluxo
POST /flowscomnamee, se quiser disparo por palavra,trigger_type: "keyword"etrigger_keywords. - Monte os blocos e as ligações
POST /flows/{id}/blockspara cada passo ePOST /flows/{id}/connectionspara cada seta. - Defina o bloco inicial
PATCH /flows/{id}comstart_block_id. - Confira e teste
GET /flows/{id}/validateePOST /flows/{id}/simulate. - Ative
PATCH /flows/{id}comstatus: "active". Depois useGET /inbound-probepara ver o resultado com um telefone real.
Estados do fluxo:
| Estado | Letra | Significado |
|---|---|---|
draft | R | Rascunho: não atende. |
active | A | Ativo: atende conforme o gatilho. |
inactive | P | Inativo: desligado, mas guardado. |
archived | H | Arquivado. |
Estados da sessão do cliente: active (em andamento), completed (terminou), abandoned (venceu ou foi trocada) e errored (um bloco falhou).
Conceitos-chave
Gatilho: como um fluxo é escolhido
Cada fluxo tem um trigger_type. keyword: dispara quando a mensagem casa com uma das trigger_keywords (comparação exact, starts_with, contains ou regex; vence a maior trigger_priority). inbound_default: atende quem escreve sem casar com nenhuma palavra e sem sessão em andamento. manual: nunca dispara sozinho. Se uma sessão do cliente já está em andamento, a mensagem continua nela.
Sessão
Guarda o bloco atual e as variáveis (session_data). Uma sessão parada além de expires_at é abandonada e a próxima mensagem abre outra, do bloco inicial.
Seller e loja
Fluxos podem ser da loja toda (sem vendor_id) ou de um seller (lojista). Administrador restrito a um seller só vê e altera os fluxos dele; um superadministrador da loja vê todos.
Estado em letra ou palavra
O estado do fluxo pode voltar como letra (A) ou palavra (active), conforme a loja. Ao escrever, mande sempre a palavra.
Endpoints
| Método | Caminho | Para que serve | Página |
|---|---|---|---|
GET | /api/v1/admin/whatsapp/flows | Lista os fluxos de conversa do bot | Ler fluxos |
GET | /api/v1/admin/whatsapp/flows/{id} | Lê um fluxo | Ler fluxos |
GET | /api/v1/admin/whatsapp/flows/{id}/validate | Confere a estrutura de um fluxo | Ler fluxos |
POST | /api/v1/admin/whatsapp/flows | Cria um fluxo de conversa | Criar e alterar fluxos |
PATCH | /api/v1/admin/whatsapp/flows/{id} | Altera um fluxo | Criar e alterar fluxos |
DELETE | /api/v1/admin/whatsapp/flows/{id} | Apaga um fluxo | Criar e alterar fluxos |
POST | /api/v1/admin/whatsapp/flows/{id}/clone | Duplica um fluxo com blocos e ligações | Criar e alterar fluxos |
GET | /api/v1/admin/whatsapp/flows/{id}/blocks | Lista os blocos de um fluxo | Blocos |
POST | /api/v1/admin/whatsapp/flows/{id}/blocks | Adiciona um bloco a um fluxo | Blocos |
GET | /api/v1/admin/whatsapp/blocks/{block_id} | Lê um bloco | Blocos |
PATCH | /api/v1/admin/whatsapp/blocks/{block_id} | Altera um bloco | Blocos |
DELETE | /api/v1/admin/whatsapp/blocks/{block_id} | Apaga um bloco e suas ligações | Blocos |
GET | /api/v1/admin/whatsapp/flows/{id}/connections | Lista as ligações de um fluxo | Ligações |
POST | /api/v1/admin/whatsapp/flows/{id}/connections | Liga dois blocos de um fluxo | Ligações |
DELETE | /api/v1/admin/whatsapp/connections/{conn_id} | Apaga uma ligação | Ligações |
POST | /api/v1/admin/whatsapp/flows/{id}/simulate | Simula uma mensagem de cliente num fluxo | Testar um fluxo |
GET | /api/v1/admin/whatsapp/inbound-probe | Mostra para onde uma mensagem de um telefone cairia | Testar um fluxo |
GET | /api/v1/admin/whatsapp/flow-sessions | Lista as sessões de fluxo | Sessões de fluxo |
GET | /api/v1/admin/whatsapp/flow-sessions/{id} | Lê uma sessão de fluxo | Sessões de fluxo |
GET | /api/v1/admin/whatsapp/flow-sessions/{id}/variants | Lista as variações escolhidas numa sessão | Sessões de fluxo |
POST | /api/v1/admin/whatsapp/flow-sessions/{id}/test-run | Roda uma mensagem de teste numa sessão | Sessões de fluxo |
GET | /api/v1/admin/whatsapp/flow-requests | Lista os pedidos de mudança de fluxo dos sellers | Pedidos de mudança |
POST | /api/v1/admin/whatsapp/flow-requests/{id}/review | Registra a decisão sobre um pedido de mudança | Pedidos de mudança |
POST | /api/v1/admin/whatsapp/vendors/{vendor_id}/ensure-flow | Garante que o seller tenha um fluxo próprio | Pedidos de mudança |
GET | /api/v1/admin/whatsapp/capabilities | Lista as habilidades do assistente de WhatsApp | Pacotes de experiência |
GET | /api/v1/admin/whatsapp/playbooks | Lista os pacotes de experiência | Pacotes de experiência |
GET | /api/v1/admin/whatsapp/playbooks/{slug} | Lê um pacote de experiência com seus fluxos | Pacotes de experiência |
POST | /api/v1/admin/whatsapp/playbooks/{slug}/install | Instala um pacote de experiência | Pacotes de experiência |
Erros comuns
- Ativar um fluxo sem
start_block_id: ele não responde. Rode/validateprimeiro. - Deixar o
trigger_typeemmanuale esperar que o fluxo dispare sozinho. - Criar um gatilho
keywordsem palavras: a plataforma recusa com 400. - Enviar só uma chave no
configao alterar um bloco: o objeto inteiro é substituído. - Mandar
start_block_id: nullpara limpar o bloco inicial:nullé ignorado, use"". - Apagar o bloco inicial: o fluxo continua apontando para ele.
- Usar
test-runna sessão de um cliente real: ela avança de verdade. Teste com/simulate. - Instalar o mesmo pacote duas vezes: cria fluxos duplicados.
- Passar um id que não é UUID: várias rotas respondem 500 em vez de 400.