Tuesday, April 1, 2008

Using UCMA to create a custom routing bot!

Using UCMA to create a custom routing bot!

Scenario (case):
A service/help desk wanted to expand their services using OCS as an extra communication channel. The big question in this case is how can we use a single point of entry for the employees who want to connect to the service desk? How can we show that the service desk is online? How do we make sure that an available service desk employee gets the question/incoming messages? How can we maintain the pool of service desk employees?

Solution:
Create a custom application using UCMA . This application registers itself as THE service desk. If one of the employees of the service desk is online/available the service desk is online/available.  If none of the employees is online the application shows itself as offline. If somebody sends a message to the service desk the message will be routed to the next available service desk employee. We wanted this to use for text messages but also for incoming video and audio calls.

Example application:
For demo purposes we created a Windows application.
In this case, if at least one of the 3 users is online/available the application is online. The colors show the availability of the different users.image
If we send a message to the application (in this case TUser4), we are routed to the next available user.
The logic to which person to route is build in the application.

 image

The biggest technical problems we encountered:

1.    How can set the presence of the application.
2.    How can we get the status of the different users in the “pool”.
3.    Even better how can subscribe to the presence of the users in the “pool”.
4.    How can we refer the incoming session to a different user.

The solution for these problems:

1.    You can set the presence using the UCMA api by creating a presence container(this is done by a SipServiceRequest) , after the presence container is created you can publish the presence ( also a SipServiceRequest) .

2.    If you want to get the status of a user in the “pool” you can send a SipServiceRequest to the user from which you want to know the presence.

3.    Subscribing to presence was really a difficult one. In this case we used a SipSubscription and a class implementing the ISipSubscriptionProcessor interface.

4.    At the moment you cannot refer a SignalingSession to a different user(OC client doesn’t support it). So there are two scenario’s. Use the application to set up a session from the application and proxy Instant messages back and forth through the application. This only works for instant message and not for audio and video calls. So the other solution is that to use TerminateWithRedirection on the incoming  SignalingSession this also works with audio and video calls.

At this moment I cannot get deeper into the exact details of the SipServiceRequest , SipSubscription , ISipSubscriptionProcessor we used in this application.

Microsoft says that it is not possible using the UCMA to get the presence or subscribe to presence. But actually it is, if you know the exact protocols to use!!!!

For more information contact sip:marc.wetters@e-office.com

5 comments:

TeKa said...

Hi.
I've been asked to find a way to forward im to the tech support, and I stumbled upon your article. Would it be possible to download the source code of your bot?
Thanks.

Marc Wetters said...

At the moment I don't have the source code publicly available.
For more information on the implementation please take a look on the following articles:
Subscriptions in UCMA part 3: Presence
Subscriptions in UCMA part 4: Presence (PIDF)
Subscriptions using UCMA part 5: Enhanced Presence

Regards Marc

Anonymous said...

I find when I use TerminateWithRedirection the BOT still stays in the initiator's window even though the BOT is no longer part of the conversation. And the conversation turns into a conference, is there something else my BOT should call after it calls TerminateWithRedirection?

Ashwin Athreya Vankayala said...

Hi,

My question is do we have a way to use UCMA to send SMS/FAX to any Mobile Phone or FAX machine. What are the Prerequisites and requirements? I am using UCMA 1.0 SDK. Any help regarding this will be appreciated.

Thanks.

Research Writer said...

Many institutions limit access to their online information. Making this information available will be an asset to all.
Custom Paper Writing