SOLVED

Dialing by Extension

Copper Contributor

I'm having trouble finding an answer on this. I know this question has been asked before, but lots of things I'm seeing are pointing to Skype Business or users coming from Skype to Teams Phone, etc... Or the questions are a couple of years old and the instructions are outdated.

 

We are migrating from Zoom phone to Teams Phone.

 

How can we go about making it so a user can enter a 4-digit extension and reach a specific user?

I've seen posts where you set the OnPremLineUri, LineUri, etc... to something like "tel:+1555123XXXX;ext:XXXX".

 

However, the last 4-digits of our Users' DID lines are not the same 4 digits as their extension.

 

We're using "Calling Plans" for users. I read somewhere it matters whether your using Direct Routing or Calling Plan.

 

How can I make this work? Any help would be greatly appreciated!

 

-Matt

11 Replies

Hello@mmartin1935 

welcome to the Microsoft community, my name is Recep I'll be happy to help you today.

I understand that you are migrating from Zoom to Teams phone and now you want to be able to dial by extension.

Please note that the users you want to make available for Dial By Extension need to have an extension specified as part of one of the following phone attributes defined in Active Directory (and synchronized via Microsoft Entra Connect) or Microsoft Entra ID. For more information, see Add users individually or in bulk.

  • TelephoneNumber (AD and Microsoft Entra ID)
  • HomePhone (AD)
  • Mobile (AD and Microsoft Entra ID)
  • OtherTelephone (AD)

The required format to enter the extension in the user phone number field can be one of the following formats:

  • +<phone number>;ext=<extension>

  • +<phone number>x<extension>

  • x<extension>

  • Example 1: Update-MgUser -UserId 'email address removed for privacy reasons' -MobilePhone '15555555678;ext=5678'

  • Example 2: Update-MgUser -UserId 'email address removed for privacy reasons' -MobilePhone '+15555555678x5678'

  • Example 3: Update-MgUser -UserId 'email address removed for privacy reasons' -MobilePhone 'x5678'

You can set the extension in the Microsoft 365 admin center or the Microsoft Entra admin center. It can take up to 12 hours before changes are available to Auto attendants and Call queues.

 Note

If using the TelephoneNumber field to define the extension, Microsoft recommends that you use the format +<phone number>;ext=<extension>. If the user is also assigned a Teams Phone Number, you should define both numbers the same way.

Refence article: Auto attendant and Call queue dialing and voice recognition reference - Microsoft Teams | Microsoft ... 

 

If I have answered your question, please mark your post as Solved

If you like my response, please give it a Like :smile:

Appreciate your Kudos! Proud to contribute! :)

 

Thank you for the reply.

I ran the command:
Set-MsolUser -UserPrincipalName email address removed for privacy reasons -PhoneNumber "+15551230001;ext=2233"

Then, looking in MS 365 Admin Center under that user's contact info I can see under Office Phone it added: "+15551230001;ext=2233"

I saw some articles about setting up an auto-attendant to use dial-by-extension. Currently this is saying no user with that extension exists. But, I did remember seeing it could take up to 12 hours for these extensions to be available to Call Queues and Auto-Attendants.

Should I also be able to pickup my teams desk phone, or from the Teams app dialer and simply dial 2233 to reach that user? Or does it REQUIRE you to use an Auto-Attendant?

Thanks Again,
Matt

@Deleted 

To add to my last comment...

Looking in MS Entra portal for the user I added the phone number for. Under "Business phone" it shows the phoneNumber;extension I used in the Set-MsolUser command.

 

Did I do that correctly? And how will I know when the extension is ready to be tested?

 

Also, we have a handful of on-prem users that are synced to Azure AD. In this case for the synced users only, I would need to set the "Telephone number" field in the on-Prem AD, And that will write to the user in Azure...?

 

I'm really hoping a user will be able to just pickup their phone and dial a 4-digit extension to reach someone...

@mmartin1935 Hey, for internal calls that don't through an auto-attendant, you could look at setting Normalization rules to use the last digits of a person's number as their 'extension' - assuming everyone has the same range of phone numbers.

 

This article has a good explanation of how to set it up - Use Extension Dialing in Microsoft Teams (ucstatus.com)

 

@HelloBenTeoh Thanks for the reply. Unfortunately the user's DID numbers and their extensions are completely unrelated... Since we're bringing in these extensions from our original Cisco phone system, then Zoom and now Teams. Some of the higher-ups still like to dial by extensions, which is why we're attempting to get this working.

