BecaBot · Documentación de flujo

Diagrama de acción
y ejemplos de sesión

Flujo completo de los tres canales: WhatsApp, Telegram y Web. Incluye casos de usuario registrado, interesado, recordar sesión y cierre de sesión.

Vista general
WhatsApp
Telegram
Web
Sesión y Salir

Leyenda

Inicio / bienvenida
Identificación / login
Decisión / menú
FAQ / respuesta
Registro interesado
Recordar sesión
Salir / olvidar

Flujo compartido — tres canales

WhatsApp
Usuario escribe "hola"
Saludo o menú — se busca sesión recordada
¿WhatsApp recordado?
Busca por whatsappId (User) o notes (Interested)
Datos + FAQ
Acceso directo sin login
No
Menú principal
Opciones 1 o 2
Ya en programa
Verifica teléfono + nombre
Comparado contra BD
Interesado
Nombre → Programa
Flujo de captura
¿Recordar dispositivo?
Guarda whatsappId o notes según caso
FAQ / preguntas
Responde dudas del programa
Salir
Borra whatsappId y notes
Telegram
/start o "hola"
Busca sesión por telegramId / notes
¿Telegram recordado?
Busca por telegramId o Recordar Telegram:xxx
Datos + FAQ
Acceso directo
No
Menú con botones
Teclado nativo Telegram
Ya en programa
Verifica teléfono + nombre
Interesado
Nombre → Programa → Ubicación
¿Recordar dispositivo?
Igual que WhatsApp, guarda telegramId
FAQ con teclado
Botones de preguntas frecuentes
Salir
Borra telegramId y notes
Web (chatbot.js)
Carga la página
Revisa localStorage automáticamente
¿Sesión guardada?
Lee becabot_session de localStorage
Datos + FAQ
Acceso sin login
No
Botones iniciales
Registro o interesado
Ya en programa
Verifica teléfono + nombre via API
Interesado
Nombre → Programa → Ubicación browser
¿Guardar en localStorage?
Guarda sesión completa en navegador
FAQ con botones
Fetch a /chat/faqs y /chat/ask
Salir
clearSession() borra localStorage
Diferencias clave entre canales: WhatsApp y Telegram guardan la sesión en la base de datos (campo whatsappId / telegramId en User, o campo notes en Interested). La versión Web usa localStorage del navegador — no requiere base de datos, pero la sesión se pierde si el usuario borra datos del navegador. El comando Salir funciona en los tres canales y limpia tanto el User como el Interested.
Simulador WhatsApp
📱
WhatsApp — BecaBot
0 / 0
Simulador Telegram
✈️
Telegram — BecaBot
0 / 0
Simulador Web (chatbot.js)
🌐
Web — BecaBot
0 / 0

Cómo funciona la sesión recordada — comparativa

WhatsApp
Dónde guardaBase de datos
Campo UserwhatsappId
Campo Interestednotes
Comando salirforgetWhatsApp()
PermanenciaPermanente
Telegram
Dónde guardaBase de datos
Campo UsertelegramId
Campo Interestednotes
Comando salirforgetTelegram()
PermanenciaPermanente
Web
Dónde guardalocalStorage
Clavebecabot_session
TipoJSON serializado
Comando salirclearSession()
PermanenciaHasta limpiar caché

Flujo de "Salir" — qué limpia en cada caso

Usuario registrado (User)
Usuario escribe "Salir"
Busca User con whatsappId/telegramId
user.whatsappId = null
user.identityVerified = false
resetSession()
Sesión en memoria limpiada
Interesado (Interested)
Usuario escribe "Salir"
Busca Interested con notes contiene "Recordar WhatsApp/Telegram: xxx"
interested.notes = null
updateMany() por si hay varios
resetSession()
Ambos limpiados en un solo Salir
Web (localStorage)
Usuario escribe "Salir"
isLogout(text) === true
clearSession()
Borra becabot_session de localStorage
Todas las variables reseteadas
Sin recargar la página
Bug corregido: En la versión original, el comando "Salir" en WhatsApp y Telegram solo limpiaba al User registrado. Si el usuario era un Interesado que había pedido ser recordado (campo notes), ese registro nunca se limpiaba y el bot lo seguía reconociendo. La función forgetWhatsApp() / forgetTelegram() ahora ejecuta ambas operaciones en una sola llamada.