I was on holiday last week with the family, our first time away together as a threesome and it was ace! A well-deserved and much needed break from the world of Skype for Business and customers. In order to ensure that I did not tinker with anything I made a point of choosing a location for our holiday with next to no internet or mobile signal (yes these places do exist even today) and turned off all my lab servers and access to the Skype world. For one week only, I needed to hit the shutdown button. However, no matter how hard you try and distance yourself from “the day job”, it inevitably pops back up in your head, especially when your job is also your hobby and passion. It’s never quite gone, no matter how hard you try. While I was lying in bed one night, trying to sleep I began to think about use cases for Skype for Business. We all know that Skype for Business can send / receive calls, instant messages and media rich content, we know the best practices and the ways in which modalities should be used and to be honest I am getting a little tired of banging the same drum all the time.
Sometimes, we get so blinkered and particular about “what is supported” and what the “best practice” is we forget that actually, Skype for Business can do a lot more than what TechNet says it can. Whilst I am not saying that being in a supported state or following best practices aren’t important (just for clarity – they absolutely are), it’s just sometimes, we can be led easily by what Microsoft say, rather than letting our imagination run and see what we can extract out of the system to make it do what we want. Just because Microsoft have not released a TechNet article on a particular use case, doesn’t mean it’s not supported. Just because no one else has blogged, or done it before doesn’t mean it cannot be done, or is not best practice.
Let’s be honest, Microsoft rely on our ingenious imagination on how Skype for Business can be used to address a particular business case because they simply cannot imagine every business scenario possible. It is up to us to define and blaze the trail for Skype for Business. We are the ones that drive best practice, we are the ones that determine use cases, and we are the ones that Microsoft rely on in order to make Skype for Business a success. How many times have you read a blog post / how to guide from a community member that Microsoft reference on NextHop and now Office Blogs and that becomes their “best practice”?
In my opinion, best practices are born out of our imagination, and that will ultimately lead to Microsoft supporting you! Yes there are some baseline best practices to follow, making sure your servers are sized correctly, making sure your topology is accurate etc, but don’t be put off trying something, just because it’s not been done before, or someone has said they tried it and it didn’t work for them. Remember, just because it didn’t work for them, doesn’t mean it won’t fit your requirement! Don’t be afraid to explore and stretch the boundaries of what the system is designed to do.
To spur you on, here is the use case I came up with lying in bed on holiday.
Public Information Phones. Have you ever used them? Do you know what they are? Those phones located in the corner of a shop or office that you can pick up and press a number from 1 to 9 to help you get the information you are after. When you pick up the phone you receive an automated response that gives you all the information you need for your query. You’ve probably seen and used them in banks, citizen’s advice bureaus, police stations etc. You use them when places are unmanned or exceptionally busy that you do not have the time to wait to speak to a person.
So what if I wanted to create a Skype for Business solution to that scenario. All I need is a phone that can be used to deliver a fully automated information delivery service with minimal input from the user and zero interaction with a company employee. Should be simple right? Well, yes it is!
Breaking this case down I see two elements here that need to addressed to make the solution work
- A basic call routing system
- The ability to play recorded responses to the caller
Both of these exist in Skype for Business and Exchange (on premises and online) they are:
- Exchange Auto Attendant can be the basic call routing system
- The announcement service in Skype for Business can be the response system
But wait, the announcement service is mean for unassigned numbers? Correct, that’s its primary use case. But in my opinion it is a highly underused service that can be used much more effectively and imaginatively.
So my solution to this case: Create an Exchange Auto Attendant that will be used to provide the answering and routing service and then create unassigned number ranges and announcements for each option.
The desired functionality here is that the caller can use the common area phone, dial 0 (zero) and be presented with up to 9 options by the Auto Attendant. Each option will guide them to the information they require by dialling an unassigned number. The announcement is played to the caller and when finished the call is transferred back to the Auto Attendant. Let’s keep in mind that the unassigned number and announcement service was designed primarily for wrong extension dialling to provide a better handling method for users attempting to call another who may have changed number or left the company. Here essentially we are doing the same, we are using an Exchange Auto Attendant in a manner to which it is intended to be used, and we are using the unassigned number and announcement service in a manner to which it also is intended to be used. It’s just, that the business use case has changed nothing more. Therefore, guess what? This most definitely will be supported by Microsoft too because breaking it down, we are not asking the technology to do something it is not designed for we are just asking it to perform a solution to a business case / use. Ultimately, if it works, why the hell not use it!
How do we set this up?
- Create a new dial plan in Exchange (I am using Exchange 2013 SP1), I have called mine PI (do not use spacing). The dial plan type should be SIP URI and the extension digit length I have chosen is 2 (to keep it separate to normal extension). SIP Security should be secured. If you have a voicemail dial plan already, you could create an Auto Attendant within that, but I have chosen a separate one
- You shouldn’t need to modify the UM Mailbox policies or configure the dial plan from the default settings as we are just going to utilise an Auto Attendant.
- Next create an Auto Attendant I have called mine PI-AA1 (note, do not use spaces in your dial plan or AA! Make sure the Auto Attendant is enabled and the Access number set to +0 (assuming you don’t already use 0)
- Under Address book and operator access, untick the “Allow callers to dial users” and “Allow callers to leave voice messages for users” as we don’t want to allow them any dialling rights
- Under Menu Navigation, enable the “Enable business hours menu navigation” option and then we can add in our prompts that will become user options
- Now click the + icon to add our prompts. Enter the prompt you want if you are using text to speech and select the key option that will define the action e.g 1. Then select the Transfer to extension action and enter 10 and press OK
- Repeat step 6 for other options, e.g. Employment Problems, press 2 and transfer to extension 11 for example. Complete for all 9 options or as many as you need
- Save the Auto Attendant and exit the UM settings.
- Next, in Exchange go to Servers and edit your exchange server and select Unified Messaging. Add the PI Dial Plan to both the call router and um service services
- Now run the Exchange UC Integration PowerShell Script in C:\Program Files\Microsoft\Exchange Server\V15\Scripts directory and called ExchUCUtil.ps1
- From Skype for Business run the OCSUMUtil.exe application from C:\Program Files\Common Files\Skype for Business Server 2015\Support directory and load data. Select the Dial Plan PI and click Add. Choose “Use this pilot number from Exchange UM and Select contact type as Auto-Attendant and press OK
Now we need to create our unassigned number ranges and announcements. I find it is quicker to do this in PowerShell than the UI.
Creating the Announcement
New-CsAnnouncement –Identity “ApplicationServer:ls01.hostedhouse.co.uk” –Name “Employment Issues” –Language “en-GB” –TextToSpeechPrompt “If you are experiencing trouble at work whether it is directly from your employer, or from a colleague you have certain rights that can protect you. If you feel you are being bullied then inform your line manager, and or your HR department. If the issue is with your employer we recommend that you contact your union. If you are not a member of a union, or your industry does not have a union, then you can consult a solicitor who will recommend a cause of action based on the severity of the issue. Some cases may lead to industrial tribunal or be settled amicably.” –TargetURI “sip:+email@example.com;user=phone”
Next we need to assign this announcement to an unassigned number range
New-CsUnassignedNumber –Identity “Employment Issues” –NumberRangeStart 11 –NumberRangeEnd 11 –AnnouncementService “ls01.hostedhouse.co.uk” –AnnouncementName “Employment Issues”
- Repeat for all other options
- Now we have the base system in place we now need to create the common area phone and assign it the correct dial plan so it can only be used for this service
- Edit the Global dial plan and add in two normalisation rules. One rule will be to normalise 0 to +0 and the other will be to allow 2 digit extensions
- Now create the common area phone using PowerShellNew-CsCommonAreaPhone –DisplayName “Public Phone 1” –SipAddress “sip:cap-pi-01@:hostedhouse.co.uk” –RegistrarPool “ls01.hostedhouse.co.uk” –OU “OU=users,OU=HH,DC=hostedhouse,DC=co,DC=uk” –LineUri “tel:+500”
- Now set the access PIN for the phone using PowerShellSet-CsClientPIN –identity “sip:firstname.lastname@example.org” –PIN 2001 –Force
- Now test your solution, it should be working nicely
Taking this further, you can choose to upload your own recordings in wma format for both Exchange AA and Announcement service rather than relying on robotic text to speech. In my opinion using a LPE phone for this purpose may be a bit much and a cheap Snom 300 phone will actually do a better job here. I know they are not supported for Lync 2013 or Skype for Business, but they do still work. In fact they would be perfect as you can configure them to auto dial a pre-set number once the handset is picked up thus removing the step the caller has to dial 0 to begin J
To prove this solution I have taken a rather poor quality video that won’t win any awards, but nevertheless shows off the use case nicely
So there we go, an example of how Skype for Business can be used “Outside the Box” whilst breaking no supportability rules along the way. Hope this inspires you to see how Skype for Business can effectively and effortlessly solve some common and bespoke issues businesses face today.
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