The Great world of Lync UC SDK

After some time , i decide to write this post to share some of my thoughts about Lync developing. Some time ago I’ve wrote a Lync plugin (CallViaPhone app ) that let to use Lync client to start calls directly from an ip-phone, and it gave me a lot of challenges . So, questions could be :

  • Why do I need to develop an application for Lync ?

Professionals that know Lync , know that a lot of features are still not available (or not designed at all) and sometimes this lack of features, could move customers decisions to another technology. In this case we could “extend” Lync with SDK. A good example of cauldron of ideas could be : http://lync.ideascale.com/  .

  • Where should I start and what approach should I have?

First of all , we must have little confidence about developing, example could be install Visual Studio and try to develop some “hello world” application on different enviroments like WPF (XAML) to develop Windows applications with rich graphical interface, or console applications to develop Windows services , or .NET web applications , web services , and so on. But the question could be, why should I have to learn all of these ? Because we need to have a 360° vision and we must use the right enviroment for the project.

Secondly we must have clear what we want to do : do we need a client application to extend Lync client , or we need to develop a server side application centralized for all users , or both? In all of these case we could find a lot of example on how to do it . A good starting point could be this : http://msdn.microsoft.com/en-us/library/office/jj162980(v=office.15).aspx , in which there is a lot of explanations about these :

  • Lync 2013 SDK (client side)

– These API gives you the possibility to control almost all Lync client behavior ,and interact with it. Example could be CRM integrations , client PBX integration , etc…

– There are also the option to add some custom menu in Lync interface to call applications or web url with registry key; for more information visit : http://msdn.microsoft.com/en-us/library/office/jj945535(v=office.15).aspx

– One of the most advantage of Lync Client API , compared to the others Lync API, is that you can develop also in a Office365 enviroments without the needs of a Lync On-Premisev env.

  • Lync Server 2013 SDK (server side)

– With these API you can manage,  in Lync Front End role , all sip communications. This means that, for example, i would like to create the BusyOnBusy feature (actually missing from Lync features)  , so i could develop a “Sip application”  with the “SIP application manifest” (MSPL script) that intercept a call if the user lync called is actually in another audio call.

– Another way to use Lync Server 2013 SDK is to develop a “Managed SIP applications API” ;  the mode is similar to MSPL script , indeed you must start from a MSPL script that route (forking or forwarding) the sip signaling to one or more specific endpoint, and then you can develop a .NET application that manage it. An example could be a reporting third party solution, or some advanced applications that take care of all Lync conversations .

  • UCMA 4.0 (Server side)

– With UCMA we can develop almost all of advanced features needed in enterprise scenario , for example , based on business needs we can develop a full functionally contact center with IVR (not response Group 🙂 ) , routing logic and so on. Great advantage is that we can extend it with all lync communications channel  , such as Audio, Video, IM, federation, Public (Skype, etc…) . UCMA give us also all tools that typically you have to pay so much with other vendors , for example : “Text To Speech”, “Speech Recognition” in a IVR enviroment.

  • UCWA 1.0 (web side :))

–  Unified Communications Web API ,  actually with these API you can develop your own web applications with some features like authentication, presence, IM and the Call Via Work (you simply manage the call forwarding , simultaneosly call, of your lync user) . We hope as soon as they will be ready , also Audio, Video and other lync features could be used in web applications. http://ucwa.lync.com/documentation/core-features .

  • Lync Software Defined Networking (SDN) API

– Imagine that you are at carrier side and you have to monitor some indicators for Lync quality , network performance , etc.. You have to integrate all of these in a third party monitoring system  ; these API is exactly what you need; take a look at this for other informations : http://msdn.microsoft.com/en-us/library/office/dn387069(v=office.15).aspx . A very interesting tool inside this API is the “SIP Obfuscator” that let you to hide username for privacy.

Conclusion

We have a lot of other sources to read about Lync SDK, for example these resources below are absolutely useful and saved my time in a lot of situations   :

Remember that deep knowledge of Lync API is not enough to develop a Lync applications ready for the market , we have to consider that there are a lot of aspects in terms of exceptions, enviroments , usability , integration with other not Lync application  , licensing , security, and so on .

A lot of companies today invest in Lync developing , awesome example are :

 

Advertisements

PBX replacement with MS Lync (with Dual Forking) Part 2

As i mention in my last post (part 1) we can choose to use the Voice gateway in pass-through as shown here :

PBXReplacementPart2_Example_base scenario

but to do this , we have to consider various steps before moving the IP-PBX in production  and insert voice gateway between PSTN and the enviroment, so let start from the beginning,  these are necessary steps :

1.  Voice gateway configuration for PSTN trunk (only configuration not yet connected), in the other side (to lync and to PBX) configuration of SIP trunk to Lync and SIP trunk to IP-PBX (IMPORTANT : to obtain a dual forking of calls in this scenario we must use only sip trunk to and from  PBX , so we must have an IP-PBX with sip trunk enabled ).

At this step we don’t have any disservice on IP-PBX production environment but we are ready to switch PSTN from IP-PBX to Voice gateway .PBXReplacement_part2_Example_step1

2.  We can schedule session tests to verify that all configuration made before work    fine (for example during time range in which we couldn’t have any outages to users, for example during the night?), in this way if not all scheduled tests list will be fine , we can rollback easily and move PSTN trunk to IP-PBX again.

To achieve this we must locate the Voice gateway properly sized, to mantain compliance on  requirement in terms of business continuity, for example redundant power supply , right number of SIP channels to/from lync, and to/from IP-PBX.

In this way we can also test a SIP trunking from a provider instead of PSTN (or buy another PSTN trunk to do a test pilot for Lync voice for example) , because until we switch the PSTN from IP-PBX to Voice Gateway, we can work easily in Voice Gateways side without give any problem in IP-PBX side.

About call flow management and dual forking we have the same behavior as i wrote in my previous post (part 1) , unique difference is that all configuration for dual forking is made in Voice gateways side , and in PBX side we have only to switch all inbound and outbound call to the new SIP trunk instead of PSTN trunk already switched off.

At this point we can assert that we have a lot of way to do a soft migration or simply to use the existence telephony infrastructure for Lync and generally Microsoft UC. We know that Microsoft Lync just for presence/audio/video/conference is really wasted and with a good approach and a small effort we can implement an excellent Lync Voice project for a really Unified Communications experience.

SNOM UC apollo 8.8.1.13 released

This new firmware solve all problem that i mentioned in my last post with firmware 8.8.1.11 :

  • There’s no need to have  an edge server in Lync infrastructure for Ringback issue
  • “Not registered” message on snom phone during the day.
  • Problem when you add a snom phone from a Lync based conference

For other information and to download last firmware please visit http://www.snom.com/

Let’s introduce this blog!

Hello,

anybody could ask: “Why another blog about Unified Communications? Well it’s very easy…  Simply I desire to share my day by day experience facing challenging problems that come during my work.  Another main reason is because here in Italy, compared to other countries, the Lync and Co. market is slowly growing but, compared to other vendors, it is not yet stopped. So I think it could be good to have an instrument designed  to simplify all the various phases of our work on deploy, troubleshoot, etc.. By now, thank you in advance for all your comments (I hope that will have a lot of) and for all of you that would give me feedbacks and new inputs on this.

Of course, I thank all the well-established bloggers who have helped me a lot in my work every day.