Introduction
The PingIM application aims to be a feature rich, easy-to-use, and SIP
compliant instant messenger application for the PingTel VoIP phone. The application
was started as an independent computer
science project advised by Dr. Schulzrinne and Xiaotao Wu of Columbia University .
Developed using the Java APIs provided by the PingTel corporation, PingIM
includes the following features:
- Instant messaging to other SUAs that support the SIP MESSAGE call.
That is, the application works transparently with other SIP User
Agents or with other instances of PingIM.
- Easy-to-use, highly intuitive graphical user interface.
- Detection of buddy's presence information; i.e., presentity
. XML is used for presence passing, allowing other SUA to easily incorporate
PingIM compatibility.
- Roamable addressbook, including the ability to add and delete entries.
- Phonebook; users can place SIP call to phonebook entries.
- X10-controlled buddies; support for turning on/off X10-controlled
devices that are connected to a SIP-X10 gateway.
- Audible incoming message notification.
- Background notification of incoming messages. The PingTel
phone user does not have to have PingIM open in the foreground to receive
incoming instant messengers.
In order to implement many of the features listed above, more functionality
than was offered by the standard PingTel APIs was required. The success
of this project depended heavily on the advice, recommendations, and help
of the PingTel corporation. PingTel assisted in providing details
of hidden functionality that were present in their Java interface which
allowed PingIM to directly interface with the underlying SIP protocol stack.
Without PingTel's assistance, PingIM would be a very limited application.
Particularly, this author would like to thank Alex Zolatar of PingTel
for his tremendous and invaluable assistance.
One of the major strengths of the PingIM application is that it utilizes
the SIP stack that is built into PingTel phones. (It is in this area
that the undocumented API calls that PingTel provided were especially useful.)
Since PingIM uses SIP for all message passing (e.g., presence information,
instant messaging, and X10 commands), PingIM is easily interoperable with
existing SIP user agents. For example, successful testing of instant
messaging has been conducted between a PingIM instance running on a PingTel
phone and a SIPC instance running on Solaris. However, some functions
of PingIM (notably presentity) are "PingIM" specific in that interoperability
with other SUA may be restricted.
Surprisingly, one of the most difficult aspects in the design and implementation
of PingIM was the graphical user interface (GUI). The PingTel Java
API has a limited number of menu types (list, selection, etc.) that can
be displayed to the user. The screen size and lack of customizability
for these menus made the graphical design and user experience more of a challenge
than first anticipated. However, this author (who by no means claims
to be a user experience guru), feels that the final user design is both
fairly intuitive and incorporates the maximum amount of functionality per
screen.
Like most applications that are designed for small, Java-enabled devices,
the ability of a user to enter data into the application proved very difficult.
PingTel phones use the same text input algorithm as many popular
mobile phones. That is, in order to type the word "HELLO", the user
must press the '4' key twice, followed by '3' twice, then '5' three times,
and '5' three times again, finally followed by the pressing of the '6' key
three times. Clearly, having lengthy text-based conversations between
PingTel telephones would be slow at best and extremely frustating at worst.
For PingIM to gain widespread acceptance among PingTel users, a better
text input mechanism than is currently available would have to be developed.
A future decision would have to be made as to whether that functionality
should belong to PingIM, or be a built-in feature of the PingTel VoIP phone.
The first section of this documentation, PingTel phone, serves
as a brief introduction to the capabilities and features of the PingTel telephone.
It is by no means meant to be a comprehensive guide or reference to
the many features and abilities of the PingTel device. For that, the
reader is referred to the PingTel website
. For readers already familiar with the PingTel phone, the section
that follows, PingIM Design, may be a better starting point. At
any time, the reader may use the links at the top and bottom of every page
to navigate throughout this document.
PingIM running on the PingTel Emulator for Windows.