Programming OCS 2007
Office Communications Server 2007 is part of the new UC (Unified Communications) platform from Microsoft. A lot of excitment is building up around it and requirements are now shaping up on top of OCS 2007 deployments. A lot of architects / developers are still very confused about the plethora of options available for programming OCS 2007. The intent of this post is to try and clear the fog regarding the programming models of OCS 2007 and give a high level overview of what SDK to use in which case.
There are multiple ways of programming OCS 2007 and what SDK you use boils down to a few key questions:
1) Are you writing client side code? That is, do your requirements call for a Communicator like feature set? Do you want contact lists, presence, IM capability inside a line of business application? The options for you here would be:
a) Use Communicator Automation APIs - basically here you control and invoke the Communicator already installed in the system from your application. You dont need to do a lot of coding here, you are done once the Communicator (or relevant IM window for e.g.) is invoked.
b) Use UCCA - UCCA stands for Unified Communications Client API. This is what Communicator 2007 is built on. You would use this if you have a need for custom rich features and/or want to embed UC features in your line of business applications. This is the most powerful client side API set.
c) Use CWA - An AJAX web based client for communicator. Stands for Communicator Web Access. The name says it all. Use it for browser based client applications.
d) Communcator Extensions - This is a way where you can create custom tabs that can show up in the Communicator UI itself. Very easy but minimal custom functionality is allowed.
2) Are you writing code that needs to manipulate message routing? Do your features call for an automated response to certain events / messages in your application and send out custom IM's / SIP calls as a part of such responses? Do you need to access archived messages / sessions? Do you need to embed interactive voice response / guide features into your applications? The options then are:
a) UCMA - stands for Unified Communications Managed API. It is a low level API providing access to the SIP layer. For e.g. you can create a bot that can auto respond to certain events or messages using this API.
b) Speech Server Core API - Use this to create applications that have speech recognition, synthesis and IVR kind of functionality. Builds on top off a Speech Server installation.
c) OCS Server API - Uses MSSPL - Microsoft SIP Processing language. Use for routing, archiving and logging of messages. Basically you can create plug ins to the OCS Server using this API. This is different from UCMA in the sense that this is more of the API allowing changes over the message routing and control (as opposed to UCMA - an API that gives access to the data inside the message).
This ends the overview and hopefully the fog is a bit clearer now and this helps you in narrowing down choices. For further details on some API sets and elaboration on some of the discussions above you can refer this blog.