I noticed in the normalization rules, when you choose advanced. You have the ability to use a REGEX. I'm guessing there's no way to somehow use a REGEX to match the "ext=xxxx" portion of the TelephoneNumber attribute?

So if that's not possible. Is the ONLY way you can direct dial an extension is if you can somehow match that to a portion of the user's full DID telephone number? Otherwise, it needs to be an Auto-Attendant?

Thanks Again,
Matt

@mmartin1935 that's a challenge. Is it possible to work with the higher ups to set up speed dial options instead? Are they still using handsets?

best response confirmed by mmartin1935 (Copper Contributor)
Solution
How many people are you talking about having extensions and numbers different than their DID?

You could create a number normalization rule that normalizes 4 digits to the full phone number, you'd just end up with 1 rule for each person that has a different DID/extension.

New-CsVoiceNormalizationRule -Name BobsExt -Description "Bob's Extension to DID" -Pattern '^1122$' -Translation '+15555555555;ext=1122'
New-CsVoiceNormalizationRule -Name SarahsExt -Description "Sarah's Extension to DID" -Pattern '^2211$' -Translation '+15555554242;ext=2211'

If you put the numbers in a spreadsheet/csv it wouldn't be hard to use some PowerShell to loop through the list and then push it into Teams.

Another option, though not sure if it's available yet, is Teams Private Numbers. Assign a static phone number with the extension as a private number, then your normalization rule is simplified:

New-CsVoiceNormalizationRule -Name ExtensionMatch -Description "Extension Normalization" -Pattern '^(\d{4})$' -Translation '+15555555555;ext=$1'
Hey Ben, thanks again for the reply. Yes, they are using handsets (*desk phones). Yea, Speed dials could be an option... I think some of the push back to keep extensions is because of common area phones in our warehouse, and they just want to pick up the handset and dial a extension that they know to reach a specific workstation.
Thanks for the reply!
Yea, this could probably be the most feasible option since I am able to script it out with Powershell.

Do we know if there's a limit on total number of Normalization Rules?
Could there be any drawbacks to having 150 or so Normalization Rules?

Thanks Again,
Matt

Hello @mmartin1935 

Microsoft now enforces the rule that there can be no more than 50 normalization rules in a given dial plan.

Reference article: What are dial plans? - Microsoft Teams | Microsoft Learn

If I have answered your question, please mark your post as Solved

If you like my response, please give it a Like :smile:

Appreciate your Kudos! Proud to contribute! :)

 

Thanks for the reply. Hmm that's unfortunate. But, we have a few locations, only one of which would put us over 50 normalization's in order to include everyone... So I think for that location, if I only included the ones that this is important to them, then I think we should be ok.

I also created an Auto-Attendant that will do dial-by-extension. So I think that should cover the rest of the people. For this AA. I modified the dial plan so that if you dial a "9" it'll reach this AA and people can then dial the extension + # and get transferred to the correct user.

If I wanted to assign an Extension to an Auto-Attendant or a Call Queue, I would just configure the Resource Account user's "TelephoneNumber" the same way I would a regular User, i.e. "+15551234567;ext=3000"

Thanks Again,
Matt
1 best response

Accepted Solutions
best response confirmed by mmartin1935 (Copper Contributor)
Solution
How many people are you talking about having extensions and numbers different than their DID?

You could create a number normalization rule that normalizes 4 digits to the full phone number, you'd just end up with 1 rule for each person that has a different DID/extension.

New-CsVoiceNormalizationRule -Name BobsExt -Description "Bob's Extension to DID" -Pattern '^1122$' -Translation '+15555555555;ext=1122'
New-CsVoiceNormalizationRule -Name SarahsExt -Description "Sarah's Extension to DID" -Pattern '^2211$' -Translation '+15555554242;ext=2211'

If you put the numbers in a spreadsheet/csv it wouldn't be hard to use some PowerShell to loop through the list and then push it into Teams.

Another option, though not sure if it's available yet, is Teams Private Numbers. Assign a static phone number with the extension as a private number, then your normalization rule is simplified:

New-CsVoiceNormalizationRule -Name ExtensionMatch -Description "Extension Normalization" -Pattern '^(\d{4})$' -Translation '+15555555555;ext=$1'

View solution in original post