When we started Zingdom, the working title was Applied Messaging Corporation, reflecting our conviction that instant messaging (IM) was bound to be an important technology in the business world. Since none of the major IM providers were interested in providing APIs to independent software vendors (ISVs), we developed and patented a technique for letting our users log into their favorite IM service using the standard client and then injecting ourselves into the middle of the data stream. This avoided a lot of the problems other ISVs had in dealing with ever-changing authentication protocols, but it would never scale as well as a direct Edit Post | Post | Christopher Herot's Weblog | Your Weblogs | TypePadserver-to-server connection. Years later, in one of life's many ironies, the same week we are issued the patent we signed a deal with AOL that makes the interception technique obsolete, at least for AOL Instant Messenger (AIM).
In the intervening years, AIM went from being one of the most closed, proprietary systems to one of the most open. They've instituted a developer program with a link prominently displayed on the AIM home page and an SDK free for the downloading. A simple shrink-wrap license is enough to get started, but we needed the ability to originate conversations from our server to the AIM subscriber. This required an individually-negotiated contract but the AOL business development and technical people were a pleasure to deal with and the API worked as advertised. They've thought through the issues of making the API work in a load-balanced, multi-server environment with asynchronous, stateless event handling.
Say, for example, that someone wants to enable visitors to his web site to be able to reach him on AIM, but doesn't want to publish his AIM screen name or require the visitors to install any software or become AIM subscribers themselves. So our web site owner signs up for our service and uses the HTML we provide to embed a Zingme button on the web site:
The end result looks like this:
When the visitor presses the button, he or she gets a choice of connection methods, depending on the preferences of the intended recipient:
If the visitor presses AIM, we use Javascript to pop up an instant messaging window:
And on the recipient's side, an AIM message arrives:
Note that the visitor never sees the subscriber's screen name. On the subscriber's side, he sees information provided by the embedding web page, in this case "TravelForum User chris."
At that point, they can chat back and forth with our server in the middle.
Cool!