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.

Third-party manual audio routes: not possible

Posted: January 3rd, 2013 | Author: | Filed under: UCMA 3.0, UCMA 4.0 | Tags: , | 2 Comments »

A while ago, in a post about how “manual audio routes” work behind the scenes, I mentioned I was planning to see if it was possible to set manual audio routes for endpoints other than the “local” endpoint for the call, by sending INFO messages manually to the audio/video MCU. In other words, can I join a conference from my UCMA application as a trusted participant, and then send manually constructed INFO messages to create a manual audio route between two other participants in the conference? Continue reading “Third-party manual audio routes: not possible” »


Prevent Lync calls from going to voice mail

Posted: December 28th, 2012 | Author: | Filed under: Lync Development, UCMA 3.0, UCMA 4.0 | Tags: , , , , , , , | 1 Comment »

There are some instances where a call that is sent to a Lync user really shouldn’t be going to voice mail, or to the user’s cell phone, or anywhere like that. There’s nothing that screams “good customer service” to an agitated customer like being dropped into John Smith’s cell phone voice mail (“Hi, this is John. Leave a message”) after calling the tech support line. Response Group calls seem to magically ward off UM voice mail and call forwarding, and this has led to some questions: if Response Groups can do it, why can’t we do it in UCMA applications? Actually, you can. Continue reading “Prevent Lync calls from going to voice mail” »


RemotePresenceView and connectivity failures

Posted: December 19th, 2012 | Author: | Filed under: UCMA 3.0, UCMA 4.0 | Tags: , , , | No Comments »

Recently I’ve been doing some investigating on how presence subscriptions from UCMA applications are affected by losses of network connectivity. In some applications, having up to date presence information is critical to the proper functioning of the application, and it is important to be sure that the application can discover and react to interruptions to its notifications of presence updates. Various kinds of network connectivity disruptions can interfere with the delivery of presence notifications: Continue reading “RemotePresenceView and connectivity failures” »


UCMA 4.0 Async Extension Methods

Posted: October 26th, 2012 | Author: | Filed under: UCMA 4.0 | Tags: , , , , , , , | 9 Comments »

To make it easier for developers to use the new multithreading techniques from .NET 4.5 in UCMA 4.0 applications, I’ve put together a set of extension methods that turn pairs of Begin/End methods (such as BeginEstablish/EndEstablish) into Task objects that can be used with the awaitkeyword.

The collection of extension methods is available on CodePlex. Let me know if you have questions or suggestions.


UCMA 3.0 and Lync Server 2013

Posted: October 16th, 2012 | Author: | Filed under: Lync Development, UCMA 3.0, UCMA 4.0 | Tags: , , , , | 3 Comments »

With the Lync Server 2013 Preview available, you may be starting to give some serious thought to upgrade paths from Lync Server 2010. You may be getting questions from eager customers. What will happen to UCMA 3.0 applications when you move to Lync Server 2013? This post outlines three options to consider: running your application in a 2010/2013 coexistence environment, running your application against Lync 2013 directly, or converting it to UCMA 4.0. Continue reading “UCMA 3.0 and Lync Server 2013” »


New multi-threading techniques with UCMA 4.0

Posted: August 30th, 2012 | Author: | Filed under: UCMA 4.0 | Tags: , , , | 2 Comments »

Recently I’ve written a lot about using some of the new multi-threading capabilities in .NET 4.5 with the UCMA SDK, and I wanted to put together a complete example in an application that might actually be useful.

I like to take a break every so often to get up from the computer, walk around, and stretch, and I’ve tried a few break reminder applications that give you a pop-up reminder after a period of time. The trouble I always have is that I forget to disable them when I’m on calls, or presenting, and they pop up and get in the way. So I thought I would write a simple app to send IM break reminders, but only when the user is in an Available state in Lync. Continue reading “New multi-threading techniques with UCMA 4.0” »


Error about SIPEPS DLL with UCMA 4.0

Posted: August 21st, 2012 | Author: | Filed under: UCMA 4.0 | Tags: , , | 10 Comments »

One of the first issues you may run into when trying out the new version of UCMA is an exception that says a DLL called SIPEPS, Version=5.0.0.0 could not be found. This happened to me, and a few other people I’ve spoken to had this problem as well. So, to help anyone else who gets this exception, here are a few troubleshooting steps that should fix it. Continue reading “Error about SIPEPS DLL with UCMA 4.0” »


What’s new in UCMA 4.0?

Posted: August 14th, 2012 | Author: | Filed under: UCMA 4.0 | Tags: , | No Comments »

With the preview of Lync Server 2013 now available, you may be wondering what’s new in the good old Unified Communications Managed API. You may even have located the UCMA 4.0 SDK and downloaded it to check it out yourself. Since the final documentation is not yet available for UCMA 4.0, it may not be immediately clear what’s new and what isn’t. Continue reading “What’s new in UCMA 4.0?” »


Recording of UCMA 4.0 Developer Roundtable

Posted: August 14th, 2012 | Author: | Filed under: UCMA 4.0 | No Comments »

The recording of the Lync Developer Roundtable session I did a couple of weeks ago on UCMA 4.0 has been posted on Channel 9. You can watch it here:

http://channel9.msdn.com/posts/Lync-Developer-Roundtable-UCMA-40-Development-Topics

The presentation covers using .NET 4.5 Framework features in UCMA development and converting UCMA Workflow SDK applications to UCMA Core.


Default routing endpoints in UCMA

Posted: August 29th, 2011 | Author: | Filed under: MSPL, UCMA 3.0, UCMA 4.0 | Tags: , , | 3 Comments »

UCMA 3.0 introduced the concept of a “default routing endpoint.” To put it very generally, a default routing endpoint is a single application endpoint that receives any messages that have nowhere else to go. I’ll illustrate further in a moment. When I first heard about this new feature, I could not understand what use it could possibly have. Gradually, over a period of months, situations came up where default routing endpoints turned out to be very handy. Since I figure that other folks might have the same initial reaction of complete confusion when hearing about the default routing endpoint feature, I thought I would write up a bit of explanation on this odd but useful creature in the hope that it will help in others’ development efforts. Continue reading “Default routing endpoints in UCMA” »