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.

Response Groups and call forwarding

Posted: December 16th, 2013 | Author: | Filed under: MSPL | 15 Comments »

Every so often I get a question about Response Groups – can you use the APIs to make it do this or that thing differently? Unfortunately, the answer to these questions is usually no; Response Group Services is not very customizable. But there is one feature of Response Groups that can be changed relatively easily using the development platform. By default, calls from Response Groups ignore call forwarding or simultaneous ring settings. If you receive a call from Response Groups, it will not ring your cell phone or any other phone number you have set up the Lync client to forward to. With a simple Lync Server SDK application, you can change this and allow Response Group calls to go to call forwarding numbers. Continue reading “Response Groups and call forwarding” »


Presence updates and multiple application pools

Posted: December 6th, 2013 | Author: | Filed under: UCMA 3.0, UCMA 4.0 | Tags: , , | 2 Comments »

In Lync development, as in many other areas of life, things get much more complicated when you have more than one application pool. You need to start thinking about scenarios that previously weren’t possible. One important case your application needs to account for if it may be deployed across more than one pool of servers is receiving presence updates from different pools of Front End servers. You can often get away with ignoring this effect, but you risk running into strange and seemingly inexplicable behaviour once in a while. This post explains the issue and what you can do about it. Continue reading “Presence updates and multiple application pools” »


Fix for long delay when scheduling many conferences in UCMA

Posted: October 30th, 2013 | Author: | Filed under: UCMA 4.0 | Tags: , , | No Comments »

The Lync Server 2013 cumulative update back in July fixed a potentially serious issue with conference scheduling. The main symptom of the issue is long delays when scheduling many Lync conferences simultaneously – it can take around two minutes per conference, rather than a few seconds as you would expect. I wanted to write up a quick explanation here for anyone who runs into this issue when building UCMA applications.  Continue reading “Fix for long delay when scheduling many conferences in UCMA” »


Call Admission Control and UCMA

Posted: October 23rd, 2013 | Author: | Filed under: UCMA 4.0 | Tags: , , , , | No Comments »

Just as dial plans, voice policies, conferencing policies, and so forth apply to trusted application endpoints, calls placed by UCMA applications can be affected by call admission control (CAC). This can produce seemingly inexplicable call failures when call admission control is enabled, and the problem is exacerbated by the fact that CAC only makes sense in larger, distributed Lync environments, and therefore is almost never turned on in development or testing environments. Issues with CAC are therefore much more likely to arise in production, and cause a great deal of vexation and hair-pulling. This post explains how to build your UCMA applications to avoid or at least identify failures related to CAC so that they will be less mysterious if they come up in a new environment. Continue reading “Call Admission Control and UCMA” »


Identifying re-INVITEs

Posted: October 3rd, 2013 | Author: | Filed under: MSPL | Tags: , , | 1 Comment »

When handling Lync Server activity at a SIP level, it is often important to identify re-INVITE messages and ignore them or handle them differently. I recently found out about a better way of reliably identifying re-INVITEs than the ones I’ve recommended in the past, and wanted to share it here. Continue reading “Identifying re-INVITEs” »


Presentation for Toronto Lync User Group

Posted: July 31st, 2013 | Author: | Filed under: Lync Development | No Comments »

For those in the Toronto area, I’ll be presenting for the Toronto Lync User Group at 5:30pm tomorrow about how messages are routed in Lync Server.

Here are the details: http://www.meetup.com/Toronto-Lync-User-Group/events/130820362/


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