Appearance
Omnichannel Inbox
The Omnichannel Inbox provides a unified view of all advisor-client communications across email, WhatsApp, Microsoft Teams, and RingCentral.
Three-Panel Layout
Supported Channels
| Channel | Integration | Real-time | Notes |
|---|---|---|---|
| Microsoft Graph API | Polling (WebSocket planned) | Thread view, HTML rendering | |
| Meta Direct API | WebSocket | Chat bubbles, media support | |
| Microsoft Teams | Graph API | WebSocket | Channel and DM support |
| RingCentral | RingCentral SDK | WebSocket | Phone, SMS, dialer |
Channel Normalization
All messages normalize to a common schema:
typescript
interface Message {
id: string;
channel: 'email' | 'whatsapp' | 'teams' | 'ringcentral';
direction: 'inbound' | 'outbound';
contact: Contact;
content: string;
timestamp: Date;
status: 'sent' | 'delivered' | 'read' | 'failed';
metadata: Record<string, any>;
}Dialer Component
The RingCentral integration includes a dialer with:
- Call history with duration and status
- Call simulation (idle, dialing, connected, ended)
- Mute and speaker controls
- Post-call note prompt
- Contact lookup from Salesforce
Badge Counts
Each channel displays unread message counts in the sidebar. Counts update in real-time when WebSocket connections are available, or via polling as a fallback.
Message Rendering
Channel-specific rendering preserves the native feel:
- Email: Thread view with quoted text, HTML rendering, attachments
- WhatsApp: Chat bubbles with channel colors, media previews
- Teams: Channel-style messages with reactions
- RingCentral: Call logs with duration, SMS thread view
Future: Real-time Updates
Current implementation uses polling. Planned migration to WebSocket for true real-time message arrival. The Channel Router will push normalized messages to the console via WebSocket connections.