Tagged: Calling

Survivable Branch Appliance for Microsoft Teams Direct Routing

This post describes what a SBA for Teams Direct Routing is and how it can increase your telephony reliability and service availability. At the time of writing this post, the SBA is in public preview.

Source: https://pixabay.com/de/illustrations/lernen-hinweis-schule-betreff-3245793/
Source: https://pixabay.com/de/illustrations/lernen-hinweis-schule-betreff-3245793/

What is a SBA?

A survivable branch appliance (SBA) is an on-premise service component to deal with an outage and keep (basic) telephony going for Microsoft Teams Direct Routing. Maybe you’ve already heard about this in the past in regards of Skype for Business Server and Enterprise Voice. A SBA provides voice resiliency towards the case that the sip trunk connection between Microsoft 365 Phone System and a Session Border Controller (SBC) fails. In anticipation of this worst case scenario the SBA keeps you telephony online as long as this affects only the link between SBC, Teams Clients and Microsoft 365 [Teams] Phone System.

The SBA code is provided by Microsoft to SBC vendors which embed it or provide it separately, e.g. for operation on a virtual machine.

Microsoft Teams Direct Routing – SBA Architecture Overview

In case the SIP trunk between SBC and PSTN provider fails, too, there is no more telephony possible. Except you have any re-routing and other high availability configurations in place.

Please note, you should have a holistic high availability concept in place if you heavily rely on these services. To do so you’ll have to start from the bottom up (building’s connections, building’s cabling, building power supply, provider connectivity (options), cloud & IT infrastructure …).

Architecture Overview

The following drawing depicts the SBA as a part of a Teams Direct Routing deployment and it’s capabilities in case of a temporary connection outage between SBC and Microsoft 365 [Teams] Phone System

Microsoft Teams Direct Routing – SBA Capability Overview

Assumptions, requirements and parameters

  • Teams Direct Routing for the (branch) site is configured for media bypass (SBC + Teams Phone System)
  • PSTN (SIP) Trunk is still online and fully operational
  • All (local) clients are still able to connect to the (local) SBC/SBA
  • SBA supports TLS1.2
  • Supported Microsoft Teams DR SBA clients: Windows and MacOS

Known issues and limitations

The most important issues or limitations which are listed on the products documentation are as follows:

  • No reverse number lookup against Azure AD contacts
  • No support for call forwarding settings
  • No support for for dynamic emergency calling (E911)

Conclusion, opinion and summary

At the moment the SBA capabilities are rather limited in particular the supported clients, which are Windows and MacOS only. So, no desk phones or lobby phones which to me might be more relevant because these devices are often used as emergency devices. However, in many cases I’ve seen that there are still analog devices deployed which removes the dependency towards the Microsoft 365 Phone System anyway. Or people have mobile devices with sufficient cell coverage for (emergency) calls.

It’s a start to have a SBA and has the potential to increase resiliency at branch sites for people in the office in front of a PC or Mac. My first thoughts on deploying a SBA – It could be placed where your internet link is very shaky and unreliable but on the second thought – asking – is there is a local PSTN connection (is it SIP and going over the same internet link)? Well, if you have a (single) shaky internet link which is used for the SBC to connect to the Microsoft 365 Phone System as well as the your PSTN SIP Trunk – there is no added value for a SBA because your local branch telephony will fail if your internet link fails.

In my humble opinion it might make sense to deploy a SBA in scenarios where your PSTN connection is not dependent on the same local shaky internet breakout, e.g. PSTN via (old) E1/T1 or other local dedicated PSTN connection (other internet breakout for voice-only).

Based on the above three more thoughts and questions came to my mind:

  1. Is there no way to get a more reliable internet connection to that (branch) site or are backup link via LTE, StarLink/Satelite or else?
  2. What’s the (cumulated) downtime for Microsoft 365 Phone System or Teams over one year impacting your business? … 8, 4, 1 hours/year? [I haven’t found any statistics regarding this.]
  3. Is there a real need for a SBA at that branch site?
    [I mean, if there is no internet, is your branch staff still able that they can work at all?]

