Hello Dave Weisberg,
Welcome to the Microsoft Q&A and thank you for posting your questions here.
I understand that you're experiencing Azure Communication Services.
Sorry about that, latency can be influenced by several factors, including network conditions, packet loss, jitter, and the technologies used in the call. Please, kindly review the links provided here to read more, troubleshoot and potentially reduce the latency:
- https://learn.microsoft.com/en-us/azure/communication-services/concepts/voice-video-calling/troubleshoot-web-voip-quality
- https://learn.microsoft.com/en-us/azure/communication-services/resources/troubleshooting/voice-video-calling/audio-issues/delay-issue
- https://learn.microsoft.com/en-us/azure/communication-services/concepts/voice-video-calling/manage-call-quality
- https://www.megaport.com/blog/how-to-fix-poor-azure-latency
Further to the above while reviewing the threads, I discovered that most of the prescribed solution offered general VoIP troubleshooting steps, mostly applicable to VoIP-to-VoIP calls, or calls involving browsers or apps, not PSTN endpoints.
Let address in more technical method:
- The architecture of PSTN-to-PSTN calling via ACS.
- The media path traversal and routing delays introduced by Azure infrastructure.
- Known latency behavior or SLAs for PSTN bridging through ACS.
With following steps:
Step 1: Use Azure Communication Services Call Diagnostics and Azure Monitor integration for telemetry to monitor and troubleshoot voice and video calls for:
- initialCallSetupDurationMs
- callConnectionStartToMediaStartMs
- postDialDelay
- roundTripTimeMs (if available on server-side)
- callTransferDelay
If you're not capturing these yet, enable Diagnostic Logging for ACS with Azure Monitor and Azure Log Analytics to do so - https://learn.microsoft.com/en-us/azure/communication-services/concepts/voice-video-calling/manage-call-quality
Step 2: ACS currently does not auto-detect optimal media relay region based on participant phone numbers.
Use:
CreateCallOptions options = new CreateCallOptions(invite, new Uri(callback))
{
AzureRegion = CommunicationCallingServerRegion.EastUS // Example region
};
Try creating calls in regions geographically close to one or both PSTN participants. - https://learn.microsoft.com/en-us/dotnet/api/azure.communication.callautomation.createcalloptions.azureregion
Step 3: Azure Communication Services uses carrier partners to terminate PSTN calls. Therefore, Latency could be introduced in:
- Carrier hops
- Media relay between legs
- Geographic mismatches in call setup and media paths
This is opaque to users, but Microsoft support can help.
So, open a Support Ticket via your Portal to request:
- The actual routing path and regions used for media relay.
- Check if media is hairpinned via a central region (e.g., West US) even if users are on the East Coast.
Step 4: Instead of PSTN-to-PSTN, try to test alternative architectures. For an example:
PSTN > ACS Client and ACS Client > PSTN bridge (e.g., via a web app or bot).
This introduces more control over media and diagnostics, and it can also optimize with Direct Routing via Azure Operator Connect if available.
Step 5: Also, you can try to replicate the call using:
- Twilio, Vonage, or SignalWire, all of which provide PSTN-to-PSTN bridge services.
- Compare latency for the same endpoints and call path.
- If ACS latency is consistently worse, consider raising this with Microsoft Azure’s product team.
This is final Suggestion:
- Use AzureRegion to bring ACS closer to participants it can minimizes routing time.
- Enable ACS diagnostics + Azure Monitor it can also provide hard data.
- Use ACS + Client + PSTN instead of PSTN-to-PSTN to allows media control
- Open MS Support Ticket via Priority Customer Support (PCS) to inspect media path to get visibility into peering delays.
I hope this is helpful! Do not hesitate to let me know if you have any other questions or clarifications.
Please don't forget to close up the thread here by upvoting and accept it as an answer if it is helpful.