Microsoft publishes the Exchange Instant Messaging (IM) software development kit (SDK) as part of the Platform SDK for developers who want to send instant messages or use presence information in applications such as a digital dashboard. The IM SDK comprises three major components: an IM Host API, which you can use to develop different IM capabilities, and two ActiveX controls—MSIMContactView and MSIM-MessageView—based on the Host API.

The Exchange 2000 Server IM client is based on the MSN Messenger Service client and inherits that client's user interface (UI) and features (e.g., the advertisement space in the pane immediately below the contact list). You can use the Host API to develop a custom client with different features. For example, you can replace the advertisement space with corporate information. You can configure the client to automatically encrypt, decrypt, or capture conversation data. However, a custom-designed client based on the Exchange IM SDK can communicate only with the Exchange IM service and can't communicate with other services, such as MSN Messenger Service.

The Host API also lets programs that want to use presence information inform users of recent developments or important events. For example, Microsoft has a program that uses IM presence information to flash updates about server outages and information about contacting the Help desk to users who are online when an outage occurs.

The ActiveX controls provide IM data to consumer programs. When you look at the standard IM client, you see two panes: contacts and conversations. MSIMContactView lets you control contact components; MSIMMessageView lets you control conversation components. You can use MSIMContactView to display a custom list of application contacts (i.e., imported contacts from another application). For example, you might use this control to display a list of travel advisors who can help users plan a business trip. To display this information in an IM client or in a non-IM application, you can also use MSIMContactView to apply a filter to personal (i.e., user-chosen) or application contacts. For example, you might use the control to display only contacts that are currently online rather than the standard contact list. This type of display might be useful in a Pocket PC's Web Part, reducing the amount of data transmitted over a wireless connection and the amount of screen space that contact information consumes.

MSIMMessageView is dedicated to the UI's conversation components, including conversation history. You might use this control to create a specialized client interface that shows only one or two lines of conversations in a digital dashboard's Web Part. You might also use the control to alter conversation-text appearance (e.g., font, color).

The IM controls can reduce the amount of time you need to create programs that use IM data. Like other ActiveX controls, programming through Visual Basic (VB) or VBScript (in the case of Active Server Pages—ASP—applications) can quickly produce impressive results. For example, you can add a new application-specific contact with one command:

MSIMContactList.Add "tony.redmond@compaq.com"

In this example, MSIMContactList is an instance of the MSIMContactView control and the passed value is the IM address of the contact whom you want to make available through your program.

The IM SDK is another example of the open approach that Microsoft takes to Exchange 2000 services. The choice is simple: You can decide to use the standard Microsoft IM client, or you can crack open your programming toolset and use the IM Host API and controls to develop a view of what you want IM to deliver. Seeing how developers use this technology—especially in digital dashboards—will be interesting.