Although I haven’t heard or ready anything regarding this, I hope that the SBA will get support for Teams IP phones, too, in the next several months.

Additional resources

Microsoft Teams UX improvements for calling

This post is about a planned change for the Microsoft Teams user experience (UX) in the call section for Teams on Windows and Mac. Microsoft announced in fall 2020 that simplifications in the user experience are in development. In December the announcement could be read in the Microsoft 365 message center with the message ID MC229945. The update says that you’ll have a more compact view in the section for calls which shows contacts, voicemail and calling history on the same page. As of now, the rollout of the change is planned to begin in mid Januar 2021.

Source: Microsoft 365 Admin Center Message Center Message ID MC229945

Conclusion, opinion and summary

This change is really helpful because it will save you time by avoiding several clicks to find or get to what matters most for telephony. I’m looking forward to this, especially because this is a great improvement for the user experience. Users will get the most important information and options in the calling section directly at a glance without the need to find the required information (contact, call history…) in any sub-menu.

Additional resources

Reverse Number Lookup Enhancements in Microsoft Teams Calling

This post is about enhancements in Microsoft Teams Calling regarding the reverse number lookup (RNL). It’s an incredibly important and small feature with high impact on usability for Teams calling capabilities.

In general, RNL resolves a caller’s phone number to contact information (for instance the contact’s display name). E.g. if +49 711 987654321 is calling me and this number is stored in my contacts as Anna it will tell me that she called me in my journal etc.

Microsoft’s 365 roadmap says that the following aspects are improved:

  • Display name in your Activity Feed
  • Display name in your Call History
  • Display name in your Voicemail
Source – Microsoft 365 Roadmap – Feature
Screenshot – Teams Contact
Screenshot – Teams Call History
Screenshot – Teams Voicemail
Screenshot – Teams Activity Feed
Screenshot – Teams Voicemail in Outlook – my status was away

Conclusion, opinion and summary

As far as I could see, it’s already live in my tenant. Still, obviously not the full display name is shown in the activity feed. It looks like it is trimmed to the first word of the display name.

I’m hoping to see the full name there, too, or a changed order, e.g. the last word of the display name (last name, usually). The latter is helpful especially if you receive many calls a day from people outside your organization. For what I can say, here in Germany, it’s more common to talk to someone using his/her last name except you already know the person for a longer period and/or agreed on a more informal form to talk to each other using “Du” instead of “Sie”. That’s why it would be nice to see the full name directly in the activity feed, too, in case you directly call back the caller listed in your activity feed as missed called.

Additional resources

Enable resource account for outbound call in Microsoft Teams Call Queues and Auto Attendants

In this post I describe how you can configure call forwarding to external PSTN phone numbers for a call queue or auto attendant in a Microsoft Teams Direct Routing configuration. Microsoft released the capability to forward phone calls via a Teams Auto Attendant and via a Teams Call Queue to a phone number. Also, the operator can have a (external/PSTN) phone number.

In the past this was not feasible this way, therefore you had to implement a workaround by configuring a “forwarding user” to reach the goal. This is no longer necessary. I’ll show you some screenshots to depict what you’ve got now with Teams Calling and Microsoft 365 Phone System.

Teams Auto Attendant – Operator – External Phone Number Option

Teams Auto Attendant – Operator – External Phone Number Option

Teams Auto Attendant – Call Flow – External Phone Number Option

Teams Auto Attendant – Call Flow – External Phone Number Option

Teams Call Queue – Call Flow – Externa Phone Number Option/s

Within call queues you have two options to forward a call to a phone number. The first option helps to deal with more as the maximum set amount of concurrent calls in a queue. The second option helps to deal with calls waiting in a queue for a certain amount of time.

