Pages Menu

Posted by on Apr 9, 2015 in Development, Skype for Business® (Lync®), Videos | 2 comments

Skype for Business – A Developer’s Guide : Part 1 – Introduction

I’ve put together a series of 4 short videos, aimed at developers who are coming to Skype for Business development for the first time and want to know what’s possible. The videos show some of what you can do with some of the APIs and SDKs Microsoft make available with Skype for Business.

In this video I cover an introduction to Skype for Business, brief history of Skype for Business, screenshots of client and (very) quick run-down of features, different APIs/SDKs and where you might use them.


Full Transcript:

Hello. My name’s Tom Morgan. I write about Skype for Business development on my blog,
I’ve put together a short 4-part video series, designed for developers who are just getting started in Skype for Business development, or are curious about what’s possible.
There are 4 videos in the series. In this first video I want to introduce you to Skype for Business development by covering some of the history which led us to this point, and then quickly show you some screenshots of what Skype for Business looks like today. This won’t be a detailed tutorial of how to use Skype for Business – but if you’ve not seen it before it should show you what’s possible. After that, I’ll explain the different tools which Microsoft have for Skype for Business developers and when you might use them.
In the remaining three videos I’m going to select 3 of those tools, and in each video show you an example of where you might use it to solve a specific problem. I’ll be showing you actual code in Visual Studio so that you can get a feel for what the different APIs and SDKs can do. All the code in those videos will be available on GitHub as well, so you can study them later at your leisure.
Right, let’s get started. So, some of you will be familiar with Skype for Business, some of you will have only heard the name, and some of you may recognise the name of its predecessor, Microsoft Lync.
Everyone has heard of Skype, right? We used to describe Lync as “it’s like Skype, but for businesses”. It’s a good mind-set to start from but there is lots in Lync that’s not in Skype. Then last year, Microsoft announced that the next version of Lync was going to be called Skype for Business. This signalled the start of a much closer integration between the two.
To really understand why I find Skype for Business exciting as a developer, we need to go back a few years and see decisions which have led to today.
In 2001, I was 19. The iPod and Wikipedia were launched. The first Harry Potter movie was released, and we all started using Windows XP. I know, it’s doesn’t feel like 14 years ago does it?! The Telephone API (TAPI) and CTI (computer telephone integration) had been around for a few years, and Microsoft were starting to thinking about how to get into the telephony world.
There was a team at Microsoft assigned to this task, and the specific problem they were looking at is this: People would be sitting at their computers working, then the phone would ring, and they would swivel away from their computers to answer their phone. How could Microsoft bring those worlds together?
The team had semi-regular reviews with Bill Gates, and at one of these meetings it was clear that he didn’t like any of the proposal Microsoft were discussing internally, which were all based around copying existing PBX solutions.
He kept asking: “What is our strategy?” Nobody had an answer, so he kept asking, getting more and more animated. “What is our strategy?”
Eventually, he answered own question: “Our strategy is software”
Apparently, someone then asked him what the strategy was in 5 years times, and his answer was “more software”!
The key point is this: Voice over IP by itself is not enough. The goal is to make real time communications a feature that can be consumed in any type of software.
Now, that was when Windows had a 90% share of the desktop market and things are very different now, but the key goal remains: Microsoft wants to make every application a communications endpoint.
And that is why this area is so exciting: because in order for it to success it requires that developers are able to add communications into their software, and that drives them to produce a good range of APIs and SDKs for their communication solutions. All this is possible because they have a software-only solution, which can run on standard Windows servers without requiring special hardware.
That decision in 2001 led to Live Communications Server in 2003, Office Communications Server in 2007, Lync in 2010 and 2013, and now Skype for Business in 2015.
Here are some screenshots of what the Skype for Business client looks like. This isn’t a tutorial on how to use Skype for Business, but if you’ve not seen it before this should bring you up to speed with what the product does so that you can understand the tools better.
The main Lync window is shown on left. Contacts are based around Active Directory, and each contact has a presence icon associated with it, such as Available or Busy. This is similar to Skype, but it’s much more useful, and I think this is a key part of what makes Skype for Business useful for developers. Users presence is updated automatically: if I lock my computer my status will change to inactive, if I take a phone call it will change to busy, if I have a meeting (it can look at my Exchange profile) then it will change my status to reflect this. Honestly, I rarely need to change my presence, it keeps itself up to date. That’s important, because as a developer it means that you can rely on the presence information and write software that uses it.
Communications is achieved in a variety of different ways, which are called modalities. Examples are Instant Messaging, Voice, Video, Desktop Sharing, File transfer. These happen within a container, known as a conversation. So, a conversation (which can be between 2 or more people) will contain one or more modalities at any one time.
Skype for Business is designed to replace your existing phone system with a fully Voice over IP integrated solution. At work, I have a “normal” phone number, but it routes through to Lync. I can make normal outgoing calls with it – somewhere in a data centre there’s a server which connects to the PSTN network to make that possible. What it means is that wherever my laptop is, that’s where my phone number is to. This is a mixed blessing!
Of course, it’s not just 2-way calls which are supported, but conferences as well. You can invite people who don’t have Skype for Business and they can join via a website. It’s also possible to link together Skype for Business users across different companies in a process known as federation to enable cross-company collaboration.
The conference functionality lets you share your desktop with many people, and present and collaborate on documents. This part of Skype for Business is similar to WebEx or other equivalents.
Skype for Business is supported on many different devices, including all the major mobile platforms. Some people prefer to continue using desk-phones, and there are certified Skype for Business devices for those people. There is also a range of different conferencing hardware, from small speakerphones for impromptu meetings, to dedicated permanent conference room installations.
So, now you have an idea of what Skype for Business can do “out of the box”. Let’s look at what tools are available for developers.
The 3 headings in blue are the ones which we’re going to cover in the next 3 sessions. I’ve chosen those three because I think they’re the most interesting and offer you the greatest potential for creating awesome software.
For existing Silverlight and WPF applications Microsoft have made available a set of Skype for Business controls. These are the simplest way of integrating with Skype for Business – simply drop in controls anywhere you reference a user to show presence information, click to call or send a message. All of the main parts of the Skype for Business client has been provided as a control so you can add functionality such as contact search to your application easily.
Conversation Window Extensions are a way to extend the basic Skype for Business client. Within a conversation you can open an embedded webpage to display content. This allows you to offer contextual information to users based on the conversation they’re having. For instance, if you were discussing a particular product then it would be useful to be able to open an extension window to display information about that product, recent sales figures and forecasts and so on. This gives more context to your conversation and makes it more useful. Another example of a Conversation Window Extension is the Information Dashboard. I use this when talking to remote colleagues because it quickly shows me their local time zone, weather and news meaning I always know how to break the ice in a new conversation. Like the Silverlight and WPF controls, these Extensions require the Lync client be installed and running on the user’s machine to work.
The Client SDK is designed to allow you to automate functions of the Skype for Business client. Anything the client can do, you can automate with this SDK. This allows you to write client-side software that can use communication information. A popular use case is reacting to incoming calls by looking up the caller number against a database and displaying useful information about the caller, their account, purchase history etc. Again, the client needs to be installed and running to use this SDK.
UI Suppression Mode is a special way of running the Client SDK. The Skype for Business client will keep running, but it will be invisible and all user interaction must occur through your application. This is designed for full-screen applications for kiosks and allows you to limit access to specific functions – such as only calling a specific number of people, for instance.
The Server SDK is a back-end messaging SDK. Under the hood, Skype for Business uses the Session Initiation Protocol (or SIP) to send messages. The Server SDK lets you suck from the firehose of messages, and then selectively block or redirect them. This is good for company-wide applications such as ethical walls where you want to impose restrictions on communication between individuals.
UCWA is the Web API for Skype for Business – the Unified Communications Web API. It allows you to communicate with Skye for Business using just HTTP request and response messages. Although this gives you unparalleled freedom to implement this on just about any platform you can think of, in practice it’s quite complicated to interface with Skype for Business in this way. For that reason, UCWA also comes with a set of JavaScript helper libraries so that you can add UCWA code to webpages. UCWA is limited to Instant Message and Presence information only, there is no way to use UCWA to make or receive voice or video calls.
That brings up to UCMA, which I think is the most exciting opportunity for developers. UCMA is the Unified Communications Managed API and is a .NET library for writing code which interacts with Skype for Business. Using UCMA you can write applications which can have their own contact endpoints in user’s contact lists, or can impersonate other users and perform actions on their behalf. It’s a very powerful API for writing Skype for Business enabled applications.
At the bottom of this list is the Skype Web SDK. This isn’t released yet but is expected to come with the release of Skype for Business. It’s a RESTful wrapper API around UCWA. This will make UCWA much easier to use, which should increase its adoption. Crucially however, this new API will have support for voice and video, meaning that you will be able to write webpages which support video calling to Skype for Business clients.
That’s a brief summary of all that’s available to developers who want to work with Skype for Business. In the next video I’m going to concentrate on the Client SDK and show you a sample project, complete with code.
Don’t forget that my blog has lots of information for Skype for Web developers. You can access it at Or you can follow me on Twitter at @tomorgan. Thanks for watching!


Written by Tom Morgan

Tom is a Microsoft Teams Platform developer and Microsoft MVP who has been blogging for over a decade. Find out more.
Buy the book: Building and Developing Apps & Bots for Microsoft Teams. Now available to purchase online with free updates.


  1. Hi Tom, I saw you present at UC day re the APIs for Skype for business – very impressive but it got me thinking if I could use my Raspberry Pi to create a presence indicator for Skype4B for my home office. Turns out this can be done for Skype easily but guess it needs some modification to the code to get this working for the Skype for Business client rather than the skype client.

    Are you able to offer any advice as to what I would need to change to get this working?



  2. Hi,

    I want to integrate UCWA into a node js applicatipn.can you please provide soem working sample?


Post a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.