# Condições e roteamento: menus, regras e testes A/B

Depois de enviar mensagens, o próximo passo é **decidir caminhos**: menus de atendimento, regras por perfil do contato e testes A/B. Três nós resolvem tudo isso.

## Roteador — o nó de menus

O **Roteador** compara uma variável com valores exatos e envia o contato para a rota correspondente. É o nó ideal para menus ("digite 1 para Suporte…").

![Roteador configurado](https://chat.simplesdesk.com.br/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBMTBtQmc9PSIsImV4cCI6bnVsbCwicHVyIjoiYmxvYl9pZCJ9fQ==--2abe05e23800c50fbcca1d0443629343bb2046f7/tutorial-fluxos-a4-01-roteador.jpg)

Como configurar:
1. **Variável a comparar** — para menus, use `{{context.last_user_reply}}` (última resposta do contato)
2. **Rotas** — um valor por rota. Aceita **vários valores separados por vírgula**: `1, vendas` faz tanto "1" quanto "vendas" caírem na mesma rota
3. **Handle padrão** — para onde vai quem digitou algo fora do menu. **Sempre conecte** (ex.: mensagem "Opção inválida" voltando ao menu)

## Condição Avançada — regras com operadores

Quando a decisão não é um menu, e sim uma **regra** ("se tem oportunidade aberta", "se a resposta contém sim", "se o CPF não está vazio"), use a **Condição Avançada**:

![Condição Avançada](https://chat.simplesdesk.com.br/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBMTRtQmc9PSIsImV4cCI6bnVsbCwicHVyIjoiYmxvYl9pZCJ9fQ==--f9c44264d1abf448b26df6ac7677ef195380fae5/tutorial-fluxos-a4-02-condicao-avancada.jpg)

- Cada **Caminho** tem sua condição: atributo/variável + operador (igual, contém, vazio, maior que, regex…) + valor
- **A primeira condição que corresponder vence** — a ordem importa
- O caminho **Fallback** recebe quem não se encaixou em nenhuma condição — **sempre conecte**

O painel ainda mostra variáveis especiais prontas: `{{context.is_working_hours}}` (dentro do horário de atendimento?), `{{context.has_opportunity}}` (contato já tem oportunidade no CRM?) e `{{context.opportunity_status}}`.

## Dividir Tráfego — testes A/B e rotação

O **Dividir Tráfego** distribui os contatos por percentuais — sem olhar conteúdo, só sorteio:

![Dividir Tráfego A/B](https://chat.simplesdesk.com.br/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBMThtQmc9PSIsImV4cCI6bnVsbCwicHVyIjoiYmxvYl9pZCJ9fQ==--f8f624cceb4fcc8394e4850ebcff818068d2b753/tutorial-fluxos-a4-03-dividir-trafego.jpg)

Usos clássicos: testar duas versões de mensagem (A/B), revezar templates de WhatsApp em campanhas (para não desgastar um modelo só) e distribuir carga entre jornadas.

## Qual usar?

| Situação | Nó |
|---|---|
| Menu de opções ("1, 2, 3") | **Roteador** |
| Regra sobre dados ("se…, então…") | **Condição Avançada** |
| Sorteio percentual / teste A/B | **Dividir Tráfego** |

> ⚠️ Regra de ouro dos três: **nunca deixe o caminho padrão/fallback desconectado**. É por ele que saem os casos inesperados — desconectado, o fluxo simplesmente termina em silêncio.
