Extending Communicator through tabs

Perhaps the easiest way to extend the Communicator 2007 client is by adding extension tabs underneath the contacts section. I looked around the web and found several references that this is possible but nothing about how to do it.  Recently at TechEd one of my colleagues, Kyle Marsh, demo'd how to do this so I thought I would translate that into a blog.

Adding extension tabs is not very hard and involves only some XML and registry changes.  The first step is to set the following registry key to 1

HKEY_CURRENT_USER\Software\Microsoft\Communicator\ViewExtensibilityTabs

As the name suggests, this turns on extensibility tabs for your user.  Next, you need to tell Communicator where to find the XML that specifies the tabs.  This can be set using

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Communicator\TabURL

You must use a URL here - so make sure to include https:// if this is a web site or file:// for a file on your machine.  The next step is to create the XML file.  The format of the xml file is the following.

<?xml version="1.0" ?>

 <tabdata>

   <tab>

     <image>https://someserver/Pictures/image.png</image>

     <userid>true</userid>

     <name>the name to display on the tab</name>

     <tooltip>the tooltip to show</tooltip>

     <contenturl>https://someserver/somepage.htm</contenturl>

     <contactid>true</contactid>

     <method>get</method>

     <tabid>1</tabid>

   </tab>

  </tabdata>

The possible elements are the following.

image - the URL of the image to use in the tab.  It must be 32 x 32 pixels.

name - this is the text to display on the tab

tooltip - the tooltip to display when the user hovers over the tab

contenturl - this is the HTML page to navigate to when the tab is active

tabid - the Id of the tab.  This should increase by 1 for each tab.

userid - whether to send the user Id of the signed in user to the page.  The user Id is sent as a SIP address - for instance sip:user@company.com

contactid - whether to send the contact Id of the currently signed in user to the page.  The contact Id is also a SIP address.

method - if set to post, Communicator will use a POST method to send the user Id and contact Id.  Otherwise the default is a GET request.

That's all that is necessary to get extensible tabs working.  You will need to exit Communicator for any changes to take effect.