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.

Standalone UCMA applications: which features work?

Posted: May 24th, 2012 | Author: | Filed under: UCMA 3.0 | Tags: | 2 Comments »

Recently I’ve been getting lots of questions about standalone UCMA applications, by which I mean UCMA applications that don’t register at all with Lync Server, and I thought it might be helpful to write about which features of UCMA work with standalone applications, and which require Lync Server. Continue reading “Standalone UCMA applications: which features work?” »


Shortening the “answer delay” with early media

Posted: May 16th, 2012 | Author: | Filed under: UCMA 3.0 | Tags: , , , , , | 2 Comments »

It’s common for a UCMA app, before answering an incoming audio call, to perform some setup steps: finding an agent to take the call, preparing media, whatever. These steps may be necessary if, for example, the call is being set up as a back-to-back call and they can’t be done after the call is already established. In other cases, the way the call is set up makes the actual process of accepting the call take some time. Unfortunately, this can lead to callers hearing multiple seconds of ringing (or, even worse, silence) before the call is fully established. It can also lead to “clipping” effects where the beginning of a message or someone’s greeting is cut off because the media flow isn’t quite established yet. A feature called “early media” allows your application to get around these limitations and eliminate most of that delay or clipping. Continue reading “Shortening the “answer delay” with early media” »


How to tell where a call is ringing in UCMA

Posted: May 8th, 2012 | Author: | Filed under: UCMA 3.0 | Tags: , , , , , | No Comments »

Lately I’ve been spending a lot of time looking at “forking,” the process where a call (audio, IM, video, whatever) to a user is sent to all devices where that user is logged into Lync, and various ways to handle it in UCMA. A while back, I described how you can look at the SIP headers in the response when an outgoing call is answered to find out if, for example, a voicemail box answered the call. By looking at “provisional responses,” you can get details like this before the call is even answered, while it’s still “ringing” to the user’s various endpoints. Continue reading “How to tell where a call is ringing in UCMA” »


Getting endpoint policy info programmatically

Posted: May 2nd, 2012 | Author: | Filed under: UCMA 3.0 | Tags: , , | No Comments »

I wanted to share an approach you can use to find out your endpoint’s capabilities and policy settings through UCMA code. To give you an example of where this can be useful, imagine you have an application that creates conferences or provides services to conferences, and in order to work it needs to be able to invite anonymous participants. If the endpoint has this capability turned off in meeting policy, the application will fail or exhibit strange behaviour. You might already have exception handling to deal with the situations where the application tries to do something that’s prohibited by policy, but by that time your application is already running. By querying policy information, you can confirm that the necessary settings are there when your application starts and avoid unpleasant surprises later. Continue reading “Getting endpoint policy info programmatically” »