A customer messaged me last week and asked me a question regarding number presentation to Skype for Business when users still on their legacy PBX system placed a call to a Skype for Business endpoint. The customer explained to me that when a Skype for Business user called an extension on their legacy PBX system, the caller display name showed the name of the caller. However, when a legacy PBX user called a Skype for Business endpoint, the caller display showed the extension number rather than the name of the caller, therefore not allowing the Skype for Business user to easily identify the caller.
The reason why when a Skype for Business user calls the legacy PBX extension the caller’s name is display is because out of the box, Skype for Business sends both the extension number and the name of the caller in the FROM header in the SIP INVITE to the legacy PBX. For Example:
FROM: “David Williams” <sip:+email@example.com:5068;user=phone>
Using SIP standards, the legacy PBX automatically interprets this and is able to display the name of the caller to the handset.
However, the legacy PBX system appeared to be configured with just extension numbers only. The system had no local directory to associate an extension with a name of the employee who has that extension supplied to them. The result of this was that when the legacy PBX sent the INVITE to Skype for Business the FROM header simply included just the extension number, like
End user experience on a Skype for Business client is:
The question from the customer was “Can Skype for Business lookup the calling number and change it to identify the caller by name?”
The short answer is no, this is not natively possible with just Skype for Business. But perhaps certain supporting infrastructure and environment conditions could help to solve this. I was aware that they had a Sonus SBC 1000 between the legacy PBX system and Skype for Business, but this was downstream of the PSTN. I wondered if potentially we could use the power of the Sonus SBC to perform some modifications to the FROM header within the messages sent between the legacy PBX and Skype for Business and inject the caller’s name somehow.
I was aware that the customer has an up to date Active Directory where user objects where updated with the ipPhone attribute. This matched their legacy PBX extension. I wondered if we could use Sonus’s Active Directory Cache to act as the lookup directory for calling names based on the calling number and then inject the name of the caller so that Skype for Business can present the name of the caller to the user for easy identification.
Sonus’s Active Directory cache is usually used when the SBC is upstream of all internal telephony systems and used to direct inbound calls from the PSTN to the right endpoint based on called number or in Skype for Business’s case if the called number matches the msRTCSIP-Line attribute. I hadn’t really thought about using it for this purpose, but turns out it works just fine
The following steps assumes that the SBC already has the Active Directory Cache configured.
The first thing I had to ensure was that the SBC could query AD and return the ipPhone attribute into it’s local cache. In order to do this go to the Auth and Directory Services / Active Directory / Configuration page and ADD ipPhone (case sensitive) to the list of cache attributes and then press APPLY. Ensure that you have got displayName attribute listed in there too (assumed to already be there)
Then press REFRESH CACHE at the top of the page. Confirm that the attribute is collected in the cache by clicking on the DIAGNOSTICS tab at the top of the page. Click on QUERY AD CACHE tool and then select property to match as telephoneNumber and the value to match an extension number that exists in your Active Directory e.g. 1005. The result should return in the results window
Now go back to SETTINGS and expand the Transformation rules container. Select the transformation rule table that exists for your calls from the legacy PBX system to Skype for Business. Add the following translation rule:
- Input Field Type: Calling Address/Number
- Input Field Value: =ipPhone=
- Output Field Type: Calling Name
- Output Field Value: =displayName=
Once applied, place a test call from the legacy PBX extension to prove the solution works. A trace on LX logger from the SBC shows that the cache has successfully matched the transformation rule and lookup in the AD Cache
Now we can see that the caller’s P-Asserted Identity has been added to the FROM header based on the results from the AD lookup
And this is now used as the FROM address in the INVITE to Skype for Business
From the Skype for Business endpoint we can see the name of the caller in the toast popup
Mark is an Independent Microsoft Teams Consultant with over 15 years experience in Microsoft Technology. Mark is the founder of Commsverse, a dedicated Microsoft Teams conference and former MVP. You can follow him on twitter @UnifiedVale