Using Tabs to convert Windows Messenger 5.0 into an email client (and other things)

 

There are a number of ways that Windows Messenger 5.0 can be 'branded', something typically done by administrators to provide corporate links or content within the Windows Messenger client:

 

  • Conversation Window Image - a clickable 'banner ad' that appears across the bottom of the conversation window, providing a hyperlink to a web page
  • Help Menu Entry - a custom entry in the Messenger help menu, linked to a custom web page
  • Tabs - additional sections delivering content via the Messenger client; users navigate the additional sections using the 'tabs' displayed to the left of the Messenger client window.

 

Read the TechNet article Customizing Branding in Windows Messenger 5.0 to get up to speed with the basics.

 

 

 

Whilst the 'banner ad' and the help menu entry are useful, they get boring pretty quickly. But there's lots of potential with Messenger tabs for developing some cool features! If you have used the consumer-focused MSN Messenger, you're probably familiar with the concept; each tab is actually linked to a web page. So you can deliver whatever content you choose, so long as you take account of the form factor of the Messenger client and design the content appropriately.

 

It's actually very easy to create your own Messenger tabs; here are the basic elements of the solution:

 

  • A registry key, "TabURL" needs to be set at the client, to point to the location of…
  • An XML file, defining the tabs using a simple set of information, such as the URL to...
  • The content of each tabbed page

 

You can find instructions on the first two elements of the solution in the article I linked to above. But the most important part of a tab is the content that you will deliver through it.

 

Recently I had a play around with Messenger tabs, pointing them at various pre-existing content to see if I could quickly create something useful without having to design a back-end service (or a UI - my colour-coordination leaves something to be desired :-)). I discovered that I could easily convert Messenger into an email, calendar, and tasks management client :-).

 

  

 

This solution relies on your organisation having deployed Outlook Web Access (OWA). We can take advantage of the fact that OWA is delivered via a web browser, and has been designed to work across a range of client form factors. As you can see from the images above, we can deploy several tabs; one to display email, one for a calendar view, and one for task management.

 

Here's some example XML:

 

<msntabdata>

<tab>

<image>https://webserver1/images/mail.PNG</image>

<name>My Inbox</name>

<tooltip>My Inbox</tooltip>

<contenturl>https://myowaserver/exchange/gtyler/Inbox/?Cmd=contents&part=1&View=Two%20Line</contenturl>

<tabid>1</tabid>

<hidden>false</hidden>

</tab>

</msntabdata>

 

 

The above example is a complete XML file which would display ONE tab. The image used on the tab itself would be found at the URL given in the <image> element above. Some advice about creating your own tab icons: use the PNG format, and for the best results make sure that you fill the 'background' of the image with a 'transparent' colour.

 

The rest of the XML is fairly self-explanatory (refer to the Customising Branding article for full details of each element), but let's look at the <contenturl> element. If we were to simply point a browser at an OWA server URL, for example https://myowaserver/exchange, the full OWA interface would be rendered back, and would not be very usable sitting inside Windows Messenger. By passing more information in the URL, we can tell OWA to strip out the surrounding UI and leave us with only the details we're interested in.

 

So in the example above, I add my mailbox name and some formatting parameters: /Inbox/?Cmd=contents&part=1&View=Two%20Line. Check out KC Lemson's blog for more OWA URL parameters.

 

But hold on - I've hard-coded my own user name in the URL. That's not going to work very well for anyone else who installs the tab.

 

There's a solution to this that adds a lot of scope to the solutions that you can build. Remember the registry key, TabURL, that points to the tab XML? That URL doesn't have to point to a flat .xml file - as long as the content returned is XML you can point it to any source; for example, https://myserver:1010/MyMessengerTabs.aspx could be an ASP.NET page sitting on a web server that returns XML.

 

This means that you can perform back-end processing before returning the XML, and direct each user to a different mailbox (or do some other clever thing). The XML is called each time Windows Messenger starts up, so you could deploy different tabs each day (if users restart Messenger that often). If the server hosting the XML is unavailable, the tabs will not be displayed.

 

