I first heard about Unified Communications (UC) when I was investigating Clarity for my initial job interview. I had used Lync at a previous job, but never thought it would be a technology that needed any additional features or coding support as it functioned well enough as a person connector and meeting provider (as the company choose it to replace AT&T conferencing). Writing managed code for it via UCMA can produce some interesting products (shameless plug – Clarity Connect). Boiling down the technology to a few key points it has: people, audio, video, and connector pieces that join those people together into a meeting/conference (in my closed exposure to UCMA).
The current API has platform limitations in that to develop a for a non-.NET platform results in creating web services for your clients to connect (OCS and Android, Lync and iOS and Android). While this is can be seen as a common workaround for connecting disparate systems together it can feel like a misstep on the technology provider’s part. If only there is a way Microsoft could create such a service that any platform could access…
Web API and HTTP
During the Build 2012 Building Services for Any Client with ASP.NET Web API session it was hard not to see how Microsoft desires to loop in more platforms and developers with ASP.NET Web API. By designing web service logic as a Web API it means any platform that can talk HTTP will have a method to access your service. The simple case is the web browser: can it create HTTP requests and receive response (sure can…)? Now think of the native platform be it desktop or mobile device and if in its native language create and receive HTTP requests it can interact with a Web API. If only UC would get a taste of Web API…
Lync and UCWA
The demo highlighted the power of Web API with a mini-preview hosted by members of the Lync Server Team starting at 00:02:35 (ending at 00:10:56). The demo included sneak peeks of a Windows Phone 8 Lync application and Lync Web App. Unified Communications Web API (UCWA) is built on top of the ASP.NET Web API meaning each of those demo applications were making the same requests for data with the only differences existing in how the platform needed to interpret that data for UI presentation (I’m grossly over simplifying this…). Prior to UCWA, Lync Web App was a Silverlight application which could pose some limitations on which platforms had access. This is a step forward, but not a complete step as media (audio/video – a crucial piece) was delegated through a plugin. All hope is not lost as technologies like WebRTC may pave the way for plugin-less audio/video.
Even more UCWA act now!
I’ll admit this was not the first time I heard of UCWA… back on August 9th I attended a Lync Developer Roundtable titled: UCWA Overview. The general (vague) timeline for UCWA is that sometime after Lync Server 2013 RTM, UCWA will be released as an update, and with Office 2013 hitting RTM on October 24, it is safe to believe this may be on the calendar for 2013. Their mini-road map also lists additional modalities with planned support VoIP, Video Sharing, and Anonymous Access as part of a Futures. The demo showed off tasks such as getting/setting presence/note as well as instant messaging. The API has 2 channels through which data is sent: Command and Event. The Command channel appears to map directly to the basic HTTP verbs of GET, POST, PUT, and DELETE allowing the application to make a request and receive the response. The Event channel is a bit more complex as the server will be using this to relay events as they happen back to the application (via GET most likely). Resources are the object data received in requests that may a collection of web links (need to retrieve data), embedded resource (data is present), property bag (key value pairs defining the request).
Wait there’s more…
Doing a bit of searching on UCWA brought up a blog post by Matt Landis about Lync Server 2013 and UCWA highlighting UCWA’s features and current limitations. Matt also links to a set of Lync 2013 training videos on UCWA featuring George Durzi, Module 3 to be exact (Using the Unified Communications Web API). George goes through 2 samples: User Presence and Instant Messaging. He launches up a sample site (similar to the previous demo) and shows the task executing as well as covering how the JavaScript achieves the request and shows the request/response in Fiddler traces. The demos shown are more in depth than shown during the Lync Developer Roundtable.
Wrap-up
UCWA could shape up to be an interesting technology going forward, I’m waiting to see how Microsoft will handle audio/video streams without a plugin. From watching both demo series it appears UCWA will play a role in UC-related technologies. While seeing demo videos can be fun it is always better to get your hands dirty in new technology and I asked around a bit as was able to get information on how to get involved with Lync-related technologies (such as UCWA). If you are interested in getting the inside scoop on UCWA before it hits release consider joining the Microsoft Technology Adoption Program (TAP) by contacting LyncISV@microsoft.com.