Diagnose and troubleshoot call failure and call quality issues
Nobody wants their call to fail or have bad quality, so knowing why failures and quality issues happen and how to avoid them in the future is key for a Teams Voice Administrator.
In this unit, we look at failed calls and how to diagnose and troubleshoot them.
There are two types of failure. When a user tries to make a call and it fails to establish, these are setup failures and calls that are established but cut out mid-call or don't end in an expected way, these are dropped calls.
Call quality issues will appear to the user as audio or video missing or being choppy or robotic.
Report on calls with Call Analytics
Microsoft Teams admin center Call Analytics is the place to go to analyze call quality and performance issues for individual users or individual calls and meetings. If a user reports a bad call experience, this is where you can find a potential root cause.
Call Analytics are found by first looking up the user in the Users Tab of the Teams Control Panel. Then, select the user and select the Meetings and Calls Tab. From here, you can look at any call or meeting the user was involved in.
Call Analytics records give details of network performance, devices, and endpoints in the call and highlight any issues.
Troubleshoot calls using advanced Call Analytics and perform root cause analysis
When a user reports they had a failed call, the first place to go to try to understand the issue is Teams admin center Call Analytics.
To get to this, go to Users and lookup the user in question, select their name to get into their details and then the "meetings and calls" tab to give a list of all their meetings and calls.
Find the call in question and select it. Select the Advanced tab, and then look for yellow and red items, which indicate poor call quality or connection problems.
Yellow meaning warning or outside of the normal range, red is a significant problem.
When looking over the sessions for a specific user, the Audio quality column highlights any calls or meetings with poor audio quality. A meeting will be broken down into sessions.
Going into Advanced will highlight the metric(s) that has caused the poor call conditions. In this case, Average round-trip time as seen in the following picture:
Common issues that Call Analytics will report on include:
Call setup failures, Microsoft diagnostic error codes 20-29 indicates the call setup failed
Audio network classified poor call caused by packet loss, jitter, NMOS degradation, RTT, or concealed ratio
Device not functioning, where the audio or USB device didn't function correctly
You can export the report by selecting the top right "Export Report" button, which is handy when you need to share a report with Microsoft or someone who doesn't have Teams admin center Access. Reports are exported in Excel format.
Troubleshooting calls with Teams client call health network telemetry
A great way for users to understand call quality issues is to use call health in the Teams client during the call. Under the ellipse (three dots) select Call Health as shown in the picture below:
This will give snapshots of network performance every 15 seconds for the overall network as well as audio, video, and screen sharing if they're being used.
Troubleshoot call issues using Microsoft 365 connectivity tool
The Microsoft 365 connectivity tool can perform some basic Teams network performance tests, such as Media connectivity, Packet loss, Latency, and Jitter.
To run the test, perform the following steps:
Navigate to the Microsoft 365 network connectivity test at https://connectivity.office.com/
Sign in with your Office 365 account for the best test experience
Either automatically detect location or add your location manually.
Tip
If you let the tool automatically detect your connection, make sure it is correct on the map to make the test valid.
Once the test is complete select Details for the detailed results. Under Microsoft Teams you'll see tests for media connectivity, packet loss, latency, and jitter. If any of these are above target, you have a network issue.
Troubleshoot calling issues using the self-help diagnostics in Microsoft 365 admin center
Microsoft offers some Self-help diagnostics tools that can be run before raising a support ticket.
Specifically for voice scenarios, the following tests are available
Diagnostic | Diagnostic Shortcut command | Description |
---|---|---|
Teams Direct Routing | Diagnostic: Teams Direct Routing | Validates that a user is correctly configured for direct routing. |
Teams Call Queue | Diagnostic: Teams Call Queue | Validates that a call queue can receive calls. |
Teams Remove Number from Conference Bridge | Diagnostic: Remove Conference Bridge Number | Validates that the number can be removed from the conference bridge. |
Teams Dial Pad is Missing | Diagnostic: Teams Dial Pad Missing | Validates that the dial pad is visible within Teams. |
Unable to Make Domestic or International PSTN calls in Teams | Diagnostic: Teams PSTN | Validates that a user can make or receive domestic or international PSTN calls. |
Teams Auto-Attendant | Diagnostic: Teams Auto Attendant | Validates that an auto attendant can receive calls. |
Teams Voicemail | Diagnostic: Voicemail | Validates that a user is properly configured to use Voicemail in Teams. |
Teams Call Forwarding | Diagnostic: Teams Call Forwarding | Validates that a user is properly configured to forward calls to a specified number. |
More non-voice scenarios are available too. For more information, see the links in the resources.
To run these diagnostics tests:
Go to the Microsoft 365 admin center at https://admin.microsoft.com.
Sign in as a Global Administrator.
Select Support and New service request.
The form will ask " Tell us about the problem so we can help you solve it." Here you can input the Diagnostic Shortcut command in the above table to jump straight to the diagnostic test.
Follow the steps to complete the test as appropriate.
Tip
This feature isn't available for Microsoft 365 Government, Microsoft 365 operated by 21Vianet, or Microsoft 365 Germany.
Troubleshoot tenant dial plans
A dial plan allows you to transform the number dialed by the user into another number, for example from a local dialing format to the international E.164 format, or to allow users to dial short extension numbers for users. Administrators can create additional dial plans rules with tenant scoped dial plan. Teams traverses the list of normalization regex rules from the top down and uses the first rule that matches the dialed number.
There are two PowerShell cmdlets that are useful for troubleshooting dial plan issues:
Get-CsEffectiveTenantDialPlan
is used to retrieve an effective tenant dial plan for a specific user.The returned effective Tenant Dial Plan contains the Identity and the Normalization rules that are effective for the user. The Identity is in the form
TenantGUID_GlobalVoiceDialPlan_TenantDialPlan
. In the above case, we can see the value isDefaultTenantDialPlan_GB
.Get-CsEffectiveTenantDialPlan -Identity [user@domain.com](mailto:user@domain.com)
The output shows a RunspaceId and the associated dial plan, such as
EffectiveTenantDialPlanName: 92821061-55c6-4b3f-a78c-c07ede52aa58_DefaultTenantDialPlan_GB
. It also outputs all the normalization rules for that dial plan. These are the regex rules that transform the dialed number.NormalizationRules : {Description=GB International Dialing Rule;Pattern=^00(\d+)$;Translation=+$1;Name=GB Intl Dialing;IsInternalExtension=False;LegacyPointer=, Description=GB Extensions rule;Pattern=^((\+)?(\d+))(;)?(ext|extn|EXT|EXTN|x|X)(=)?(\d+)$;Translation=$1;ext=$7;Name=GB Extension Rule;IsInternalExtension=False;LegacyPointer=, Description=GB Long Distance Dialing Rule;Pattern=^0(\d+)$;Translation=+44$1;Name=GB Long Distance;IsInternalExtension=False;LegacyPointer=}
Test-CsEffectiveTenantDialPlan
is used to test the dial plan and how it will impact a specific dialed number. This allows us to test how a number dialed by the user will be transformed.Test-CsEffectiveTenantDialPlan -DialedNumber 0123456789 -Identity megan.bowen@contoso.com
The output would be like:
RunspaceId : 91108f26-3cf7-43d2-acc5-5f933359e2b4 TranslatedNumber : +44123456789 MatchingRule : Description=GB Long Distance Dialing Rule;Pattern=^0(\d+)$;Translation=+44$1;Name=GB Long Distance;IsInternalExtension=False
We can see that if the user dials 0123456789 it will be successfully transformed to +44123456789 and which rule is matching to make that transformation, GB Long Distance Dialing Rule.