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