Skip to main content

What the Azure Communication Services retirement means for voice AI agents

Azure Communication Services retires as a standalone offering in 2028, and new phone numbers are already restricted. What it means for voice AI agents.

Microsoft is retiring Azure Communication Services (ACS) as a standalone offering on September 30, 2028, and from October 23, 2026 it starts limiting onboarding to the retiring services. For anyone running a voice AI agent on ACS phone numbers and Call Automation, the near deadline matters more: new resources can’t get phone numbers, and “it talks to an AI model” doesn’t count as a supported integration. Existing numbers keep working, so the job now is to protect what you have and choose where new lines will run.

We run our own AI receptionist on ACS, and the announcement changed our plans for every new deployment. Below: what Microsoft’s retirement and breaking changes guide says (as of its October 8, 2026 update), what we chose, and a checklist.

What Microsoft announced

Microsoft announced the retirement on September 23, 2026. The guide splits ACS into two groups.

  • Retired after September 30, 2028. These include phone numbers sold directly by ACS (Direct Offer), Direct Routing, SMS, Email and Chat.
  • Breaking changes. These include Call Automation, audio streaming, call recording and the calling SDKs. They keep running after 2028, but are supported “only when used with a supported Teams-aligned service”, such as Teams Phone Extensibility. Standalone scenarios that don’t integrate with Teams, including application-to-human calls, lose support.

Until then, existing resources keep working. SDKs are in maintenance: break/fix, security and stability updates, but no new features.

Timeline of three dates: retirement announced September 23, 2026, with phone number capability disabled on new ACS resources; onboarding limits from October 23, 2026; standalone retirement on September 30, 2028. Existing resources and numbers keep working until then.

The three dates in Microsoft’s retirement guide, as of its October 8, 2026 update. Not to scale. The first two cards come from different sections of the guide, which don’t fully agree; see below.

The near-term restrictions

The guide isn’t consistent about when the phone-number restriction starts or whom it covers:

  • The main notice ties it to October 23, 2026: customers without an ACS resource created before then “will not be able to acquire phone numbers for retiring telephony workloads, including PSTN calling and SMS.”
  • The phone-number FAQ ties it to the announcement: on new resources created after September 23, number capability is “intentionally disabled”, and customers without existing ACS numbers “will no longer be able to acquire new phone numbers”.
  • The SMS FAQ is the narrowest: only existing customers whose resources already hold numbers can acquire more.

These can’t all be true for a resource created between September 23 and October 23. Plan on the strictest reading: no resource created after the announcement gets numbers, and a resource with none yet may not get any. Check the portal for each resource, and recheck the guide, which has been revised since the announcement.

New customers with new ACS resources also can’t port numbers in. And deleting a resource before removing its numbers means “charges can continue on orphaned numbers”, which takes a support ticket to clear.

Why AI doesn’t make a workload eligible

A voice agent built on Azure AI services isn’t an integrated scenario. The guide is explicit: “Connecting to Cognitive Services or another AI service doesn’t, by itself, qualify a standalone ACS workload for support after September 30, 2028.” Eligibility depends on a supported Teams or Dynamics 365 scenario, not on the model behind it.

The second trap is streaming direction. A voice agent needs bidirectional audio: the caller’s speech streams to the model, and the model’s speech streams back into the call. Teams Phone Extensibility documents audio streamed from the call to a WebSocket. On the reverse path the guide is careful: “Support for sending audio out of a call doesn’t, by itself, establish support for sending audio back into that call.” It also says no Microsoft or Marketplace partner currently offers a standalone replacement for ACS audio streaming.

The options we weighed

Our receptionist bridges the phone call to the Azure Voice Live API, a realtime speech-to-speech service, and adds tools that record leads, recognize clients and transfer calls. We wanted to change how the call arrives and nothing else. The comparison below reflects Microsoft and carrier documentation as of October 2026.

CriterionCarrier adapter (chosen)SIP to Azure OpenAI RealtimeTeams Phone Extensibility
How it worksCarrier streams call audio over a WebSocket into our existing Voice Live pipelineA carrier SIP trunk routes calls straight into a realtime model sessionACS Call Automation linked to a Teams Phone resource account
Keeps our agent codeYesPartly; orchestration moves from Voice Live to the Realtime APIYes, if two-way streaming works
Client prerequisitesAn Azure tenantAn Azure tenantMicrosoft 365, Teams Phone licensing and a calling plan or operator, per client
Main open questionCarrier reliability and latency on our workloadSIP limited to East US 2 and Sweden Central todaySending audio back into the call isn’t documented

