Improve and manage call quality

This article introduces key tools you can use to monitor, troubleshoot, and improve call quality in Azure Communication Services. The following materials help you plan for the best end-user experience. Ensure you read our calling overview materials first to familiarize yourself.

Prepare your network and prioritize important network traffic using QoS

As your users start using Azure Communication Services for calls and meetings, they may experience a caller's voice breaking up or cutting in and out of a call or meeting. Shared video may freeze, or pixelate, or fail altogether. This is due to the IP packets that represent voice and video traffic encountering network congestion and arriving out of sequence or not at all. If this happens (or to prevent it from happening in the first place), use Quality of Service (QoS) by following our network recommendations.

With QoS, you prioritize delay-sensitive network traffic (for example, voice or video streams), allowing it to "cut in line" in front of traffic that is less sensitive (like downloading a new app, where an extra second to download isn't a significant deal). QoS identifies and marks all packets in real-time streams using Windows Group Policy Objects and a routing feature called Port-based Access Control Lists, which instructs your network to give voice, video, and screen sharing their own dedicated network bandwidth.

Ideally, you implement QoS on your internal network while getting ready to roll out your Azure Communication Services solution, but you can do it anytime. If you're small enough, you might not need QoS.

For detailed guidance, see: Network optimization.

Prepare your deployment for quality and reliability investigations

Quality has different definitions depending on the real-time communication use case and perspective of the end users. There are many variables that affect the perceived quality of a real-time calling experience, an improvement in one variable may cause a negative changes in another variable. For example, increasing the frame rate and resolution of a video call increases network bandwidth utilization and processing power.

Therefore, you need to determine your customer’s use cases and requirements before starting your development. For example, a customer who needs to monitor dozens of security cameras feeds simultaneously may not need the maximum resolution and frame rate that each video stream can provide. In this scenario, you could utilize our Video constraints capability to limit the amount of bandwidth used by each video stream.

Logs on native platforms

Implementing logging as per the logs file retrieval tutorial is critical to gathering details for native development. Detailed logs help in diagnosing issues specific to device models or OS versions. We encourage to the developers that start configuring the Logs API to get details around the call lifetime.

Implement existing quality and reliability capabilities before deployment

Note

We recommend you use our easy to implement samples since they are already optimized to give your users the best call quality. Please see: Samples

If our calling samples don't meet your needs, or you decide to customize your solution please ensure you understand and implement the following capabilities in your custom calling scenarios.

Before you launch and scale your customized Azure Communication Services calling solution, implement the following capabilities to support a high quality calling experience. These tools help prevent common quality and reliability calling issues from happening and diagnose issues if they occur. Keep in mind, some of these call data aren't created or stored unless you implement them.

The following sections detail the tools to implement at different phases of a call:

  • Before a call
  • During a call
  • After a call

Before a call

Pre-call readiness – By using the pre-call checks Azure Communication Services provides, you can learn a user’s connection status before the call and take proactive action on their behalf. For example, if you learn a user’s connection is poor you can suggest they turn off their video before joining the call to have a better audio connection.

Network Diagnostic Tool

The Network Diagnostic Tool provides a hosted experience for developers to validate call readiness during development. You can check if a user’s device and network conditions are optimal for connecting to the service to ensure a great call experience. The tool performs diagnostics on the network, devices, and call quality.

  • By using the network diagnostic tool, you can encourage users to resolve reliability issues and improve their network connection before joining a call.

  • For more information, please see: Network Diagnostics Tool.

Pre-Call Diagnostics API

Maybe you want to build your own Network Diagnostic Tool or to perform a deeper integration of this tool into your application. If so, you can use the Pre-Call diagnostic APIs that run the Network Diagnostic Tool for the calling SDK. The Pre-Call Diagnostics API lets you customize the experience in your user interface. You can then run the same series of tests that the Network Diagnostic Tool uses to ensure compatibility, connectivity, and device permissions with a test call. You can decide the best way to tell users how to correct issues before calls begin. You can also perform specific checks when troubleshooting quality and reliability issues.

  • For example, if a user's hardware test has an issue, you can notify the users involved to manage expectations and change for future calls.

  • For more information, please see: Pre-Call diagnostic.

Conflicting call clients

Because Azure Communication Services Voice and Video call run on web and mobile browsers your users may have multiple browser tabs running separate instances of the Azure Communication Services calling SDK. This can happen for various reasons. Maybe the user forget to close their previous tab. Maybe the user couldn't join a call without a meeting organizer present and they re-attempt to open the meeting join url link, which opens a separate mobile browser tab. No matter how a user ends up with multiple call browser tabs at the same time, it causes disruptions to audio and video behavior on the call they're trying to participate in, referred to as the target call. You should make sure there aren't multiple browser tabs open before a call starts, and also monitor during the whole call lifecycle. You can pro-actively notify customers to close their excess tabs, or help them join a call correctly with useful messaging if they're unable to join a call initially.

During a call

In-call communication – During a call, a user’s network conditions can worsen or they may run into reliability and compatibility issues, all of which can result in a poor calling experience. This section helps you apply capabilities to manage issues in a call and communicate with your users.

User Facing Diagnostics (UFDs)

When a user is in a call, it's important to proactively notify them in real-time about issues on their call. User Facing Diagnostics (UFDs) provide real-time flags for issues to the user such as having their microphone muted while talking or having a poor network quality. You can nudge or act on their behalf. In addition to messaging, you can consider proactive approaches to protect the limited bandwidth a user has. You can tailor your user interface messages to best suite your scenarios. If you find users don’t consistently turn off their video upon receiving a notification from you, then you can proactively turn a user’s video off to prioritize their audio connection, or even hide video capability from customer in your User Interface before they join a call.

For example:

  • If there's a network issue identified you can prompt users to turn off their video, change networks, or move to a location with a better network condition or connection.

  • If there's a device issue identified, you can nudge the user to switch devices.

  • For more information, please see: User Facing Diagnostics.

Video constraints

Video streams consume large amounts of network bandwidth, if you know your users have limited network bandwidth or poor network conditions you can reduce control the network usage of a user's video connection with video constraints. When you limit the amount of bandwidth a user's video stream can consume you can protect the bandwidth needed for good audio quality in poor network environments.

Volume indicator

Sometimes users can't hear each other; maybe the speaker is too quiet, the listener's device doesn't receive the audio packets, or there's an audio device issue blocking the sound. Users don't know when they're speaking too quietly, or when the other person can't hear them. You can use the input and output indicator to indicate if a user’s volume is low or absent and prompt a user to speak louder or investigate an audio device issue through your user interface.

Detailed media statistics

Since network conditions can change during a call, users can report poor audio and video quality even if they started the call without issue. Our Media statistics give you detailed quality metrics on each inbound and outbound audio, video, and screen share stream. These detailed insights help you monitor calls in progress, show users their network quality status throughout a call, and debug individual calls.

  • These metrics help indicate issues on the Azure Communication Services client SDK send and receive media streams. As an example, you can actively monitor the outgoing video stream's availableBitrate, notice a persistent drop below the recommended 1.5 Mbps and notify the user their video quality is degraded.

  • It's important to note that our Server Log data only give you an overall summary of the call after it ends. Our detailed Media Statistics provide low level metrics throughout the call duration for use in during the call and afterwards for deeper analysis.

  • To learn more, see: Media quality statistics

Optimal video count

During a group call with 2 or more participants a user's video quality can fluctuate due to changes in network conditions and their specific hardware limitations. By using the Optimal Video Count API, you can improve user call quality by understanding how many videos streams their local endpoint can render at a time without worsening quality. By implementing this feature, you can preserve the call quality and bandwidth of local endpoints that would otherwise attempt to render video poorly. The API exposes the property, optimalVideoCount, which dynamically changes in response to the network and hardware capabilities of a local endpoint. This information is available at runtime and updates throughout the call letting you adjust a user’s visual experience as network and hardware conditions change.

  • To implement, visit web platform guidance Manage Video and review the section titled Remote Video Quality.

End of Call Survey

Customer feedback is invaluable, the End of Call Survey provides you with a tool to understand how your end users perceive the overall quality and reliability of your JavaScript / Web SDK calling solution. The survey can be modified to various survey formats if already have a survey solution in place. After publishing survey data, you can view the survey results in Azure Monitor for analysis and improvements. Azure Communication Services also uses the survey API results to monitor and improve your quality and reliability.

After a call

Monitor and troubleshoot call quality and reliability - Before you release and scale your Azure Communication Services calling solution, implement these quality and reliability monitoring capabilities to ensure you collecting available logs and metrics. These call data aren't stored until you implement them so you won't be able to monitor and debug your call quality and reliability without them.

Start collecting call logs

Review this documentation to start collecting call logs: Enable logs via Diagnostic Settings in Azure Monitor.

  • We recommend you choose the category group "allLogs" and choose the destination detail of “Send to Log Analytics workspace" in order to view and analyze the data in Azure Monitor.
  • If you don't have a Log Analytics workspace to send your data to, you'll need to create one.
  • We recommend you monitor your data usage and retention policies for cost considerations as needed. See: Controlling costs.

Diagnose calls with Call Diagnostics

Call Diagnostics is an Azure Monitor experience that delivers tailored insight through specialized telemetry and diagnostic pages in the Azure portal.

Once you begin storing log data in your log analytics workspace, you can visualize your search for individual calls and visualize the data in Call Diagnostics. Within your Azure Monitor account you simply need to navigate to your Azure Communication Services resource and locate the Call Diagnostics blade in your side pane.

Examine call quality with Voice and Video Insights Preview

Once you have enabled logs, you can view call insights in your Azure Resource using visualization examples: Voice and video Insights

Analyze end user sentiment with the End of Call Survey

Once you enable diagnostic settings to capture your survey data you can use our sample call log queries in Azure Log Analytics to analyze your user's perceived quality experience. User feedback can show you call issues you didn't know you had and help you prioritize your quality improvements.

Analyze your call data directly from the client

By collecting call data such as Media Statistics, User Facing Diagnostics, and pre-call API information you can review calls with poor quality to conduct root cause analysis when troubleshooting issues. For example, a user may have an hour long call and report poor audio at one point in the call.

The call may have fired a User Facing Diagnostic indicating a severe problem with the incoming or outgoing media steam quality. By storing the detailed media statistics from the call you can review when the UFD occurred to see if there were high levels of packet loss, jitter, or latency around this time indicating a poor network condition. You explore whether the network was impacted by an external client's unmanaged network, unnecessary network traffic due to improper Quality of Service (QoS) network prioritization policies, or an unnecessary Virtual Private Network (VPN) for example.

Note

As a rule, we recommend prioritizing a user’s Audio connection bandwidth before their video connection and both audio and video before other network traffic. When a network is unable to support both audio and video, you can proactively disable a user’s video or nudge a user to disable their video.

Request support

If you encounter quality or reliability issues you're unable to resolve and need support, you can submit a request for technical support. The more information you can provide in your request the better (native logs are crucial to optimize the response time), however you can still submit requests with partial information to start your inquiry. See: How to create Azure support requests.

  • If you're notified of license requirements while attempting to request technical support, you may need to choose a paid Azure support plan that best aligns to your needs. See: Compare Support Plans.
  • If you prefer not to purchase support you can leverage community support. See: Community Support.

Other considerations

Next steps