Teams Call Queue – Call Flow – Externa Phone Number Option/s

What do I have to do to make this work with Teams Direct Routing?

Easy, you have to do two things:

  1. assign a Virtual Phone System User license (!!!) (if not done yet) to the Teams Resource Account (also note the docs.microsoft.com statement saying, “Phone System licenses aren’t supported”, so assigning a E3 + phone system license might not work)
  2. assign an Online Voice Routing Policy to the resource account which is assigned to the call queue or auto attendant [with PowerShell]
  3. Wait for some time (as I was testing this, I configured this in the late afternoon and the next morning it was working as expected, this might be different and I’m not aware of a default duration till it is applied and will work)

I’ll not explain how to get and assign the license, I’ll explain the assignment of the Online Voice Routing Policy because at the time of writing this post, you have to assign the policy by using PowerShell.

Assign an Online Voice Routing Policy to a resource account

#Teams Direct Routing
#Enable resource account for outbound call in Microsoft Teams Call Queues and Auto Attendants
#Example code

Import-Module SkypeOnlineConnector

#Login
if ($cred -eq $null) {$cred = Get-Credential}
#W/O MFA: 
$sfbosession = New-CsOnlineSession -Credential $cred
#WITH MFA: 
#$SFBOsession= New-CsOnlineSession ADMIN-UPN
#Import module
Import-PSSession -Session $sfbosession -AllowClobber

#List Online Voice Routing Policies
Get-CsOnlineVoiceRoutingPolicy 

#Assign Online Voice Routing Policy to Microsoft Teams Resource Account for Teams Direct Routing
$user = "teams-resource-account@domain.tld"
$userovrp = "teams-direct-routing-online-voice-routing-policy"


Grant-CsOnlineVoiceRoutingPolicy -Identity $user -PolicyName $userovrp
#Get a cup or some more cups of coffee and wait!!!
#Check assignment 
Get-CsOnlineUser $user | select OnlineVoiceRoutingPolicy

<#Please note
although it's set quickly it can take quite some time till it is really applied, you can see this on the SBC SIP traces which still points to Teams phone system which is rejecting the referred call with a "403 Forbidden", it detail it states some like that there is no viable outbound route.
#>

Remove-PsSession $sfbosession

Conclusion, opinion and summary

I’ve been waiting for this for some time by now, and now that the feature is available, without creating a workaround, I like it. Especially, because you can also do some automation by using PowerShell for your cloud hotlines based on Microsoft Teams call queues and auto attendants.

Additional resources

Call loops after enabling busy on busy for Microsoft Teams Calling with Audiocodes Mediant

In this post I describe how you can fix a call loop and cause code issue with busy on busy enabled in Microsoft Teams Direct Routing in conjunction with a Audiocodes Mediant Session Border Controller. In one of my recent Teams Direct Routing deployments I came across an issue as soon as I enabled Busy on Busy in the Microsoft Teams Admin Center, as described in one of my previous blog posts, here.

Scenario

  • Microsoft Teams Direct Routing
  • Audiocodes Mediant VE Session Border Controller (SBC) V 7.20A.256.721
  • PSTN SIP Trunk Provider
  • Microsoft Teams Busy on busy (BoB) enabled for the user/s

Issue

Enabling busy on busy on Teams caused call loops, many missed calles shown in the call history in the Teams client.

Screenshot – Teams Call History for a user enabled for BoB

Usual calls incoming, outgoing, call forwarding etc. worked fine but after assignment of the policy including the enabled busy on busy the caller caused a “call loop” and many missed calls in the call history while the callee was still on a call with someone else.

Screenshot – SysLog with BoB enabled

Actually the above SIP flow looks ok but why on earth is the second caller’s number showing up that often? That’s the loop we get and the many missed calls as long as the called person is still busy on another call.

Solution

