Skip to content

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 ​

ChannelIntegrationReal-timeNotes
EmailMicrosoft Graph APIPolling (WebSocket planned)Thread view, HTML rendering
WhatsAppMeta Direct APIWebSocketChat bubbles, media support
Microsoft TeamsGraph APIWebSocketChannel and DM support
RingCentralRingCentral SDKWebSocketPhone, 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.

Marchay Platform Documentation