Creating a Click to Chat Application w/Office Communications Server 2007 Part I

One of the most common questions I get is: Can OCS do "Click to Chat"? The answer is not out of the box, but using the APIs you can build it.

In this post I'm going to cover the theory, in Part II we'll get into some code.

Items that need to be thought about:

  1. Who are the end users going to sign into OCS as?
  2. Who are the end user going to chat with?
  3. Which API are you going to use?

Who should the end user sign in as?

  1. Anonymous - All users could sign in as the same UC Enabled AD user (or group of users), because OCS supports multiple points of presence. The user doesn't provide the credentials, but we handle this in our code.
  2. Authenticate - As part of your web site's registration you create a limited access Active Directory account for each user, then automatically UC Enable these accounts, which could use different SIP Domain than one you are using internally. With the user provided credentials, each user logs into OCS as themselves. You could make this a separate Domain Controller, with a separate OCS installation, which you federate to your OCS installation.

Who are the end user going to chat with?

  1. Single End Point - If your end users will be chatting with a bot or a static individual, you don't really need to do anything else.
  2. Multiple End Points - If you want to route your customers to available internal users based on some criteria. You need to a way to see who is online at the time the user makes a request to chat. Check out my WCF ACD Posts, the posts refer to telephone calls but the server itself doesn't care if it is an instant message or a telephone call.

Which API are you going to use?

  1. UCC API - You could use, but it's going to be more work.
  2. UCMA - You could use this for the messaging portion, but it doesn't do presence. Also it's not designed to be used this way, it's more for middle tier applications.
  3. UC AJAX API - Alot easier than UCC API and if all you need to do is IM and presence this is the way to go.

Part II - We dive into the code...