Dial pad configuration
In the Teams client, the dial pad enables users to access Public Switched Telephone Network (PSTN) functionality. The dial pad is available for users with a Teams Phone license, provided they're configured properly. The following criteria are all required for the dial pad to show:
- User has an enabled Teams Phone ("MCOEV") license
- User is homed online and not in Skype for Business on premises
- User has Enterprise Voice enabled
- User has Allow Private Calling enabled in Teams Calling Policy
To successfully place a call using the dial pad, the user must have one of the following: Microsoft Calling Plan, Operator Connect, is enabled for Direct Routing, or is able to use Shared Calling. For more information about Shared Calling, see Plan for Shared Calling.
The following sections describe how to use PowerShell to check the criteria. In most cases, you need to look at various properties in the output of the Get-CsOnlineUser cmdlet. Examples assume $user is either the UPN (UserPrincipalName) or SIP address of the user.
User has an enabled Teams Phone ("MCOEV") license
Make sure that the assigned plan for the user shows the CapabilityStatus attribute set to Enabled and the Capability set to MCOEV (Teams Phone license). You might see MCOEV, MCOEV1, and so on. All are acceptable--as long as the Capability starts with MCOEV. For more information on the Teams Phone license, see Microsoft Teams add-on licensing.
To check that the attributes are set correctly, use the following command:
(Get-CsOnlineUser -Identity $user).AssignedPlan
The output will look like the following. You only need to check the CapabilityStatus and the Capability attributes:
AssignedTimestamp Capability CapabilityStatus ServiceInstance ServicePlanId
----------------- ---------- ---------------- --------------- -------------
07-02-2020 12:28:48 MCOEV Enabled MicrosoftCommunicationsOnline/NOAM-4A-S7 4828c8ec-dc2e-4779-b502-...
07-02-2020 12:28:48 Teams Enabled TeamspaceAPI/NA001 57ff2da0-773e-42df-b2af-...
User has Microsoft Calling Plan or is enabled for Direct Routing
If the user has Microsoft Calling Plan, make sure that the CapabilityStatus attribute is set to Enabled, and that the Capability is set to MCOPSTN. You might see MCOPSTN1, MCOPSTN2, and so on. All are acceptable--as long as the Capability starts with MCOPSTN.
To check the attributes, use the following command:
(Get-CsOnlineUser -Identity $user).AssignedPlan
The output will look like the following. You only need to check the CapabilityStatus and the Capability attributes:
AssignedTimestamp Capability CapabilityStatus ServiceInstance ServicePlanId
----------------- ---------- ---------------- --------------- -------------
07-02-2020 12:28:48 MCOEV Enabled MicrosoftCommunicationsOnline/NOAM-4A-S7 4828c8ec-dc2e-4779-b502-...
07-02-2020 12:28:48 MCOPSTN2 Enabled MicrosoftCommunicationsOnline/NOAM-4A-S7 5a10155d-f5c1-411a-a8ec-...
07-02-2020 12:28:48 Teams Enabled TeamspaceAPI/NA001 57ff2da0-773e-42df-b2af-...
If the user is enabled for Direct Routing, the user must be assigned a non-null value for OnlineVoiceRoutingPolicy. To check the attribute, use the following command:
Get-CsOnlineUser -Identity $user|Select OnlineVoiceRoutingPolicy
The output should have a non-null value, for example:
OnlineVoiceRoutingPolicy
------------------------
Test_Policy
Note
If your tenant is configured with a Global OnlineVoiceRoutingPolicy that applies to all users, then a user assigned policy is not required.
User has Enterprise Voice enabled
To check if the user has Enterprise Voice enabled, use the following command:
Get-CsOnlineUser -Identity $user|Select EnterpriseVoiceEnabled
The output should look like:
EnterpriseVoiceEnabled
----------------------
True
Note
When assigning a phone number, Enterprise Voice enabled is automatically set to True. If a phone number is assigned and the value is False, you must use the Set-CsPhoneNumber cmdlet to set the value to True.
User is homed online and not in Skype for Business on premises
To ensure the user is homed online and not in Skype for Business on premises, the RegistrarPool must not be null and the HostingProvider must contain a value that starts with "sipfed.online." To check the values, use the following command:
Get-CsOnlineUser -Identity $user|Select RegistrarPool, HostingProvider
The output should be similar to:
RegistrarPool HostingProvider
------------- ---------------
sippoolbn10M02.infra.lync.com sipfed.online.lync.com
User has Teams Calling Policy enabled
The user's effective TeamsCallingPolicy must have AllowPrivateCalling set to true. By default, users inherit the global policy, which has AllowPrivateCallingPolicy set to true by default.
To get the TeamsCallingPolicy for a user and to check that AllowPrivateCalling is set to true, use the following command:
if (($p=Get-CsUserPolicyAssignment -Identity $user -PolicyType TeamsCallingPolicy) -eq $null) {Get-CsTeamsCallingPolicy -Identity Global} else {Get-CsTeamsCallingPolicy -Identity $p.PolicyName}
The output should look like:
Identity : Global
Description :
AllowPrivateCalling : True
AllowWebPSTNCalling : True
AllowVoicemail : UserOverride
AllowCallGroups : True
AllowDelegation : True
AllowCallForwardingToUser : True
AllowCallForwardingToPhone : True
PreventTollBypass : False
BusyOnBusyEnabledType : Disabled
MusicOnHoldEnabledType : Enabled
Additional notes
You might need to restart the Teams client after making any of these configuration changes.
If you recently updated any of the above criteria, you might need to wait a few hours for the client to receive the new settings.
If you still don't see the dial pad, check if there's a provisioning error by using the following command:
Get-CsOnlineUser -Identity $user|Select UserValidationErrors
If it's been more than 24 hours and you're still seeing problems, contact Support.