Three paths from an incoming phone call to the voice agent: a carrier adapter streaming Telnyx audio into our Voice Live pipeline, marked chosen and built with live-call verification next; SIP to the Azure OpenAI Realtime API, limited to two regions; and Teams Phone Extensibility, which needs Microsoft 365 and Teams Phone licensing per client and has no documented way to send audio back into the call.

SIP to Azure OpenAI Realtime is documented in Microsoft Learn’s Realtime API via SIP guide: a SIP trunk routes to an Azure OpenAI resource, a webhook accepts the call, and a SIP REFER transfers it. It is the simplest call path, but it means rewriting our orchestration, and the guide lists only two SIP regions as of its September 2026 update. We’ll revisit it.

Teams Phone Extensibility is Microsoft’s supported path and suits organizations already on Teams Phone. For a small business, per-client Teams Phone licensing and calling plans are a heavy prerequisite, and until Microsoft documents sending audio back into the call, we can’t promise a working voice agent on it.

What we chose, and where it stands

We chose a carrier adapter on Telnyx. Telnyx’s media streaming documents bidirectional audio over a WebSocket and a clear message that stops queued playback, which is what barge-in needs. In the adapter’s design, calls arrive through a signed webhook, and the backend answers with a stream URL. It then runs the same agent, tools, caller recognition and hang-up fallback lead as the ACS path. Both providers are configured side by side in one deployment.

Audio is G.711 µ-law at 8 kHz both ways, converted to and from the 24 kHz audio the voice session uses. Telnyx also offers 16 kHz L16, but its byte order isn’t documented, so we left it out for now.

The adapter is built and unit-tested. Live-call verification is next, and we don’t treat it as proven until it passes. Still to confirm on real calls: audio quality, barge-in, and what happens to the media stream when a transfer bridges. The carrier docs don’t say whether the stream stops on its own, so the code handles both cases. Call recording isn’t implemented on this path yet. The carrier also becomes a processor of call audio, which each client’s data-flow documentation must name.

Our own line stays on ACS, where it is supported until September 30, 2028. We added a deletion guard to the resource in infrastructure code. Our plan is to port the number out through a support ticket only after the adapter has a clean record on live client calls. For how the agent’s tools fail safely regardless of carrier, see fail-safe tools for voice AI agents.

A checklist if you run on ACS

  1. Confirm what you hold. Open each ACS resource’s phone numbers page and see whether “Get” is enabled. Record which resources hold numbers that existed before the announcement. Azure Advisor’s Service Retirement workbook lists affected resources.
  2. Protect those resources from deletion. Add a management lock, a prevent_destroy lifecycle rule in Terraform, or both. A deleted resource can’t be recreated with number capability, and deleting it before removing its numbers leaves orphaned charges.
  3. Don’t create new ACS resources expecting numbers. That includes per-client deployment templates that create one per tenant. Don’t count on pre-provisioning before October 23 either: under the FAQ’s reading, number capability is already disabled on resources created after the announcement.
  4. Inventory Call Automation and streaming use. Note which workloads send audio back into the call: that has the least support after 2028.
  5. Plan the port-out. Microsoft releases ACS numbers to another provider through a support ticket, and the receiving carrier runs the port.

How we can help

We build and operate AI phone receptionists that run in the client’s own cloud tenant. New lines will connect through a carrier once the adapter passes live-call verification. We also review existing ACS voice workloads against the retirement guide and plan the move. See our AI receptionist page for how it works.

Related articles

Applied AI Engineering

Fail-safe tools for a voice AI receptionist

Lessons from building our own AI phone receptionist: tools that degrade safely, caller ID matching, conversation tuning, and live-call verification.

Applied AI Engineering

Adding llms.txt and llms-full.txt to a Hugo site

How we generate llms.txt and llms-full.txt from Hugo content with custom output formats, the gotchas we hit, and why we did it while it is only a proposal.

← All articles

Not sure where to start? Start with an assessment.

A senior review of your app, cloud estate, or AI platform, scoped and quoted before work starts, that ends in a prioritized plan, so you decide what to fix and when.

Talk to an engineer