5.7 KiB
Conversation Management
BotServer manages conversations through sessions, message history, and context tracking, providing seamless interaction between users and bots.
Overview
Conversation management handles:
- Session lifecycle
- Message history persistence
- Context maintenance
- Multi-turn interactions
- User state tracking
Session Management
Session Creation
Sessions are created when:
- User first interacts with bot
- Authentication successful
- Anonymous user connects
Session contains:
- Unique session ID
- User reference (or anonymous)
- Bot ID
- Creation timestamp
- Expiration time
Session Persistence
Sessions stored in PostgreSQL:
user_sessionstable- Cached in Redis for performance
- Automatic cleanup on expiry
Message History
Storage Structure
Messages stored in message_history table:
- Session ID reference
- User ID
- Bot ID
- Message content
- Sender (user/bot)
- Timestamp
Message Types
- User Messages - Input from users
- Bot Responses - Generated replies
- System Messages - Status updates
- Tool Outputs - Results from tool execution
History Retrieval
# In BASIC scripts
let history = GET_BOT_MEMORY("conversation_history")
Context Management
Context Layers
- System Context - Bot configuration and prompts
- Conversation Context - Recent message history
- Knowledge Context - Retrieved documents
- User Context - User preferences and state
- Tool Context - Available tool definitions
Context Window
Limited by LLM constraints:
- Automatic truncation
- Oldest messages removed first
- Important context preserved
- Summarization for long conversations
Context Operations
# Set context in BASIC
SET_CONTEXT "user_info" AS "Name: John, Role: Admin"
# Clear context
CLEAR_CONTEXT "user_info"
Conversation Flow
Turn Management
- User sends message
- Session validated
- Context assembled
- LLM processes input
- Tools invoked if needed
- Response generated
- History updated
- Response sent to user
State Tracking
Conversation state includes:
- Current topic
- Active tools
- Pending operations
- User preferences
- Session variables
Multi-Turn Interactions
Maintaining Continuity
- Previous messages included in context
- Entity tracking across turns
- Reference resolution
- Topic persistence
Example Flow
User: "Book a meeting for tomorrow"
Bot: "What time would you prefer?"
User: "2 PM"
Bot: "Meeting booked for tomorrow at 2 PM"
Bot maintains context of "meeting" and "tomorrow" across turns.
Conversation Patterns
Question-Answer
Simple single-turn interactions:
let question = HEAR
let answer = LLM "Answer: " + question
TALK answer
Guided Conversation
Multi-step flows with validation:
TALK "What's your name?"
let name = HEAR
TALK "What's your email?"
let email = HEAR
# Process collected information
Contextual Dialog
Using conversation history:
let history = GET_CONVERSATION_HISTORY()
let response = LLM "Continue this conversation: " + history
TALK response
Conversation Persistence
Database Storage
All conversations permanently stored:
- Full message history
- Timestamps
- User associations
- Bot responses
Archival
Old conversations:
- Compressed after 30 days
- Archived after 90 days
- Configurable retention
- GDPR compliance
Anonymous Conversations
Anonymous Sessions
Users without authentication:
- Temporary session created
- Limited permissions
- No permanent storage
- Session expires quickly
Upgrading to Authenticated
When anonymous user logs in:
- Session associated with user
- History preserved
- Permissions updated
- Full features enabled
Conversation Analytics
Metrics Tracked
- Message count
- Conversation length
- Response time
- User satisfaction
- Tool usage
- Topic distribution
Analysis Capabilities
- Sentiment analysis
- Topic extraction
- Intent classification
- Entity recognition
- Performance metrics
WebSocket Communication
Real-Time Messaging
WebSocket connection for:
- Instant message delivery
- Streaming responses
- Typing indicators
- Connection status
Protocol
// Client sends
{
"type": "message",
"content": "User message",
"session_id": "session-123"
}
// Server responds
{
"type": "response",
"content": "Bot response",
"streaming": false
}
Conversation Recovery
Session Restoration
After disconnection:
- Session ID validates
- History restored
- Context rebuilt
- Conversation continues
Error Recovery
On failure:
- Last state saved
- Graceful degradation
- User notified
- Automatic retry
Best Practices
- Keep Context Relevant - Remove outdated information
- Manage History Length - Truncate old messages
- Save Important State - Use BOT_MEMORY for persistence
- Handle Disconnections - Implement recovery logic
- Track Metrics - Monitor conversation quality
- Respect Privacy - Implement data retention policies
Configuration
Session Settings
SESSION_TIMEOUT_MINUTES=30
MAX_HISTORY_LENGTH=50
CONTEXT_WINDOW_SIZE=4000
Retention Policy
MESSAGE_RETENTION_DAYS=90
ARCHIVE_AFTER_DAYS=30
ANONYMOUS_RETENTION_HOURS=24
Limitations
- Context window size constraints
- History storage costs
- Real-time processing overhead
- Concurrent conversation limits
Future Enhancements
- Voice conversation support
- Multi-language conversations
- Conversation branching
- Advanced analytics
- Conversation templates
Summary
Conversation management in BotServer provides robust session handling, message persistence, and context management, enabling sophisticated multi-turn interactions while maintaining performance and reliability.