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.
- 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
Enabling busy on busy on Teams caused call loops, many missed calles shown in the call history in the Teams client.
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.
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.
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.
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.
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.
And also the SBC SIP flow is now fine, no more loops due to BoB and the second caller gets his regularly busy tone.
It’s also an option to remove the reason header instead of changing the Header.Reason.Reason.Cause.
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.
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…
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.
- Contact Center integrations for Microsoft Teams
- Anywhere365 | https://anywhere365.io/direct-routing-contact-center-for-microsoft-teams/
- ComputerTalk | https://www.computer-talk.com/product/enterprise-contact-center/ice-contact-center-for-teams
- Enghouse Interactive | https://enghouseinteractive.co.uk/microsoft/
- Five9 | https://www.five9.com/products/application-integration/uc-integration
- Genesys | https://www.genesys.com/microsoft
- Luware | https://luware.com/en/solutions/
- NICE inContact | https://www.niceincontact.com/microsoft-teams
- Microsoft Teams Call Queues and Auto Attendants for Direct Routing
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.
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…
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.
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.
- Microsoft Teams – Location Based Routing [Microsoft 365 Roadmap item ID 24180]
- Plan for Location-Based Routing in Skype for Business
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.
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).
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.
I stumbled upon a new feature which is under development for Microsoft Teams. Belief it or not but on the official Microsoft 365 (M365) roadmap “Microsoft Teams: Busy on Busy” (short, abbr. BoB) appeared in the list. It’s planned for May 2019.
What’s “Busy on Busy”?
Well, this feature gives a caller a busy ton or sound in case the callee is busy with another call/meeting. So, you as a caller then now “Ah, well the person I’m calling is busy, right now. I’ll try it later, send an IM or mail …”
Do you need this?
It depends. It’s a frequently and common feature in Germany. Most people are used to it. In US and other countries it is not so widely used as far as I’m aware of. There is a little different “telephony mindset”, e.g. “If I cannot get a call because I’m busy the caller can leave a voicemail… or it is forwarded to my delegates/assistant …” or “The caller can try another communication option…” That’s why it depends if you need it or not. In general to have it is a good idea so you can decide if you enable it for all or a few users (depending on how the feature can be configured after it’s development).
Update May 16, 2019 – Enable BoB
You can now enable/disable BoB via Calling Policies within the Teams Admin Center\VoiP\Calling Policies or via PowerShell. For details, please see the linkt below “Microsoft Teams Calling Policies (PowerShell Cmdlet Reference)”.
Either within the global or an user policy.
Conclusion, opinion and summary
I remember, in the past, that the announcement of Busy-on-Busy for Skype for Business Server was a big deal. Many customers in Germany were waiting for this nativ feature for SFB. It was released as part of a SFB Server 2015 cumulative update. The busy-on-busy implementation was not 100% as some customers expected it to be. Compared to their known and legacy busy-on-buy feature by their legacy PBX. However it was adopted partially. And third party app and tools for this previously SFB Server 2015 feature gap vanished. Finally, I’m sure Microsoft Teams Busy on Busy will be adopted by some Team users instead of or even supplementary to voicemail, call forwarding or else depending on the configuration and assignment options for BoB.
Please note that this post and its contents might be subject to change. Especially, because it was added and last modified on April 1, 2019.