Friday, June 25, 2010

Sending messages to off-line users of Microsoft Communicator

We are working on a solution to capture messages to off-line users of Microsoft Office Communicator. We would like to capture these lost off-line messages that are never sent to the intended recipient and store them in a Sql database before they become lost or are sent to email. When an offline user of these messages become active, we would then alert the user, similar to IM tools such as Yahoo Messenger.

We are working with MSPL (Microsoft Sip Processing Language), which is a scripting language used for filtering or routing SIP messages combined with C# to capture the message. For delivering messages, the UCMA API is used.

We have bumped into some hurdles for capturing the messages, for instance, we were able to capture the message and the user initiating the message to the recipient but the message seemed to be encrypted in a UTF-8 format. We found a way to decrypt this message using the Class library in C# called system.text.coding and is now readable in a plain text file.

Now that the hardest part is over, or so it may seem, we can concentrate on sending them to the recipient when he/she becomes online. We will need to monitor who becomes online and send these messages using a windows service. The good news is, we already have an application that monitors offline users and sends an alert to these users, when they become active. It is called Instant Alert Manager for OCS so this is not entirely new territory for us and has given us a head-start.

There is still quite a lot of work to do. For example, storing data in a Sql Database and creating tables to store the data and deleting the data after the information has been sent. Also, capturing messages sent to users in various states, ie., busy, do not disturb, be right back. What if, users are a way on vacation, what to do with these messages, should there be an expiration time and then have the messages sent to an email, etc., etc. Nevertheless, much progress has been made in a short time and we will continue to find the best solutions. We will continue to update our latest findings and possibly give more details as we progress.