Welcome to MSDN Blogs Sign in | Join | Help

The Goldfish Bowl

Graham Tyler's blog capturing thoughts on SharePoint, Live Communications and more
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>http://webserver1/images/mail.PNG</image>

<name>My Inbox</name>

<tooltip>My Inbox</tooltip>

<contenturl>http://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 http://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, http://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>http://www.winisp.net/grahamtyler/images/mail.PNG</image>

<name>My Inbox</name>

<tooltip>My Inbox</tooltip>

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

<tabid>1</tabid>

<hidden>false</hidden>

</tab>

<tab>

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

<name>My Calendar</name>

<tooltip>My Calendar</tooltip>

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

<tabid>2</tabid>

<hidden>false</hidden>

</tab>

<tab>

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

<name>My Tasks</name>

<tooltip>My Tasks</tooltip>

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

<tabid>3</tabid>

<hidden>false</hidden>

</tab>

<tab>

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

<name>Xbox Live</name>

<tooltip>Xbox Live Friends List</tooltip>

<contenturl>http://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"="http://server/banner.gif"

"Bannerlinkurl"="http://server"

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

"Taburl"=http://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. http://server/MyMessengerTabs.xml.

 

Now restart Messenger to see the tabs appear. 

 

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

Posted: Tuesday, August 17, 2004 6:47 PM by grahamtyler

Comments

Sean Gephardt said:

Very cool entry, some teammates and I were just discussing how to go about doign this!
# August 17, 2004 8:16 PM

Don said:

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
# August 17, 2004 8:39 PM

Victor Vogelpoel said:

Very creative!
# August 17, 2004 9:30 PM

Graham Tyler said:

Don,

I'm not sure if the author of the white paper had a specific alternative to META refresh in mind, but there are a number of ways you could approach the problem - depending on the solution you're aiming to build. Remember that the content of a Messenger tab is just a web page; and so can be refreshed using any techniques that work on web pages.

I've thought about the potential for, say, a workflow application which notifies users when they have a new task allocated to them. In a typical workflow system users may currently be visiting a web page to check their latest status, keeping the web page open and hitting "refresh" every so often. This type of content could clearly be delivered through Messenger - the 'refresh' could either be a built-in META refresh, or simply whenever the user changes tabs. I've not seen a way of pushing the content to the users due to the 'client request - server response' model used - without resorting to, say, an embedded ActiveX control.

However you could *notify* users that some event has occurred (i.e. new task allocated) using Messenger toast (pop-up messages) - either a message or an Alert. To do this you could use SQL Server 2000 Notification Services (see http://www.microsoft.com/sql/ns). Messenger can be added as another notification 'channel', just as you might use an email or an SMS message to alert the user.

Once notified of the event, the user could then click the Messenger tab knowing that there is new content.

Another possibility might be a Live Communications Server 'automated agent' or 'bot'. This is a program that runs on the LCS box on behalf of a user and can intelligently notify them when certain events occur. The agent appears as a contact in their buddy list. See http://msdn.microsoft.com/library/?url=/library/en-us/dnrtcclnt/html/RTC_InformationAgent.asp for more details. This is something that I might be blogging about more in future.

Hope that helps.

- Graham
# August 18, 2004 6:00 PM

cpchang said:

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?
# August 31, 2004 3:35 AM

Graham Tyler said:

Hi cpchang,

A simple way to find your SIP domain would be to check the sign-in email address that you use. For example, if the sign-in email address that you use for LCS happened to be "cpchang@contoso.com", your SIP domain would be "contoso.com". So your registry key would look like:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MessengerService\ServiceProviders\{83D4679F-B6D7-11D2-BF36-00C04FB90A03}\Branding\contoso.com

After you set the registry key, you will need to stop Windows Messenger and restart it. The quickest way to do so (without it warning you that Outlook still needs it, etc) is to use Task Manager and kill the "msmsgs.exe" process. Then restart Messenger.

Don't forget that you may have two or more accounts set up in Windows Messenger, each with different login addresses, depending on the number of services you are connecting to: .NET Messenger Service, SIP Communicatons Service and maybe the Exchange IM Service. The email address to check for the SIP domain is the one you use for the SIP Communicatons Service.

Hope that helps!
# August 31, 2004 11:40 AM

Robert said:

>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
# September 1, 2004 11:31 AM

Alistair G. Lowe-Norris said:

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
# September 8, 2004 1:11 PM

Graham Tyler said:

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!
# September 8, 2004 3:11 PM

Demolition BLOG said:

# December 5, 2004 8:35 AM

The Goldfish Bowl said:

If you attended the Office Developer Conference in the UK last week, in the&amp;nbsp;beautiful surroundings...
# July 4, 2005 12:23 PM

The Goldfish Bowl said:

If you attended the Office Developer Conference in the UK last week, in the&amp;nbsp;beautiful surroundings...
# July 4, 2005 12:26 PM

The Goldfish Bowl said:

If you attended the Office Developer Conference in the UK last week, in the beautiful surroundings of

# May 29, 2007 11:31 AM
New Comments to this post are disabled
Page view tracker