So what is the Unified Communications Client API?

In my UCMA blog series, I mentioned a client side API called the 'Unified Communications Client API' (UCCA).  In the comments, I had several questions about what this is and how to use it.  Recently, I started looking at this API in more depth and, while I do not know enough to write a blog series about it, I can perhaps shed light on some of the confusion.

Perhaps the most confusing thing about this API is the name.  The official name I have been told to use is 'Unified Communications Client API', or UCCA for short, and that is the name I will continue to use.  Some people may remember this API by its original name UCCP.Net, or by its shortened name - UCCP.  Internally, I have heard some people refer to this as UCC.  I'm sure this API also has a code name - but I am glad I do not know it.

First, this API has not actually released yet.  As I understand it will ship soon, but I do not have a date that I can disclose.  The Beta that I pointed to currently has a number of issues which I have yet to verify.  The primary issues I have hear are that conferencing is not yet fully supported and there are problems with the samples.  If I can find enough time for a series on this API, I hope to fix the second issue myself (though I'm sure when it releases the samples will be fixed).

Basically, this API allows you to do anything that Communicator can do.  In fact, Communicator 2007 itself is built on top of it.  Why would you want to build another Communicator?  Well, in truth the purpose of the API is not for you to build your own custom Communicator, but to allow you to add communications capabilities to your apps.

For instance, one idea is an industrial design application where engineers can communicate with each other while examining an AutoCAD drawing.  When an engineer views a drawing, he can see other individuals that are involved in its design along with their presence levels.  The engineer can then initiate a conversation with one or more of them within the application.   Basically, the idea is to allow communications within your application without the user needing to leave your application.

So what is this API?  The API consists of a large set of COM interfaces and a .Net managed wrapper around them.  For those used to C# coding, the API will seem rather confusing as the namespace and class names are awkward and you cannot attach to events as you do in .Net - you must instead call Advise on the COM object.  I hope to have code samples of this in the future.

Like UCMA, UCCA is an asynchronous API.  That means that you typically call a method on an object and receive an event when the method has finished.  This is necessary due to the nature of unified communications.  Unlike UCMA, however, UCCA does not use the .Net async pattern.

In terms of features, UCCA provides the following and more.

  • SIP signaling
  • Conferencing (though not in latest Beta)
  • Video/Audio communications
  • Presence
  • Application sharing

UCCA also provides objects to interact with the media stack, which is not present in UCMA.  However, it is not really possible to compare UCCA and UCMA because they are used for different purposes.  UCMA is a server side API while UCCA is intended for clients.

That's about all I can share right now.  I hope to have a series of examples on this API soon, but currently the biggest challenge is finding the time.