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
Comments
- Anonymous
August 17, 2004
Very cool entry, some teammates and I were just discussing how to go about doign this! - Anonymous
August 17, 2004
Wow! The TechNet article you link to has a section titled "Alternatives to META Refresh" that got me incredibly excited. It says "Tab implementers may use other solutions for refreshing content, such as a server-side push of content." If I could combine server-side push with the url techniques in your posting I'd be able to use messenger as the framework for the app I'm designing.
Too bad the TechNet article doesn't give any clues on how to incorporate server-side push in the solution.
Are there any hints you can give? even just a suggestion on what keywords to google for would be a huge help...
thanks,
-Don - Anonymous
August 17, 2004
Very creative! - Anonymous
August 18, 2004
The comment has been removed - Anonymous
August 30, 2004
I have tried to modify registry, but noting happened on my windows messenger. I think maybe I have the wrong SIP_DOMAIN.
Could anyone tell me how to write it correctly? - Anonymous
August 31, 2004
The comment has been removed - Anonymous
September 01, 2004
>Using Tabs to convert Windows Messenger 5.0
What about MSN messenger? Does this apply to this 'version' too?
And can someone tell me why has Microsoft two versions of Messeger at first place?
Regards
Robert - Anonymous
September 08, 2004
Nice writeup Graham - glad you finally got the chance to get it down in the end after the six months or so since you demo'd this to me :)
-- AGLN - Anonymous
September 08, 2004
Hi Robert,
You can only customise the tabs for Windows Messenger - the tabs for MSN Messenger are provided and controlled by the service provider (i.e. MSN).
The main reason for this also helps to answer your second question. Windows Messenger is supplied with Windows XP, and targeted at both home and corporate customers. MSN Messenger is installed seperately and is targeted at home users/consumers.
Rather than (or as well as) allowing their employees to send messages over the Internet using the .NET Messaging Service, Corporate customers can choose to run their own Instant Messaging server on their own networks - the server product is called Microsoft Office Live Communications Server 2003, and the client software is Windows Messenger. By doing so businesses can benefit from additional security, encryption, authentication, archiving of IMs and so on. The company becomes their own "IM service provider" and so can roll out their own custom tabs, banners and help facilities to their employees.
When asked, business customers tend to prefer the "back-end" features enhanced - encryption, scalability, archiving etc. They also prefer predicable upgrade cycles, as they have to run tests before deploying new software updates to thousands of users; so typically the Windows Messenger client is only upgraded when a new server update is released.
However, consumers tend to prefer a cool-looking interface, new games, new emoticons and so on; "client-side" features; and they want them now! So MSN tend to release updates to MSN Messenger as quickly as possible.
Hope that answers your question! - Anonymous
July 04, 2005
The comment has been removed - Anonymous
July 04, 2005
The comment has been removed - Anonymous
May 29, 2007
The comment has been removed