All case studies

Enterprise SaaS · Real-time communications

Odigo

The agent console for an omnichannel contact-centre platform built to route millions of calls a day.

The challenge

Businesses talk to customers across phone, chat, email and social, usually in siloed tools that leave agents juggling systems.

Odigo centralises every touchpoint in one interface, automates repetitive work and handles millions of calls per day, often deployed on customer premises.

How it works

  1. 01

    Agent console

    Built on AngularJS and TypeScript. On login, the agent's profile and settings load from a Java backend, then the console opens a WebSocket to the routing engine.

  2. 02

    Skill-based routing

    The routing engine matches each caller's IVR choice (“press 1 for sales”) to an available agent with the right skill.

  3. 03

    Call modes

    Agents choose to take calls by softphone, WebRTC in the browser, or a physical desk phone.

Engineering decisions

Calls in the browser over WebRTC

  • The browser resolves its public IP via STUN and opens an SRTP connection to the media gateway.
  • A SIP server bridges the gateway and the routing engine for setup, hold, transfer and hang-up. On offer acceptance, audio flows over SRTP.

Agent-to-supervisor chat over XMPP

  • Openfire chat server with Strophe.js on the client, kept live through BOSH long-polling, with roster presence subscriptions and SSO login.
  • Shipped as an embeddable script, locked down with X-Frame-Options and a Content Security Policy frame-ancestors rule so only authorised Odigo domains can embed it.

Outcomes

  • Agents take calls directly in the browser, with no desk phone required.
  • Real-time supervisor chat with live presence.
  • A completely new agent interface with streamlined workflows.

Technology

AngularJS · TypeScript
Agent console
Java · Vert.x
Agent backend
WebRTC · SIP · SRTP
Browser calling
Openfire · Strophe.js
XMPP chat
Node.js
Chat services

Contact

Have something you want to build?

Tell us what you're building, or what you'd like to automate. Let's figure out the next step.