Tagged: Calling

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

Busy on busy in Microsoft Teams

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.

Microsoft Teams: Busy on Busy (Source: https://www.microsoft.com/de-de/microsoft-365/roadmap?filters=&searchterms=49990)

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.

Screenshot – Custom Calling policy for Busy on Busy (BoB)
Screenshot – Assignment of the Custom Calling policy to a user

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.

Additional Resources