chatbot-web-app / session_manager.py
salomonsky's picture
Upload session_manager.py with huggingface_hub
186e98e verified
from flask import session
import uuid
from datetime import datetime
class SessionManager:
def __init__(self):
self.sessions = {}
def create_session(self):
"""Crea una nueva sesi贸n"""
session_id = str(uuid.uuid4())
session['id'] = session_id
self.sessions[session_id] = {
'created_at': datetime.now(),
'last_activity': datetime.now(),
'mode': 'soporte',
'model': 'gemini',
'tts': 'EDGE',
'audio_state': {
'is_playing': False,
'current_audio': None
},
'chat_history': []
}
return session_id
def get_session(self, session_id=None):
"""Obtiene una sesi贸n existente o crea una nueva"""
if not session_id:
session_id = session.get('id')
if not session_id or session_id not in self.sessions:
return self.create_session()
self.sessions[session_id]['last_activity'] = datetime.now()
return session_id
def update_session(self, session_id, key, value):
"""Actualiza un valor en la sesi贸n"""
if session_id in self.sessions:
self.sessions[session_id][key] = value
self.sessions[session_id]['last_activity'] = datetime.now()
def get_session_data(self, session_id, key=None):
"""Obtiene datos de la sesi贸n"""
if session_id not in self.sessions:
return None
if key:
return self.sessions[session_id].get(key)
return self.sessions[session_id]
def add_message_to_history(self, session_id, message, sender):
"""Agrega un mensaje al historial de la sesi贸n"""
if session_id in self.sessions:
self.sessions[session_id]['chat_history'].append({
'text': message,
'sender': sender,
'timestamp': datetime.now()
})
def update_audio_state(self, session_id, is_playing=False, current_audio=None):
"""Actualiza el estado del audio en la sesi贸n"""
if session_id in self.sessions:
self.sessions[session_id]['audio_state'] = {
'is_playing': is_playing,
'current_audio': current_audio
}
def clear_session(self, session_id):
"""Limpia una sesi贸n"""
if session_id in self.sessions:
del self.sessions[session_id]