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)
Sí
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
Sí
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
Sí
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.