Duas novidades no construtor de fluxos. Agora o bloco Menu pode guardar a opção que o cliente escolheu em uma variável — e existe uma forma de apagar os dados antigos do contato quando o atendimento recomeça, para não misturar informação de um pedido com o outro.
1. Guardar a escolha do menu em uma variável
Antes, o bloco Menu apenas direcionava a conversa (opção 1 vai por um caminho, opção 2 por outro). Agora ele também grava a escolha, para você usar depois na mensagem ou enviar ao seu sistema.
Como configurar:
- Abra o Construtor de Fluxos e clique no bloco Menu.
- No campo “Salvar escolha na variável”, escreva um nome sem espaços. Ex.:
tipo_agendamento. - Salve o fluxo. Pronto.
Quando o cliente responder, o AgeuBot grava duas informações:
{{tipo_agendamento}}→ o número da opção:1,2,3…{{tipo_agendamento_texto}}→ o nome da opção:Consulta,Exame…
Deixando o campo vazio, o menu funciona exatamente como antes. Seus fluxos atuais não mudam em nada.
2. Usar a variável nos blocos seguintes
Em qualquer bloco depois do menu, escreva o nome da variável entre chaves duplas:
Numa mensagem:
Você escolheu *{{tipo_agendamento_texto}}*.
Vamos confirmar seu horário!
No corpo de uma Requisição HTTP (para mandar ao seu sistema):
{
"tipo_agendamento": "{{tipo_agendamento}}",
"exame_escolhido": "{{exame_escolhido}}"
}
O cliente que escolher Consulta gera "tipo_agendamento": "1"; quem escolher Exame gera "2", e assim por diante.
3. Apagar os dados do contato ao recomeçar
Situação comum: o cliente agendou um exame ontem e hoje quer marcar uma consulta. O tipo é atualizado, mas o exame escolhido antes continuava gravado e ia junto no envio — misturando os dois atendimentos.
Para resolver, use um bloco Requisição HTTP (API) no ponto do fluxo em que o atendimento recomeça:
Configuração do bloco:
- Método:
POST - URL:
https://ageubot.com.br/api/public/contact-data/clear - Cabeçalhos:
Content-Type: application/jsoneX-API-Key: sua chave - Corpo:
{
"phone": "{{telefone}}",
"fields": ["tipo_agendamento", "exame_escolhido"]
}
Para apagar todos os dados capturados do contato, basta não enviar a lista fields:
{ "phone": "{{telefone}}" }
Onde pego a API Key? No painel, em Integrações → API. É a mesma chave usada nas outras integrações.
Atenção: apagar é definitivo — os dados não voltam. Prefira listar em fields exatamente o que precisa limpar. Informações internas do atendimento (controle do fluxo e de pagamentos) são sempre preservadas automaticamente.
4. Exemplo completo (copiar e colar)
Fluxo de clínica que pergunta o tipo de agendamento, pergunta o exame, envia ao sistema, oferece agendar outro procedimento e — ao escolher “Sim” — limpa os dados e recomeça do zero.
{
"nodes": [
{ "id": 1, "type": "start", "x": 60, "y": 200,
"data": { "label": "Início", "triggerMode": "any", "triggers": "oi, olá, agendar" } },
{ "id": 2, "type": "menu", "x": 340, "y": 200,
"data": {
"label": "Tipo de agendamento",
"headerText": "O que deseja agendar?",
"options": [ { "text": "Consulta" }, { "text": "Exame" }, { "text": "Retorno" } ],
"fallbackMessage": "Digite apenas o número da opção desejada.",
"saveVariable": "tipo_agendamento"
} },
{ "id": 3, "type": "menu", "x": 620, "y": 200,
"data": {
"label": "Qual exame",
"headerText": "Qual exame você precisa?",
"options": [ { "text": "Sangue" }, { "text": "Raio-X" }, { "text": "Ultrassom" },
{ "text": "Tomografia" }, { "text": "Ressonância" } ],
"fallbackMessage": "Digite apenas o número da opção desejada.",
"saveVariable": "exame_escolhido"
} },
{ "id": 4, "type": "content", "x": 900, "y": 200,
"data": { "label": "Confirmação",
"message": "Confirmando:\n\nTipo: *{{tipo_agendamento_texto}}*\nExame: *{{exame_escolhido_texto}}*\n\nEstou registrando..." } },
{ "id": 5, "type": "http", "x": 1180, "y": 200,
"data": {
"label": "Enviar para o sistema",
"httpMethod": "POST",
"httpUrl": "https://SEU-SISTEMA.com/agendamento",
"httpHeaders": [ { "key": "Content-Type", "value": "application/json" } ],
"httpBody": "{\"tipo_agendamento\": \"{{tipo_agendamento}}\", \"exame_escolhido\": \"{{exame_escolhido}}\"}",
"httpTimeoutSec": 15,
"httpExtractions": [ { "path": "protocolo", "variable": "protocolo" } ]
} },
{ "id": 6, "type": "content", "x": 1460, "y": 110,
"data": { "label": "Deu certo", "message": "✅ Agendamento registrado!\nProtocolo: *{{protocolo}}*" } },
{ "id": 7, "type": "content", "x": 1460, "y": 330,
"data": { "label": "Deu erro", "message": "⚠️ Não consegui registrar agora. Um atendente vai te chamar." } },
{ "id": 8, "type": "menu", "x": 1740, "y": 110,
"data": {
"label": "Agendar outro?",
"headerText": "Deseja agendar outro procedimento?",
"options": [ { "text": "Sim" }, { "text": "Não" } ],
"fallbackMessage": "Digite 1 para Sim ou 2 para Não.",
"saveVariable": "deseja_outro"
} },
{ "id": 9, "type": "http", "x": 2020, "y": 40,
"data": {
"label": "Limpar dados e recomeçar",
"httpMethod": "POST",
"httpUrl": "https://ageubot.com.br/api/public/contact-data/clear",
"httpHeaders": [
{ "key": "Content-Type", "value": "application/json" },
{ "key": "X-API-Key", "value": "COLE_SUA_API_KEY_AQUI" }
],
"httpBody": "{\"phone\": \"{{telefone}}\", \"fields\": [\"tipo_agendamento\", \"tipo_agendamento_texto\", \"exame_escolhido\", \"exame_escolhido_texto\", \"deseja_outro\", \"deseja_outro_texto\"]}",
"httpTimeoutSec": 10,
"httpExtractions": []
} },
{ "id": 10, "type": "content", "x": 2020, "y": 300,
"data": { "label": "Encerrar", "message": "Perfeito! Qualquer coisa é só chamar. 👋" } }
],
"connections": [
{ "fromNode": 1, "fromPort": "next", "toNode": 2 },
{ "fromNode": 2, "fromPort": "option_0", "toNode": 4 },
{ "fromNode": 2, "fromPort": "option_1", "toNode": 3 },
{ "fromNode": 2, "fromPort": "option_2", "toNode": 4 },
{ "fromNode": 3, "fromPort": "option_0", "toNode": 4 },
{ "fromNode": 3, "fromPort": "option_1", "toNode": 4 },
{ "fromNode": 3, "fromPort": "option_2", "toNode": 4 },
{ "fromNode": 3, "fromPort": "option_3", "toNode": 4 },
{ "fromNode": 3, "fromPort": "option_4", "toNode": 4 },
{ "fromNode": 4, "fromPort": "next", "toNode": 5 },
{ "fromNode": 5, "fromPort": "success", "toNode": 6 },
{ "fromNode": 5, "fromPort": "error", "toNode": 7 },
{ "fromNode": 6, "fromPort": "next", "toNode": 8 },
{ "fromNode": 8, "fromPort": "option_0", "toNode": 9 },
{ "fromNode": 8, "fromPort": "option_1", "toNode": 10 },
{ "fromNode": 9, "fromPort": "success", "toNode": 2 },
{ "fromNode": 9, "fromPort": "error", "toNode": 2 }
]
}
Para usar este exemplo:
- Troque
https://SEU-SISTEMA.com/agendamentopela URL do seu sistema. - Troque
COLE_SUA_API_KEY_AQUIpela sua chave (Integrações → API). - Monte os blocos no construtor seguindo essa mesma sequência — ou peça ajuda ao suporte para importar.
Dúvidas frequentes
Preciso mexer nos fluxos que já tenho?
Não. Enquanto o campo “Salvar escolha na variável” estiver vazio, tudo continua funcionando igual.
Posso usar o mesmo nome de variável em menus diferentes?
Pode. O valor mais recente substitui o anterior — útil quando o cliente refaz a escolha.
A variável vale para quem?
Para aquele contato específico. Cada cliente tem os seus próprios dados.
Artigos relacionados
- Bloco Requisição HTTP: integrar APIs externas
- Como criar um fluxo de conversa
- Tipos de blocos do editor visual
- Usar a API pública do AgeuBot
Pronto para deixar seu fluxo mais inteligente?
Abrir o painel e editar meu fluxo