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

CallViaPhone Advanced new feature for Outlook 2010/2013

Hi all,
I am pleased to announce a new version of CallViaPhoneAdvanced 2013 . As already mentioned in my previous posts,  CallViaPhone application,  through Lync interface, can be used to make and handle calls (similar to Better Together features of snom and polycom) to your phone (make call, close, hold, transfer, conference) , for more details please refer to this post CallViaPhone post detailed description .
Here below you can find new features of this version more in deep :

  • One of the most important new feature added is  that, from now, you can also use Microsoft Outlook 2010/2013, regardless of Lync. So the “call by phone” can be made ​​as described below:
    • From contacts in mail header or in appointment header:

mail-item

  • From Outlook Contacts Folder :

contact-item

  • New menu in configurator to use CallViaPhone with these ip-phone models :

PhoneModelsChoose

    • Snom Phones (default selection)
    • Cisco ip-phone (require some configuration on Cisco Call Manager, with this version we don’t have yet features like Close call, Hold Call, transfer call and conference call and Incoming call feature)
    • Yealink ip-phones (not available Incoming call feature)
    • Automatic check for new applications updates

You can download full version  (15 days limited) :

  • If you don’t have Lync  installed you can install any of these above for using Outlook callviaphone feature.
  • If you already have an old version of CallViaPhone , you don’t have to uninstall it, just install over.

For any questions don’t hesitate to contact sales@callviaphoneapp.com or support@callviaphoneapp.com

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

Auto Answer Video Kiosk application for Lync 2010/ 2013

Hi all,

about 1 year ago Scott Hanselman  wrote an awesome lync tool named Lync 2010 Super Simple Auto Answer Video Kiosk with Full Screen, you can find a complete description  here :

Full Description of Super Simple Auto Answer Video Kiosk with FullScreen

Basically this tool let you to turn any PC in a complete “auto remote working machine” just calling it from Lync .

This can be very useful in any situations in which we have to connect, without human intervention, in that PC . For example it can be used to see, with video, what’s happening in that place, or simply when you want to show Lync feature during sales presentations.

Usage is very simple, just start Lync 2010 or Lync 2013 ,(binaries version below is with NotUISuppressed, this mean that you have to start Lync client before launching AutoAnswer) , go to SuperSimpleLyncKiosk.exe.config  file and insert your sip uri  like this :

<setting name=”sipEmailAddress” serializeAs=”String”>
                <value>sip:yoursip@yourdomain</value>
</setting>

and Save.

Ready to work , just open SuperSimpleLyncKiosk.exe and enjoy 🙂

Just a couple of months ago , i saw that there’s not a direct download to binaries , for this reason I contact Scott asking him the permission to publish  binaries , thanks Scott!! 🙂

So for who that doesn’t have a way to compile a Visual Studio project , here below you can find the executable :

Personally i learn a lot seeing code of this tool, and for this i thanks another time Scott for his job.

Obviously all credit goes to Scott 🙂

New Lync 2013 book from Daniel Jonathan Valik

Hello everyone, I am pleased to announce the new book “Microsoft Lync 2013 Unified Communications: From Telephony to Real Time Communication in the Digital Age” by Daniel Jonathan  Valik, published by Packt Publishing:

https://www.packtpub.com/microsoft-lync-2013-unified-communication/book

The author is a Sr. Program Manager – Unified Communications in the Global Business Operations & Strategic Services division at the Microsoft Headquarters in Redmond / WA, USA.
For me it was an honor to be a reviewer of this book because I think that it is not only a classic technical handbook on Microsoft Lync and it can give the reader many tools to better understand the philosophy behind UC from many points of view.
In fact, the book starts with a general overview of how it changed the way to communicate over the years, what are our current communications needs and how we can satisfy them. Furthermore, through real-world examples you can learn all necessary steps needed and  how approach this technology in the best way.

Personally I learn a lot from this book and I want to thank Daniel and Packt Publishing for their excellent work.

Lync Online and MSOSIA (Microsoft online Sign-in Assistant) issues

One of the big challenge to deploy a Office 365 enviroment in a big company is doubtless the security…obviously  from corp net to the office 365 cloud and viceversa, but main problems are certainly on Lync online due to the type of authentication with MSOSIA (Microsoft Online Sign In assistant).

Typically in a Lync on premise all of the authentication and communications protocol is managed by Lync servers and there’s not need to use MSOSIA to login, but with Lync Online  all of communications (except the authentication to the ADFS that is internally located ) pass through a web proxy (in each company we have a proxy…) and we are  not sure that this web proxy is a ISA server or TMG server . Here you can find a good KB that describe exactly how to configure an ISA or TMG to exclude the MSOSIA service for each user’s client  :

http://office.microsoft.com/en-au/communicator-help/troubleshooting-lync-sign-in-errors-administrators-HA102759022.aspx

but , as i write before we have to consider that with a SQUID proxy  or other type not well know , not MS,  we have to bypass the proxy and permit Lync to pass directly on Internet . Ok….done.. but typically we have also a firewall between  that work only with ip address (network level) and not name or service (application level) , so we have to exclude  this list provided by MS :

http://onlinehelp.microsoft.com/Office365-enterprises/hh373144.aspx

good to use but in this condition we have to configure firewall with static route, and if subnet change we have to change accordingly on it, but for now is the only way, for this enviroment.

After all you think that now it’s all ok , lync connected fine etc…not completly… because there are another important things to manage on MSOSIA .

MSOSIA is needed to connect to office365 cloud , with it we can obtain the personal certificate that lync use to connect to Lync online cloud ,  and when you install it the first time on a client , after you close the installation windows that seems that all working fine , services MSOIDSVC.EXE try to connect to internet to download  Certification authority CRL to confirm the origin of various root certificate installed on the client, infocert, verisign and so on. But if the client is a Windows 7 and it’s not connected on internet or it have  a web proxy configured that ask authentication to browse to those CA CRL site, at the time of Lync login , we have always this :

At the moment we are investigating how to solve the problem , and at this time the only way to make it work is to disabled authentication in web proxy side for this site :

  • –              *.verisign.net
  • –              *.verisign.com
  • –              *.inforcert.it

An update from MS :

To avoid this on your proxy web authentication you can add and filter to exclude *.crl. 

This is because Authenticode is trying to ensure that the certs that signed the files in use are valid. It does that by checking that the serial numbers are not in the CRL files that the issuing CA produces.

If it can’t get a CRL it assumes the certs are invalid

Also the CRL files have to be cryptographically signed by the same cert as signed the cert in question

If anyone have ideas or comments , please contribute 🙂