Phone infrastructure the client owns.
The client was paying per seat, per minute and per feature for a hosted phone platform, and could not change a routing rule without raising a support ticket.
The problem
Renting the phone system.
Costs scaled with headcount rather than usage, and every feature was a separate line item. Recordings were retained in a platform the client could not query.
Operationally, routing had drifted. The IVR tree reflected a team structure from several years earlier, so callers routinely reached the wrong queue and were transferred twice.
Any change required a ticket with the provider and a wait, which meant changes stopped being made.
The hard parts
Migrating a live phone system.
- Numbers had to port without a window where inbound calls failed
- Existing extensions and voicemail had to keep working through the transition
- Routing logic had to be rebuilt from how the team works now, not how it worked then
- Call quality is unforgiving — jitter and packet loss are immediately audible
- Recording retention had to satisfy the client’s own compliance policy
Architecture
What was deployed.
- 01terminateSIP trunks terminate on Asterisk running on client infrastructure
- 02registerSoftphones and desk phones provisioned against the new platform
- 03routeIVR and queue logic rebuilt in one place, editable by the client
- 04recordCalls recorded to client-controlled storage with a retention policy
- 05integrateAMI exposes call events to Laravel for CRM and dashboard use
- 06monitorTrunk health, call quality and queue depth monitored continuously
Stack
- Asterisk
- SIP
- AMI
- IVR
- Ubuntu
- Laravel
- Nginx
What shipped
What shipped.
- Self-hosted Asterisk with SIP trunk termination
- Softphone and desk phone provisioning
- IVR trees and queue logic the client can change without a support ticket
- Call recording to storage the client controls, with retention rules
- AMI integration exposing call events to business systems
- Monitoring on trunk health and call quality
Result
Owned
Infrastructure, recordings and routing
Cost stopped tracking headcount.
The platform runs on the client’s own infrastructure, so cost no longer scales with seats and features are not line items.
Routing became editable, which meant it started being maintained again. Callers reach the right queue.
Because call events are exposed over AMI, this deployment became the foundation for the call-intelligence work that followed.
Related
Read next.
Next step