Usually, 486 Busy Here should be ok towards the PSTN SIP Trunk provider because this says “busy”. However, it did not really say “busy” or provide the “busy” tone to the second caller.

After some research I came across an helpful blog post from Luca Vitali describing a similar issue with the difference that he’s seeing this in a TDR deployment with a TDM PSTN trunk and a different cause code sent by Microsoft 365 Phone System.

Screenshot – SysLog – Reason Header Analysis – Cause 34 is sent in a 486 Busy Here

So, I checked the SIP reason header in more detail for the “486 Busy Here”. Viewing the SIP message logs by using the SysLog Viewer I found REASON: Q.850;cause=34;text=”171015b7-8b51-4fca-b9c0-d5f052823334;User is busy and currently active on another call.” There I noticed “cause=34” which means “no circuit available”. Is this not ok? That could be the possible issue because Microsoft 365 Phone System sends the above in a BoB scenario and probably the PSTN SIP Trunk provider looks not only on the “486 Busy Here” but also in the details of the Reason including the Q.850 cause codes which does not include the right code for “busy”.

So, just set up a message manipulation rule on the Audiocodes SBC to change the cause in the SIP reason line.

Screenshot – Audiocodes SBC \ Setup \ Signaling & Media \ Message Manipulation \ Message Manipulations

Example of the message manipulation rule to change the Header Reason Cause Code:

[ MessageManipulations ]

FORMAT Index = ManipulationName, ManSetID, MessageType, Condition, ActionSubject, ActionType, ActionValue, RowRole;
MessageManipulations 2 = "MM-Teams-486BusyHere-34-17", 1, "Any", "Header.Reason.Reason.Cause == '34'", "Header.Reason.Reason.Cause", 2, "'17'", 0;

[ \MessageManipulations ]

This message manipulation rule is based on the message manipulation set id assigned to the IP Group for Teams as an inbound message manipulation.

Please note that the above is just provided as-is and might require adjustments for your deployment. Also, the above manipulation of the cause code might be adjusted if Microsoft Phone System was changed and it sends out another cause code in the Reason Header. I thought of using “…!= ’17′” to always change the cause code in the Reason Header but that’s no good idea because it can cause other issues.

After the message manipulation was implemented I successfully re-tried.

Screenshot – Microsoft Teams Call History (after the msg. manipulation was live)

And also the SBC SIP flow is now fine, no more loops due to BoB and the second caller gets his regularly busy tone.

Screenshot – SIP Message Flow – 486 Busy Here adjusted Q.850 cause code

UPDATE 01.08.2020

It’s also an option to remove the reason header instead of changing the Header.Reason.Reason.Cause.

Additional resources

Safe transfer with Microsoft Teams Calling

In this post I highlight a Microsoft Teams Calling feature to safely transfer calls. Microsoft seems to add safe transfer for calls by Teams Users soon, according to the Microsoft 365 roadmap.

What’s safe transfer with Microsoft Teams?

As the roadmap item says it enables Team Users to get a call back if the Teams User transferred it to another Teams or Skype for Business user which does not answer.

That this works it is required that the user who transfers the call is a Microsoft Teams user and the target must be a Microsoft Teams or Skype for Business user in the same or federated tenant.

Additional resources

Microsoft Teams Contact Center Integration

This post is about the Contact Center Integration in Microsoft Teams. If you deploy Microsoft Teams calling capabilities to enable your workforce to use Microsoft Teams you might also be interested in the Contact Center integration. In the past I wrote an article about Microsoft Teams Call Queues and Auto Attendants for Direct Routing which describes Teams calling capabilities in regards of automatic call distribution (ACD) and/or interactive voice response (IVRs). Depending on your needs this was and is maybe not yet sufficient for your agents because you have many agents answering loads of incoming calls, transfer calls to maybe other departments/agents and respond to these incoming requests, complaints, remote advisories, incidents or what have you. Maybe 24/7…

