File size: 1,399 Bytes
4a13628
56dc677
 
 
c7fc3b6
56dc677
 
 
4a13628
56dc677
 
 
 
 
 
4a13628
 
56dc677
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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)