Showing Presence on
the Web If youre running Office Communicator Server 2007 R2, you know that your only out-of-the-box option for showing presence on
the web is to use
the NameControl ActiveX control that ships as part of Office. Being an ActiveX control, this obviously means that youre limited to Internet Explorer. Also, nobody likes ActiveX
controls What if you want to show
the presence of users in a pure ASP.NET or HTML application and cant assume that
the user has Communicator installed you need anASP.NET or HTML presence control. HTML Presence
Controls for Microsoft Communications Server 14 We recently worked with
the UC team at Microsoft on a keynote demo for TechEd 2010 in New Orleans.
The demo was for a fictitious airline Fabrikam Airlines that wanted to show
the presence of customer service and reservations agents on its website. Customers could also start an instant message conversation with
the agents using a Silverlight web chat window that used WCF to communicate with
the backend UCMA application. We built HTML Presence
Controls that use AJAX to poll a REST-based WCF service running in IIS and hosting a UCMA 3.0 presence subscription application. Microsoft has graciously allowed us to publish these on CodePlex so that
the development community can benefit from them: http://htmlpresencecontrols.codeplex.com/ We will be maintaining
the CodePlex project as new builds of UCMA 3.0 become available. Check out
the project home page on CodePlex for some more in-depth details on how
the controls are implemented. ASP.NET Server Control Implementation Were providing an ASP.NET Server Control implementation that you can use stand-alone or in a GridView or Repeater (or other layout control).
The control has properties that allow you to control its appearance, e.g. you can choose whether or not to show
the contacts name or availability text. You can also use
the server control in a layout control such as a GridView by putting it in a TemplateColumn and binding to
the Sip Uri in
the data source. Disclaimer Once we started working on these, we realized why Microsoft hasnt shipped such
controls as part of
the product. There are some tradeoffs you have to be aware of when using these
controls, heres
the high level. Privacy
The backend UCMA 3.0 application that subscribes to presence of contacts runs as a trusted application and can thus retrieve
the presence of any user in
the organization. Theres currently no good way in UCMA to apply any privacy rules to ensure that
the consumer of
the presence
controls has permission to see
the presence of
the contacts that
the controls are bound to. Just to be absolutely crystal clear These
controls provide a way to query
the presence of any user in
the organization, regardless of
the privacy relationship between
the person consuming
the controls and
the contacts whose presence is being displayed. Were exploring options for a design pattern that would allow you to inject some privacy
controls. Keep in mind though that you would most likely be responsible for implementing this logic, as there is currently no functionality in UCMA that allows you to do that. Polling
the WCF REST Service
The controls poll
the backend WCF service to retrieve
the presence of contacts - you can control
the refresh interval so that they poll less often. We implemented a caching layer so that
the WCF service is always communicating with a presence cache it never communicates directly with Communications Server. For example, if your web page is showing
the presence of sip:
[email protected] and 500 people have
the page open,
the presence cache only contains one instance of
the subscription Communications Server is not being polled 500 times for
the presence of that contact. Once
the presence of a contact changes, it is updated in
the cache. There are some server-based push mechanisms that would work nicely here, such as
the one that Outlook Web Access 2010 uses. Unfortunately we didnt have time to explore these options. Community Contribution Take a look at
the project Issue Tracker, there are a couple of things we can use some help with. Shoot me a note if youre interested in contributing to
the project. Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here.