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 :

 

Review of “Getting Started with Microsoft Lync Server 2013” by Fabrizio Volpe

Hi all,

I just finished reading the book written by Fabrizio Volpe on Lync 2013 and my first impression is very positive (you can find information about Fabrizio here) .

The book has a well-organized structure and has a very fluid writing. This allows readers to read without getting bored. Entering deeper into technical topics I can say that is very comprehensive in all of it and personally there are parts of it that I’ve not yet had the opportunity to implement in my various projects such as SQL witness and all scenario in which disaster recovery is necessary by design. Topics about Enterprise Voice is very clear and to start learning about this very important argument it’s a good starting point.

Another important aspect is that it can be very useful for post-delivery documentation, for example during a project, each of us should write a lot of documentation and it must be complete and especially comprehensive as much as possible because customers could not be a Lync Expert; so this book could be for you. Obviously there are certain aspects that each of us must deepen with external resources , and for this reasons Fabrizio wrote, in the book, a lot of external link that help us on it.

So in conclusion for me it is a must-to-have book and if you want to buy it you can go to PacketPub store or Amazon Store .

Getting started with Microsoft Lync Server 2013 by Fabrizio Volpe

Multilanguage Auto Attendant with MS Exchange 2010 UM and Lync

One of the most cool feature of  Exchange 2010 UM is the Auto Attendant application, that let us to find and reach anyone inside our company through a simple phone call to a single number configured directly in Exchange UM role , below you can find a screenshot of a simple Auto Attendant configuration. AA_first

Here you can see that the language can be only one for each Auto Attendant, in this case English.

AA_second

So when you call Auto Attendant (from inside, or from PSTN) you hear only one language prompt that says :  “Welcome to the Exchange auto attendant” , “To reach a specific person, just tell me the name” etc…

QUESTION :

How can I create a Multi Language Auto Attendant ?

ANSWER :

if we have Exchange 2010 UM and Lync 20XX integration we can use Lync Response Group , but  Response Group (IVR) is not born to add, inside  Agent Group, applications like  Auto Attendant, so we can use a workaround.

1° , Configure one Auto Attendant for each Language (MAX 4 lang), no need to configure also a phone number associated to it, the important is to change language for each Auto attendant, English_AA –> set English in Features–>Language tab , Italian_AA –> set Italian in Features–>Language tab, etc…

Another important pre-requisite is to import all Language, for Speech Recognition and Text to Speech, that we want to use in Exchange UM 2010 SP2,  you can download here : http://www.microsoft.com/en-us/download/details.aspx?id=28191

AA_third

 ,  Launch OCSMutil.exe from lync front end to create all auto attendant object for each Language :AA_fourth

In phone number field you can enter whatever you want because we reach the auto attendant application only with his sip name from lync.AA_fifth

 3°, Copy each Auto Attendant sip user in notepad to use later in Lync Response Group , for example :

  • sip:English_AA@domain.com
  • sip:Italian_AA@domain.com
  • sip:French_AA@domain.com
  • sip:Spanish_AA@domain.com

4° , Now we are ready to configure  Response Group in Lync side : AA_sixthCreate one Agent Group for each language , don’t put any user inside and let default configuration.

AA_sevenCreate one Queue for each Language with following configuration, this queue let us to create the queue overflow to Auto attendant because if there ‘s no agent in the Group, all inbound call will be redirect to overflow queue and in this case we have our specific Auto Attendant for each language:

AA_eight35°, Now we are ready to create Response Group workflow :

Choose a Interactive workflow and configure like this, for fields not filled or not showed here you can leave default values :

AA_nine7

In this workflow you can see that there is the main Question about which language do you choose and than you’ll be forwarded to a specific queue based on language that we configure before in Lync Response Group queue configuration.