malek-messaoudii
Refactor audio processing and chatbot services; enhance STT and TTS functionalities with base64 support and session management
56dc677
| from pydantic import BaseModel, Field | |
| from typing import Optional, List, Dict, Any | |
| from enum import Enum | |
| from datetime import datetime | |
| class MessageType(str, Enum): | |
| TEXT = "text" | |
| AUDIO = "audio" | |
| class UserMessage(BaseModel): | |
| message_id: str = Field(..., description="Unique message ID") | |
| content: str = Field(..., description="Text content or audio base64") | |
| message_type: MessageType = Field(..., description="Message type") | |
| session_id: str = Field(..., description="User session ID") | |
| timestamp: datetime = Field(default_factory=datetime.now) | |
| class ChatbotResponse(BaseModel): | |
| response_id: str = Field(..., description="Unique response ID") | |
| text_response: str = Field(..., description="Chatbot text response") | |
| audio_response: Optional[str] = Field(None, description="Audio response in base64") | |
| audio_url: Optional[str] = Field(None, description="Generated audio URL") | |
| session_id: str = Field(..., description="User session ID") | |
| timestamp: datetime = Field(default_factory=datetime.now) | |
| class ChatSession(BaseModel): | |
| session_id: str = Field(..., description="Session ID") | |
| user_id: Optional[str] = Field(None, description="User ID") | |
| created_at: datetime = Field(default_factory=datetime.now) | |
| last_activity: datetime = Field(default_factory=datetime.now) | |
| conversation_history: List[Dict[str, Any]] = Field(default_factory=list) |