Incident-Centric Chat System
A comprehensive real-time collaboration platform for incident response teams, integrated with the ETB (Enterprise Incident Management) API.
🚀 Features
Core Chat Functionality
- Real-time Messaging: WebSocket-based chat with instant message delivery
- Incident-Centric Rooms: Every incident automatically gets its own chat room
- Cross-linking: Direct links between incident timeline and chat logs
- Pinned Messages: Pin important updates for easy reference
- Threaded Conversations: Reply to messages for focused discussions
- Reactions: Emoji reactions (👍, 🚨, ✅) for lightweight feedback
Advanced Collaboration
- @mentions: Mention users with notifications
- File Sharing: Upload logs, screenshots, evidence files
- ChatOps Commands: Execute automation commands via chat
- AI Assistant: Intelligent bot for incident guidance and knowledge queries
Security & Compliance
- Encryption: Chat logs encrypted at rest and in transit
- RBAC: Role-based access control for sensitive incidents
- Audit Trail: Immutable audit trail for compliance
- Data Classification: Automatic file classification and retention
Integrations
- Incident Intelligence: Auto-creates chat rooms, links to timeline
- SLA & On-Call: SLA threshold notifications, escalation alerts
- Automation Orchestration: Execute runbooks via chat commands
- Compliance Governance: File classification, audit trails
- Knowledge Learning: AI assistant with knowledge base integration
📋 Quick Start
1. Setup
# Activate virtual environment
source venv/bin/activate.fish
# Run migrations
python manage.py migrate
# Create default bots and war rooms
python manage.py setup_chat_system --create-bots --create-war-rooms
2. WebSocket Connection
// Connect to chat room
const ws = new WebSocket('ws://localhost:8000/ws/chat/{room_id}/');
// Send message
ws.send(JSON.stringify({
type: 'chat_message',
content: 'Hello team!',
message_type: 'TEXT'
}));
// Add reaction
ws.send(JSON.stringify({
type: 'reaction',
message_id: 'message-uuid',
emoji: '👍',
action: 'add'
}));
3. ChatOps Commands
/status # Get incident status
/run playbook <name> # Execute runbook
/escalate [reason] # Trigger escalation
/assign <username> # Assign incident
/update status <status> # Update incident status
🏗️ Architecture
Models
- WarRoom: Chat rooms for incidents
- WarRoomMessage: Chat messages with reactions, attachments
- MessageReaction: Emoji reactions to messages
- ChatFile: File attachments with compliance integration
- ChatCommand: ChatOps command execution
- ChatBot: AI assistant bots
Services
- SLANotificationService: SLA threshold and escalation notifications
- AutomationCommandService: ChatOps command execution
- ComplianceIntegrationService: File classification and audit trails
- AIAssistantService: AI-powered assistance and suggestions
WebSocket Consumer
- ChatConsumer: Real-time chat functionality
- Message broadcasting
- Reaction handling
- Command execution
- Typing indicators
🔧 API Endpoints
War Rooms
GET /api/collaboration_war_rooms/api/war-rooms/
POST /api/collaboration_war_rooms/api/war-rooms/{id}/create_chat_room/
GET /api/collaboration_war_rooms/api/war-rooms/{id}/messages/
GET /api/collaboration_war_rooms/api/war-rooms/{id}/pinned_messages/
Messages
POST /api/collaboration_war_rooms/api/war-room-messages/
POST /api/collaboration_war_rooms/api/war-room-messages/{id}/pin_message/
POST /api/collaboration_war_rooms/api/war-room-messages/{id}/add_reaction/
POST /api/collaboration_war_rooms/api/war-room-messages/{id}/execute_command/
Files
POST /api/collaboration_war_rooms/api/chat-files/
POST /api/collaboration_war_rooms/api/chat-files/{id}/log_access/
AI Assistant
GET /api/collaboration_war_rooms/api/chat-bots/
POST /api/collaboration_war_rooms/api/chat-bots/{id}/generate_response/
🔐 Security Features
Access Control
- Users must have appropriate clearance level for sensitive incidents
- War room access controlled by incident permissions
- File access logged and audited
Encryption
- Messages can be encrypted for sensitive incidents
- Files encrypted based on classification level
- WebSocket connections use WSS in production
Audit Trail
- All chat messages logged with timestamps
- File access tracked with user and timestamp
- Command executions logged with results
📊 Monitoring & Analytics
Metrics Tracked
- Message volume per incident
- Response times for commands
- File upload/download statistics
- User engagement metrics
- Error rates and types
Alerts
- High message volume incidents
- Failed command executions
- Security policy violations
- System performance issues
🚀 Deployment
Production Setup
- Configure WebSocket routing in your ASGI application
- Set up Redis for WebSocket channel layers
- Configure file storage for attachments
- Set up SSL certificates for WSS connections
- Configure monitoring and alerting
Environment Variables
# WebSocket configuration
CHANNEL_LAYERS_REDIS_URL=redis://localhost:6379/1
# File storage
DEFAULT_FILE_STORAGE=django.core.files.storage.FileSystemStorage
MEDIA_ROOT=/var/www/media/
# Security
CHAT_ENCRYPTION_KEY=your-encryption-key
CHAT_AUDIT_LOG_LEVEL=INFO
🧪 Testing
Unit Tests
python manage.py test collaboration_war_rooms
WebSocket Testing
// Test WebSocket connection
const ws = new WebSocket('ws://localhost:8000/ws/chat/test-room/');
ws.onopen = () => console.log('Connected');
ws.onmessage = (event) => console.log('Message:', event.data);
📚 Documentation
🤝 Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
📄 License
This project is part of the ETB (Enterprise Incident Management) API system.
🆘 Support
For support and questions:
- Check the documentation
- Review the API reference
- Contact the development team
🔮 Roadmap
Planned Features
- Voice messages and video calls
- Advanced AI assistant capabilities
- Integration with external chat platforms
- Mobile app support
- Advanced analytics dashboard
Integration Roadmap
- Slack/Teams integration
- PagerDuty integration
- Jira integration
- Custom webhook support