Source: https://pixabay.com/de/illustrations/lernen-hinweis-schule-betreff-3245793/
Source: https://pixabay.com/de/illustrations/lernen-hinweis-schule-betreff-3245793/

So, there was a missing piece to bringt Microsoft Teams and more advanced Contact Center solutions together. Until lately. APIs were enhanced and improved which enabled Contact Center solution and service providers to build and use the available integrations based on

  • Direct Routing Connectivity,
  • Microsoft Graph Cloud Communication APIs,
  • Teams platform and extensibility and/or
  • Teams SDKs.

By this Microsoft enables for three integration “depths”:

  • Connect | based on Direct Routing
  • Connect and Extend | mixture of Direct Routing + Graph APIs + Teams apps platform
  • Extend and Power |embedding Teams SDKs into Contact Center App/Solution/Service for native Teams interactions (which works with Direct Routing as well as calling plans)

Now that you want to start to integrate your existing Contact Center solution in Microsoft Teams, note that this works only for certified Contact Center solutions and services, which are listed in the Connected Contact Center for Microsoft Teams Certification Program. Today, there are already very well-known providers offering Microsoft Teams integration (see additional resources).

Conclusion, opinion and summary

This is another step forward to bring in more voice and calling capabilities into Microsoft Teams as it can become the primary client app for Contact Center agents as well. I assume that more is about to come and enable companies to leverage more and more of Microsoft Teams especially enterprises with large contact centers which might still be on Skype for Business Server with Enterprise Voice for these workloads. In the past this was mostly due to the SFB UCMA integration which was often used in these voice deployments and in Teams this integration option was missing. Now, enterprise still running SFB Server and having dependencies in regards of third-party Contact Center solutions based on UCMA might probably soon get rid of SFB Server onprem, migrate (the until now left behind Contact Center agents) to Microsoft Teams and decommission SFB Server infrastructure.

Additional resources

SIP Trunk Provider Evaluation 2019 by the Eastern Management Group

In this post I like to highlight a SIP Trunk Provider Evaluation by the Eastern Management Group. I came across a nice article regarding the evaluation of (some) SIP Trunk Providers which was carried out by the Eastern Management Group.

In this study 29 SIP Trunk Providers were evaluated based on a survey. More than 3.000 IT managers were asked. As far as I could read the focus resides primarily on SIP Trunk Providers in the US and such with global reach.

Source: https://pixabay.com/de/vectors/statistik-umfrage-webseite-vorlage-1606951/

Conclusion, opinion and summary

In case your are about to plan your migration from ISDN to ALL-IP/SIP Trunks or you are considering to consolidate your SIP Trunk connectivity this study might provide you some insights and metrics to get to a decision on which SIP Trunk (Provider) to choose.

However, 29 SIP Trunk Providers are just a few. Depending on where you need a SIP Trunk you might need to research which are available at a certain world region, country and local area. As always on the market there are small and large SIP Trunk providers offering a different feature set for the SIP Trunk Services.

I recommend to take a closer look to what’s offered in detail and what SIP Trunk “architectures” are serviced, e.g. dedicated (physical) link vs. logical link (via existing Internet/MPLS connectivity), encrypted traffic support, clip no screening support, SBC support/compatibility (are there recommended SBCs/IP-PBX by the respective provider?), call authentication/authorization requirements…

Additional resources

Location Based Routing (LBR) in Microsoft Teams

This post is about LBR – a planned feature – for calling or telephony with Microsoft Teams which might be released and available in Q4 2019.

Location Based Routing (LBR) allows basically to route and control voice calls depending on the location. In my opinion, this is very useful for deployments with roaming users especially regarding emergency calls or call restrictions.

Source: https://pixabay.com/de/illustrations/netzwerk-erde-blockchain-globus-3537401/

Why LBR?

