Overview
Introduction
Over the span of several years working in telephony/IVR, I designed and implemented an
inbound IVR platform backed by Twilio Voice APIs and
Asterisk. The system replaced ad-hoc call handling with structured
menus, call queues, and self-service options.
My responsibility covered end-to-end design: call flow diagrams, Twilio integration,
Asterisk configuration, back-end webhooks, and the small UX details that make phone
menus feel “fast and clear” rather than frustrating.
Background
Context
Before the IVR, inbound calls typically landed in a small support team’s queue:
- No automated routing based on customer type or intent.
- Agents handled many simple, repetitive tasks (status checks, basic FAQs).
- Spikes in call volume quickly overwhelmed the team.
Modern telephony platforms like Twilio and Asterisk made it possible to introduce
smarter routing, self-service, and basic prioritisation — if we could design the right
flows and implement them reliably.
Challenge
Problem
The core questions we needed the IVR to answer were:
-
How do we route callers to the right place (or self-service) as quickly as possible?
-
Which calls truly need an agent, and which can be resolved via automated menus or
callbacks?
-
How do we integrate the phone system cleanly with existing back-end systems?
The IVR had to reduce agent workload without making the call experience worse for
customers — a balance between efficiency and clarity.
Execution
Implementation Highlights
1) Call flow design
-
Created diagrams for entry menus, language selection, authentication steps, and
routing by intent (support, billing, other).
-
Defined self-service options for common tasks (e.g., checking status, simple
account information) to reduce agent load.
-
Included safety paths (reaching an agent, callback options) to avoid trapping
callers in menus.
2) Twilio & Asterisk integration
-
Implemented Twilio webhooks to handle inbound calls, DTMF input, and branching
logic, returning TwiML responses from a web backend.
-
Configured Asterisk dialplans and SIP connections so calls could flow between
external numbers, IVR menus, and on-premise endpoints.
-
Set up call queues and ring strategies (round-robin, skills-based groups) for calls
that did require agents.
3) Self-service & backend integration
-
Connected IVR options to back-end systems via APIs to fetch account information and
status data in real time.
-
Implemented simple “speak out” flows using text-to-speech for dynamic responses.
-
Designed error-handling and retry logic for backend timeouts to keep calls from
failing hard.
4) Monitoring & tuning
-
Logged call paths, menu selections, and drop-off points to identify confusing
prompts or unused options.
-
Tuned prompt wording, order of options, and timeouts based on real usage patterns.
-
Worked with support teams to adjust queues and priorities as call patterns evolved.
The result was an IVR that felt like a “front door” to support: fast greeting,
routing based on intent, and useful self-service — rather than a barrier between
callers and humans.