Hello everybody. At the beginning of this year, I set myself a goal of writing at least one article per month. Since I will meet my goal with today’s article, I’ll make sure to take a break over the holidays and recharge.
But before I do that, we’re going to talk about some lesser-known stuff about Teams Cloud PBX features. Over the years, auto attendants and call queues have gotten a lot of new or updated features. Did you know that there’s a dedicated Cmdlet to see what features are enabled for your tenant? Use the following code to get the complete list.
(Get-CsAutoAttendantTenantInformation).FlightedFeatures
Update 29.06.2023
I’ve written a Bot which sends any new entries in this list to a channel on my Discord Server. If you want to stay up to date, you can join my Server using this link. If you want to learn more about my Discord Server, check this link.
/Update
At the time of drafting this article, this is what’s returned by the Cmdlet. Unfortunately, many of these features were added without an MCP (Message Center Post) or a M355 Road Map entry. I’ll try to decipher it and explain what each of these entries mean.
BackupConfigInBvd
NgcProvisioning
UserValidationViaAdminService
AutoAttendantSharedVoicemailEnabled
AutoAttendantAnnouncementAsMenuOptionEnabled
AuthorizedUsersEnabled
CallQueueAllowPstnNumberAsTargetInCmdlets
DirectorySearchByExtensionEnabled
PstnTransferOutEnabled
CallQueueSharedVoicemailEnabled
CallQueueConferenceModeEnabled
CallQueuePresenceAwareRoutingEnabled
CallQueueLongestIdleRoutingEnabled
GranularSchedulesEnabled
AVSCallQueueZodiac
CallQueueEnableResourceAccountsForOboV2
EnableSharedVoicemailSystemPromptSuppression
OboMobileFeatureEnabled
AVSAdminEnableVerificationOfXMSUserIdHeader
AVSEnableMenuOptionExpansion
CallQueueEnableSharedVoicemailSystemPromptSuppression
SupervisorDelegatedAdminPart1Enabled
SupervisorDelegatedAdminPart2Enabled
SupervisorDelegatedAdminPart3Enabled
AutoAttendantAnnouncementAsMenuOptionEnabled
This feature added the possibility to choose either a Text-To-Speech or an audio file announcement as auto attendant menu options. Once the announcement has been played back, the caller will be returned to the initial IVR greeting (this will create a loop).
AuthorizedUsersEnabled
As far as I can tell, this feature is not yet enabled yet, even though it already shows in flighted features. I can only assume that this will allow admins to delegate certain admin tasks to non-admin users.
There are also three other references which look related to this.
- SupervisorDelegatedAdminPart1Enabled
- SupervisorDelegatedAdminPart2Enabled
- SupervisorDelegatedAdminPart3Enabled
CallQueueAllowPstnNumberAsTargetInCmdlets
I am not 100% sure with this one but the name kind of suggests that this added the possibility to set an external PSTN number as overflow or timeout target on call queues using PowerShell, after PSTN transfer had been rolled out for auto attendants.
PstnTransferOutEnabled
If I remember correctly, transfer to PSTN was enabled for auto attendants before call queues. Thus, there’s another entry for that feature next to CallQueueAllowPstnNumberAsTargetInCmdlets.
DirectorySearchByExtensionEnabled
This feature allows inbound callers to reach people who have an extension through an auto attendant. The caller will enter a person’s extension followed by #
and the auto attendant will forward the call to the recipient. The extension must be configured in Azure AD (Phone Number) and not in Teams (LineURI) for it to work.
As you can see, the user does not have an extension set for it’s LineURI.
We do not need to set any dial keys if we only want Dial by extension without any other options.
Any auto attendant can only be enabled for dial by extension or dial by name. If you want both to be available to your callers, you will need to follow the example on Microsoft Learn.
If you want to use both the Dial by name and Dial by extension features, you can assign a dial key on your main auto attendant to reach an auto attendant enabled for Dial by name. Within that auto attendant, you can assign the 1 key (which has no letters associated with it) to reach the Dial by extension auto attendant.
It’s also possible to limit the dial scope to certain groups.
Bonus Tip: You can directly dial an extension from some phones by adding ,,<extension>#
at the end of the number. At least an iPhone will dial the keys automatically once the announcement has been played back. This is the same technique which Microsoft uses for Calling Links in Teams Meetings which support audio conferencing.
CallQueueSharedVoicemailEnabled
This feature enabled the much-requested shared voicemail on call queues. Before that, we had to license users which would permanently forward to voicemail which was super painful because there’s still no way to upload an audio file for voicemail greetings on user accounts. The voicemail greeting needs to be recorded using the Teams client. If you want to know more about Teams shared voicemail, I recommend to check out this very comprehensive article.
AutoAttendantSharedVoicemailEnabled
This feature was also enabled for auto attendants after it has been enabled for call queues.
CallQueueConferenceModeEnabled
Conference mode will create a meeting when a call is connected to an agent which vastly improves the connection time. This means that agents will hear callers much sooner / without delays. The default value was changed from false to true in 2022. The docs were updated accordingly on August 15 2022 in this commit.
CallQueuePresenceAwareRoutingEnabled
The default value for Presence based routing was also changed from false to true in the same commit linked above.
CallQueueLongestIdleRoutingEnabled
I think that these names are sometimes a little misleading. While I assume that CallQueueConferenceModeEnabled and CallQueuePresenceAwareRoutingEnabled refer to the new default values, this one can’t since it’s not a boolean value. Here’s the description from Microsoft Learn.
The RoutingMethod defines how agents will be called in a Call Queue. If the routing method is set to Serial, then agents will be called one at a time. If the routing method is set to Attendant, then agents will be called in parallel. If routing method is set to RoundRobin, the agents will be called using Round Robin strategy so that all agents share the call-load equally. If routing method is set to LongestIdle, the agents will be called based on their idle time, i.e., the agent that has been idle for the longest period will be called.
I can’t remember if Longest Idle was always there or if it was added later on. But since there’s an entry in flighted features, I assume it was added at some point.
GranularSchedulesEnabled
I’ve been working with Teams Voice since the beginning, when we still had to use Skype for Business Online Admin Center to configure auto attendants and call queues (v1). From there, it was super easy to select business hours from a timetable. This only supported 30 minutes increments though.
When auto attendants were moved to TAC, they only supported 30 minutes increments at first too. 15 minutes increments were added quite early on though.
Because business hours now support 15 minutes increments, the drop-down list is awfully long which makes it kind of time intensive to configure. I’ve published an article and an accompanying PowerShell script to combat this here.
AVSCallQueueZodiac
Zodiac was the code name for Voice Enabled Channels which is also known as Collaborative Calling. I don’t know how this name made it into production. 🙃
This update was mentioned rather briefly in this TechNet blog post under calling.
Voice-enabled channels
Voice-enabled channels allow connecting a call queue to a channel in Microsoft Teams. Users can collaborate and share information within the channel while taking calls in the queue. This feature is ideal for scenarios such an IT help desk or HR hotline. IT admins can quickly connect call queues to specific channels, and team owners can manage the settings.
CallQueueEnableResourceAccountsForOboV2
With Voice Enabled Channles, it was finally possible to make outbound calls using a number of a resource account. This only worked if you used the dialer located in the channel but not standard dialer from the Calls app at first. I’m guessing “Obo” stands for Outbound something and V2 also enabled this feature in the Calls App dialer. This was mentioned in Roadmap entry 86992.
Update 03.06.2023
I’m now fairly confident that Obo stands for On behalf of.
/Update
EnableSharedVoicemailSystemPromptSuppression
When a call goes to voicemail on an auto attendant, a so-called system greeting is being played back by default. In English it sounds like this.
Please leave a message after the tone. When you have finished, please hang up.
Since many companies use professionally recorded audio files for their announcements, it can be disturbing that a custom greeting is followed by the system greeting which will be Text-To-Speech. Because of that, Microsoft has added the ability to suppress it.
When suppressing the system greeting on an auto attendant, you have to be careful though. There will be two different beep tones because the auto attendant forwards the call to shared voicemail, which will play back the first beep and then play onther (different sounding) one as a “ready to leave a message” indicator. I’ve also covered that in more detail under “One Last Caveat” here.
CallQueueEnableSharedVoicemailSystemPromptSuppression
When you read the article linked above, you will find the following paragraph.
For call queues, this is slightly different. There is no option to suppress the system greeting. A call queue’s primary purpose is to route calls to agents so there are only routing options for overflow or timeout scenarios. This also means that there’s no option to configure a greeting inside the scope of an overflow or a timeout action.
When you upload your own audio file, the system greeting is automatically suppressed by the call queue. There’s no option to enable it. (Why would you anyway?)
At the time of writing, this was true. But now Microsoft has added the option to suppress the system message for TTS greetings and not suppress it for audio files on call queues as well. Remember that you can always use my M365 Call Flow Visualizer to see exactly which greetings are configured on any call flow.
OboMobileFeatureEnabled
I’d be lying if I said that I knew what this references to. My best guess is that it’s related to Operator Connect Mobile.
AVSEnableMenuOptionExpansion
I have no idea what that is. It would be a lot easier if we would see at which dates these entries have been added. The only thing I can think of is support for pound and asterisk key on auto attendant menu options.
BackupConfigInBvd
As far as I know, BVD stands for Business Voice Directory and it is an internal Microsoft system. This is most likely an internal service update which has no impact on admin exposed settings.
Other Entries
There are a couple of entries where I really don’t have the slightest idea what they could mean.
- NgcProvisioning
- UserValidationViaAdminService
- AVSAdminEnableVerificationOfXMSUserIdHeader
Conclusion
Get-CsAutoAttendantTenantInformation
allows us to get a vague overview of which features have been added or might be added soon. It won’t help you configure or unlock anything, but I still hope that I was able to explain some things which you might not have known before.
I wish you all happy holidays. See you next year!