Here's the ASP.NET code I used to deploy the OWA tabs - and a bonus tab that displays your Xbox Live Friends List (which you may already have seen if you are an MSN Messenger user in the USA):

 

 

 

 

 

 

<?xml version="1.0" ?>

<%

Dim thisUser = HttpContext.Current.User.Identity

Dim userName = thisUser.Name

userName = userName.SubString(userName.LastIndexOf("\")+1)

%>

<msntabdata>

<tab>

<image>https://www.winisp.net/grahamtyler/images/mail.PNG</image>

<name>My Inbox</name>

<tooltip>My Inbox</tooltip>

<contenturl>https://server/exchange/<%Response.Write(userName)%>/Inbox/?Cmd=contents&part=1&View=Two%20Line</contenturl>

<tabid>1</tabid>

<hidden>false</hidden>

</tab>

<tab>

<image>https://www.winisp.net/grahamtyler/images/calendar.PNG</image>

<name>My Calendar</name>

<tooltip>My Calendar</tooltip>

<contenturl>https://server/exchange/<%Response.Write(userName)%>/Calendar/?Cmd=contents&part=1</contenturl>

<tabid>2</tabid>

<hidden>false</hidden>

</tab>

<tab>

<image>https://www.winisp.net/grahamtyler/images/tasks.PNG</image>

<name>My Tasks</name>

<tooltip>My Tasks</tooltip>

<contenturl>https://server/exchange/<%Response.Write(userName)%>/Tasks/?Cmd=contents&part=1</contenturl>

<tabid>3</tabid>

<hidden>false</hidden>

</tab>

<tab>

<image>https://www.winisp.net/grahamtyler/images/xboxlive.PNG</image>

<name>Xbox Live</name>

<tooltip>Xbox Live Friends List</tooltip>

<contenturl>https://www.xbox.com/en-US/messengertab/xboxtab.htm?tab=live</contenturl>

<tabid>4</tabid>

<hidden>false</hidden>

</tab>

</msntabdata>

 

 

 

This solution assumes that all your users are hitting the same OWA server address. If not, you will need to add some additional ASP.NET code to account for your setup. The solution works best if your OWA server is using Windows Integrated Authentication; if not, your users will need to enter their login credentials each time they use the tabs.

 

Here are some example registry details. You'll need to replace the relevant sections with your details (particularly the SIP domain). Note that this solution is unsupported (standard disclaimer applies: "This posting is provided 'AS IS' with no warranties, and confers no rights"), so be careful if you go poking around in the registry.

 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MessengerService\ServiceProviders\{83D4679F-B6D7-11D2-BF36-00C04FB90A03}\Branding\[YOUR_SIP_DOMAIN_HERE]

@=""

"Providername"="Your IT Services Team"

"Bannerurl"="https://server/banner.gif"

"Bannerlinkurl"="https://server"

"Helpurl"="https://server/helppage.htm"

"Taburl"=https://server/MyMessengerTabs.aspx"

 

 

Have you used Messenger tabs in any other interesting ways? If so, or if you have any feedback about the above, I'd love to hear from you!

 

---

[UPDATE: 8th OCTOBER 2004]:

 

If you do not have a SIP server in your organisation, there is still a way to deploy Messenger tabs. There is a legacy key in the registry designed to allow OEMs to deploy tabs; by setting this key to point to your XML file (see above) the tabs will be displayed even if users only connect using the .NET Messenger Service account.

 

The key you need to add is:

“HKLM\Software\Microsoft\MessengerService\OEMTabs"

 

(OEMTabs is a string value underneath the MessengerService key)

 

Set the value of the string to the URL of your XML file (or aspx), i.e. https://server/MyMessengerTabs.xml.

 

Now restart Messenger to see the tabs appear. 

 

-Thanks to Ken Smith and Chris Araman for the registry key tip