When you’re using Microsoft Teams Direct Routing as your primary calling solution, chances are that sometimes you also need to permanently forward calls to one of your numbers to another external phone number.
In many cases, forwarding of numbers can also be handled outside of Teams. Most SIP providers offer a web-based portal for number management and forwarding. However, controlling all your numbers inside Teams without relying on third parties can still be an advantage sometimes.
Note: this blog post only considers Teams Direct Routing scenarios. Calling Plans or Operator Connect are not covered.
Forwarding by a Licensed Teams User
Setting up a forwarding of numbers can be achieved in multiple ways. The most obvious one to just create and license a Teams user and setup a permanent call forwarding for that user in the Teams Client.
This user will need at minimum a Business Basic + Teams Phone Standard License. A CAP (Common Area Phone License) *in theory* should also present this option when using the Desktop or Web Client but call forwarding won’t be available when using a Teams certified Desk Phone. Thus, this is an unsupported scenario and should not be used. There’s a better way which will even allow you to get rid of the license costs entirely. I’ll explain how later in this article.
Since there is no voice app like an auto attendant or call queue involved in this scenario, all calls to the direct number of this particular user will be forwarded right away. This also means that the caller will hear the ring back tone, until the external participant (forwaring target) answers the call.
Advantages:
- Direct forwarding, call does not get picked up or intercepted by Teams
- Should be possible to forward calls to a FAX number
- Good for scenarios where the forwarding target often changes (can be changed by other Teams users from inside their client by using the Boss/Delegate feature)
Disadvantages:
- License costs
- Configuration can only be reviewed or changed by logging in, using Boss/Delegate or PowerShell Preview Cmdlets (Get-CsUserCallingSettings)
- Can’t use Service or Toll-Free numbers
Forwaring by a Resource Account
It’s also possible to transfer calls to external PSTN numbers by using resource accounts assigned to auto attendants or call queues. Before you can assign a number to a resource account, you need to assign a free Teams Phone Standard — Virtual User License to the resource account.
Once the license is assigned, we need to assign a phone number to the resource account:
Set-CsPhoneNumberAssignment -Identity ra_cq_PS_Test@mozzism.ch -PhoneNumber +41445124077 -PhoneNumberType DirectRouting
Next we also need to assign it a Voice Routing Policy:
Grant-CsOnlineVoiceRoutingPolicy -Identity ra_cq_PS_Test@mozzism.ch -PolicyName “FirstTrunk”
The most obvious way, at least for me was to create an auto attendant and set it up without business hours so it will always perform the same action: forward the call to an external number. This works, no doubt but the problem is that the auto attendant *ALWAYS* answers the call before it’s actually forwarded. Because of that, this method can’t be used to forward calls to a FAX number.
Since it’s also possible to forward calls from a call queue to an external number, we can leverage this to create a similar experience as to when the call is permanently forwarded by a Teams user.
A call queue has two options to control actions or forwardings. Overflow (max. number of simultaneous calls) or timeout.
If we set the timeout to zero (0 minutes, 0 seconds) the queue still answers the call, before it’s forwarded. Even if there is no greeting configured.
A good example to see that the queue picked up the call is that the counter starts on any phone. Here I’m using Skype to call the call queue and you can see that the call has been established for 5 seconds, even though the configured forwarding target has not answered the call yet. While the call rings the forwarding target, Teams will generate a ring back tone inside the already established call.
If we set the overflow threshold of the queue to zero on the other hand, TAC shows a warning message that the queue won’t play the greeting when the overflow threshold is set to 0.
It’s not entirely clear that this has always been the case, but I’m pretty sure that at least this warning message has been introduced a only few weeks ago when the call queue wizard was redesigned. It was this warning message that tipped me of and inspired me to test this.
So, let’s make another call to the queue’s number. This time, there’s no counter visible in Skype’s call screen which means that the call gets forwarded without being intercepted by the queue first. In this case, because I’m using Skype I can only hear Skype’s own “ring back jingle”.
When using a “real phone” like my cell phone the ring back tone gets played back just like when any other number is dialed.
Altough I haven’t actually tested sending a FAX message end to end, I tested forwarding to a FAX number and was able to hear the typical FAX noises when I called the queue’s number. I can’t see any reason why this shouldn’t work.
Advantages:
- No License costs
- Can use Service or Toll-Free numbers
- Should be possible to forward calls to a FAX number (when using a CQ)
- Configured forwarding is more obvious because it’s visible in TAC
Disadvantages:
- Only Teams admins can change the forwarding target
Summary
Even though it might not be an obvious solution, using a call queue to permanently forward calls is still a great way to have more control over all your DIDs right inside Teams itself without adding any license costs.