VoIP via the ECF Call API and the Jingle Protocol
Collaboration via Voice over IP is gaining more and more adaption worldwide. The ever increasing number of Skype users and the growing number of VoIP providers via the regular phone infrastructure pays tribute to the success of VoIP. The eclipse platform, as an open application framework, should provide the necessary infrastructure to allow an easy integration of such services. Although the Eclipse Communication Framework (ECF) is already providing a set of interfaces to support voice communication via its call api, a concrete implementation is still missing… up until now.
The goal of this project is to create a working implementation of the ECF call api and to make use of it in a softphone application. This softphone can be realized as an Eclipse plugin or a standalone RCP application. Due to the usage of the ECF, other components like buddy lists, presents detection, file transfer etc. are already available and can be incorporated via the ECF apis.
The important part of the project is the implementation of the call api. There are various VoIP protocols in usage nowadays. From SIP to the proprietary Skype, there are many ways to transmit voice from A to B. One protocol which seems to be of special interest is the Jingle Protocol (http://www.xmpp.org/extensions/xep-0166.html). Jingle allows negotiating various means of transportation for a multitude of media types, including voice and video data. The protocol is adapted by several applications like Google Talk or Asterisk. It is based on the XMPP standard, which is already partially implemented in the ECF apis. XMPP itself originated from the jabber project and is widely accepted as an open standard for instant messaging.
In order to use the Jingle protocol, it is intended to make use of the Smack API (http://www.igniterealtime.org/projects/smack/). Smack provides an implementation of the XMPP protocol and the Jingle extension. It is available under the Apache license.
To resume… The project will consist of two parts: Number one is to wrap the functionality of the Smack API via the ECF call api. Whereas step two involves creating a softphone application, which utilizes the call api. Since the call api is an abstraction on a concrete protocol implementation, the Jingle implementation could easily be replaced by any other protocol like Skype, SIP or Asterisk.
The development will be logged on a seperate site over here.
Finishing of the google summer of code 2007 the following code has been developed: http://google-summer-of-code-2007-eclipse.googlecode.com/files/Moritz_Post.tar.gz
The UI elements are just a first draft and not fully functional.
The only steps required is to drop the provided plugins into the workspace or to make the available in the run configurations. You thereby replace existing once and it is recommended to backup those up beforehand. Namely the
- org.eclipse.ecf.telephony.call.ui plugin.
Additionally it is required to install the JMF library for the target platform: JMF download.
Running the Code
Launch a runtime configuration with the plugins enabled and than connect to an XMPP server via the drop down action in the main toolbar (in the communication perspective). Right-click a contact in the roster to initiate a call with that client.