There are some reasons to use LBR for managing and controlling your voice call flows:

  • Egress calls: Enforce outgoing calls to egress via local PSTN gateway, prevent PSTN toll bypass
  • Ingress calls: Prevent incoming PSTN calls via a NON-local PSTN gateway
  • Undefined location: Prevent PSTN calls to and from users in undefined locations

Let me describe a small (fictive) scenario where LBR could help:
Erik works for a special machinery engineering company.
Still, the company has decentralized PSTN connectivity.
Each location and site has a dedicated PSTN link and SBC.
Erik is a Teams user including calling capabilities.
He’s located and “homed” in Stuttgart, Germany.

Erik travels to another company site.
Erik needs to place an (emergency) call while being in another office in Berlin, Germany.


By default this (emergency) call would be routed via Stuttgart to the local emergency service answering point. However, that would be a very bad routing and in case of an emergency were every second counts this is not acceptable.It would be ok if Erik was really in Stuttgart and not Berlin.

By using LBR this (emergency) call would be routed locally and breakout to PSTN via the SBC in Berlin and land at the emergency service answering point in Berlin instead of Stuttgart. If Erik would have to call for emergency in the company site in Hamburg, Germany the call would be routed locally and breakout to PSTN via the SBC in Hamburg as well.

How does LBR work?

Usually you’ll have to define and save some of your network parameters (IP address ranges per site …) to define sites in the phone system. Afterwards you’ll have to define (LBR) voice routing for each site (e.g. LBR policies, voice route/s, policies …) so that calls are routed according to the location requirements and its configuration.

Conclusion, opinion and summary

This is subject to change or might be implemented different to what’s described above. This is just my personal assumption how it might look like. I’ve just assumed that it might be like that because of the approach which can be found in Skype for Business Server.

Additional resources

Manage Group Calling and Call Delegation in Microsoft Teams (as Admin)

In this post I like to describe how you can manage group calling and call delegation in Microsoft Teams as admin.

First of all, I’d like to explain what these two features can do for you or your users:

Group call pickup allows a Teams (phone system) user to select other Teams users to answer his/her call. E.g. Erik Doe get’s a call on his Teams phone number and his other co-workers which he added previously to his group pickup get a notification about the incoming call and can answer it instead.

Call delegation allows to configure delegation for your telephony, similar to what you might know for mail delegation. I.e. this enables you for typical and lightweight boss/admin or manager/assistant or chef/sek (de) capabilities. E.g. Erik Doe can add one ore more other Team (phone system) user as delegates so that Erik Doe does not need to deal with all calls himself.

Configure group call pickup as an user

Users can configure this on the Teams settings \ call settings page.

Configure group call pickup as an admin

In the Teams Admin Center you can configure group call pickup per user. You can add/remove users to a users group call pickup, you can set the notification mode (mute, ring, banner) and you can configure the order and when group call pickup to listed users in a users group kicks in.

Teams Admin Center \ Users \ <user> \ Voice \ Group call pickup

Configure call delegation (boss/admin, manager/assistant, chef/sek) as an user

Users can configure this on the Teams settings \ general \ delegation settings page.

Configure call delegation (boss/admin, manager/assistant, chef/sek) as an admin

Also in the Teams Admin Center you can configure call delegation per user. You can add/remove delegates, you can define what permissions a delegate gets and if a delegate can change this setting (or need to call you to change it via Teams Admin Center).

Teams Admin Center \ Users \ <user> \ Voice \ Call delegation
Teams Admin Center \ Users \ \ Voice \ Call delegation \ permissions

Conclusion, opinion and summary

Compare to Skype for Business (Server) this is a very nice administration capability because it’s easy to access and manage. In the past with Skype for Business (Server) you had to use Sefautil, related Sefautil tools or even third party software for an more comfortable way of administrate user call settings. It’s very helpful from time to time to have a ability as admin to change these two settings for an user which might be unable to do this.

Managing Teams Call delegation and group call pickup via the Teams Admin Center works like a charm in my opinion.

Additional Resources