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.

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” »

Multi-part SDP and non-Lync endpoints

Posted: May 7th, 2013 | Author: | Filed under: MSPL | Tags: , , , , | 1 Comment »

Lync endpoints, including UCMA applications, are capable of communicating directly with non-Lync SIP endpoints under certain circumstances, without going through the Mediation Server. This can be advantageous for a few reasons. For one, the Mediation Server removes non-standard SIP headers when passing along messages, so any information you try to include in custom SIP headers when connecting to an endpoint through the Mediation Server will be lost. Also, you may need to communicate with other internal SIP systems — a voice mail system, for example — in an environment where the Mediation Server is not in use. Continue reading “Multi-part SDP and non-Lync endpoints” »

Lync Server SDK, 2010 vs. 2013

Posted: May 3rd, 2013 | Author: | Filed under: MSPL | Tags: , , | 3 Comments »

In getting your Lync Server 2010 applications working and tested against Lync Server 2013, you might occasionally be tempted to cut corners. You might look for ways to avoid supporting multiple code bases, one for Lync Server 2010 and another for Lync Server 2013. Specifically, it might occur to you that, since the Lync Server SDK has barely changed at all from the 2010 to the 2013 version, maybe you can just run the existing version of your Lync Server SDK application, compiled against the 2010 version of the ServerAgent DLL, on Lync Server 2013 Front End Servers. After all, UCMA 3.0 applications can register against Lync Server 2013 Front End Servers, and there are only a handful of additions to the SDK in 2013, which you may not even need anyway. It’s worth a try, right? Continue reading “Lync Server SDK, 2010 vs. 2013” »

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.

Lync Conference next week

Posted: February 16th, 2013 | Author: | Filed under: Lync Development | Tags: | 1 Comment »

I’m very excited to be attending the first Lync Conference next week in San Diego. It looks like it will be a great event, with so many people who are interested in Lync collected in one place.

On Thursday morning, I’ll be co-presenting a session along with Albert Kooiman called “Be on the cutting edge in customer care with Lync and Skype.” We’ll be showing some demos of innovative ways to use Lync and Skype to deliver better customer care experiences.

I’ll be at the conference all week, and as always I’m happy to chat about Lync development or help with Lync API questions. If you’ll be at the conference and want to meet, feel free to send me an email, comment on this post, or look for me at the Clarity Consulting booth in the exhibit hall.

Conference deactivation and UCMA trusted participants

Posted: February 7th, 2013 | Author: | Filed under: Conferencing, UCMA 3.0, UCMA 4.0 | Tags: , , , , , | 1 Comment »

UCMA allows you to join a Lync conference as a so-called “trusted participant,” which has several interesting effects. First, it hides the participant in the conference roster, so that participants can’t see that your application is joined to the conference. Second, it allows your application to perform a variety of privileged operations like changing how audio is routed within the conference. If your application keeps conferences around for a while with trusted participants connected, you may run into a situation where conferences get unexpectedly deactivated by Lync Server. This can lead to confusing state changes, or even cause external participants like PSTN callers to be ejected. Continue reading “Conference deactivation and UCMA trusted participants” »