Microsoft Lync and Skype for Business have a rich set of .NET APIs which make it easy to extend the platform and integrate it with other applications. This blog helps explain how to use those APIs.

Watching for conference recording in UCMA

Posted: June 21st, 2013 | Author: | Filed under: UCMA 3.0, UCMA 4.0 | Tags: , | No Comments »

In the Lync client, if you are participating in a conference and someone starts recording, you get notified: a red dot appears near the bottom of the window, and a message pops up letting you know that recording has started. How do you get the same kind of notification in a UCMA application?

Continue reading “Watching for conference recording in UCMA” »

Splitting incoming calls between the signaling and collaboration layers

Posted: June 7th, 2013 | Author: | Filed under: UCMA 4.0 | Tags: | No Comments »

If you want your UCMA application to handle some (but not all) incoming messages at the SIP level, it’s possible to split requests between the “signaling” and “collaboration” layers of UCMA. You can do this by using the InnerEndpoint property on your UserEndpoint or ApplicationEndpoint object. This property gives you access to an instance of RealTimeEndpoint, the alter ego of UserEndpoint or ApplicationEndpoint from the signaling layer. By subscribing to an event on this RealTimeEndpoint object, you can give your application an opportunity to handle calls on the signaling layer. Continue reading “Splitting incoming calls between the signaling and collaboration layers” »

Locating other application servers in a UCMA application

Posted: May 29th, 2013 | Author: | Filed under: UCMA 3.0, UCMA 4.0 | Tags: | No Comments »

This post explains how you can access the Lync Server topology from within your UCMA application to find instances of other applications in the environment. In more complex UCMA applications that have multiple components spread across different servers, this is sometimes necessary in order for the various components to coordinate handling of calls, users, conferences, or other resources. By going directly to the topology, you avoid having to stick this information in a database table or configuration file where it can easily get out of date.

Continue reading “Locating other application servers in a UCMA application” »

Accessing the inner endpoint

Posted: May 23rd, 2013 | Author: | Filed under: UCMA 4.0 | Tags: | 1 Comment »

Although the title sounds very philosophical, I’m not going to talk in this post about an inward journey of discovery for your application endpoints. Instead, I want to talk about a way to access some parts of the signaling layer – the lower-level part of UCMA that allows you to work directly with SIP messages – from the collaboration layer, where most UCMA development takes place. Continue reading “Accessing the inner endpoint” »

Presentation tomorrow for the Metro Toronto .NET Users Group

Posted: May 13th, 2013 | Author: | Filed under: Lync Development | Tags: , , , | No Comments »

For those of you in the Toronto area, I’ll be presenting tomorrow at the Metro Toronto .NET Users Group on building communication applications with the Lync APIs. It’ll be a broad overview of the client-side, middle-tier, and server-side APIs and what you can do with each of them. I’ll talk for a bit about each API and then show some sample code.

Details are at the following link:

Integrating with third-party SIP endpoints using static routes

Posted: May 10th, 2013 | Author: | Filed under: UCMA 3.0, UCMA 4.0 | Tags: , | No Comments »

One of the topics I get the most questions about is how to get UCMA applications to communicate with non-Lync SIP endpoints. Sometimes these UCMA applications are standalone, meaning they don’t register with Lync Server at all and answer calls directly from a SIP trunk, IP-PBX, or some other system. In other cases, UCMA applications that work with Lync Server also need to communicate with third-party SIP endpoints at the same time, possibly to bridge calls between Lync and another system or integrate Lync calls with functionality provided by another SIP-based platform. Continue reading “Integrating with third-party SIP endpoints using static routes” »

Skype connectivity and Lync applications

Posted: April 29th, 2013 | Author: | Filed under: Lync Development | Tags: | 1 Comment »

Earlier this year, at the Lync Conference, Microsoft announced (and demonstrated) the new connectivity between Lync and Skype, to be fully operational in June of this year. Skype and Lync users will be able to see one another’s presence, and IM and call one another. Video calling between Lync and Skype users will follow sometime later. There’s been a lot of interest in Skype connectivity, along with some questions about what the applications will be. In my mind, a big part of the value of Skype connectivity to Lync lies in the potential for opening up Lync applications – IVR systems, auto-attendants, contact centers, and the like – to the public via the Skype network. Continue reading “Skype connectivity and Lync applications” »

UCMA application unexpectedly answering user’s calls

Posted: March 14th, 2013 | Author: | Filed under: UCMA 3.0, UCMA 4.0 | Tags: , , , , , | 3 Comments »

This was an interesting scenario that had me completely confused at first. Audio calls and instant messages to real Lync users were mysteriously being answered by a totally unrelated UCMA application, without ever appearing in the users’ Lync clients, so you would try to call or IM someone and unexpectedly get a generic IVR menu.

After puzzling over this weird behavior for a while, I figured out that there are some interesting side effects you can run into if you use UserEndpoints and a default routing endpoint in the same UCMA application – specifically, within the same collaboration platform. Continue reading “UCMA application unexpectedly answering user’s calls” »

Presentation on Lync Conferencing at Toronto Lync User Group

Posted: March 11th, 2013 | Author: | Filed under: Lync Development | No Comments »

For anyone in the Toronto area, I’ll be giving a presentation on Lync conferencing tomorrow at 5:30 for the Toronto Lync User Group. The presentation will start with an overview of Lync conferencing functionality, and then delve into how conferencing works on the back end, how to troubleshoot issues, and how it can be extended.

Details are available here.

Unified Communications Web API (UCWA)

Posted: March 4th, 2013 | Author: | Filed under: UCWA | No Comments »

As of the recent cumulative update for Lync Server 2013, it is now possible to use the Unified Communications Web API, a new API that allows you to embed Lync functionality in websites.

There’s an introductory demo of UCWA plus some developer resources at and there is also a UCWA-specific forum on the MSDN forums.

My colleague Shelby Hagman has some more details in this post.