Integrated telephony and the roadmap to Bayonne 3.0

I have noticed many of our sister free software projects have recently incorporated features commonly associated with Bayonne. Asterisk 1.4, for example, introduces a native scripting language. The excellent community fork of Asterisk, OpenPBX, had planned to use embedded io for this purpose. FreeSwitch, another very interesting project, is looking at adding something like an external execute facility something like Bayonne's original tgi or Asterisk's later agi. While we have had neither time, facilities, nor resources available to focus on fancy new drivers or protocols for recent Bayonne releases, we have focused in one area which I believe is about the future, integrated telephony.

Integrated Telephony is about making telephony services seamlessly available both to users and other applications. There have been other efforts to introduce generic and open standards based computer telephony integration before. One such effort was NextPath's SCTP (Simple Computer Telephony Protocol), and some ideas found in it still exist, as part of SIP. Another effort was TOSI which we were looking to use originally in Bayonne. What these and other similar efforts had in common is that they focused on introducing entirely new protocols (most often over TCP) for telephony integration rather than making use of existing services.

In the proprietary software world, there are integration protocols such as CSTA. These were based on the idea of exposing eventing and call states in a common way. Unfortunately no vendor actually introduced these ideas in said common way, and the actual standards document to describe it are neither free, nor even comprehensible, given the vast size of that spec. Other solutions, such as Microsoft's TAPI and Novell's TSAPI, have focused on providing a documented public application interface to hide proprietary and undisclosed backend implementations. The same approach is used in JTAPI.

Given that we are talking about integrated telephony for free software, we do not have reasons for nor desire to introduce or support undocumented or source secret back-end protocols. Nor do I think we should introduce new protocols where existing and well understood protocols and services may already exist. Our approach to achieving integrated telephony is founded upon three simple ideas: the use of fully standard xmlrpc as a foundation for exposing telephony services and functionality; the use of XML network eventing; and, the application of basic http to transport bulk a/v data between applications and the telephony server. Together these allow one to create new kinds of telephony integrated applications, whether programming applets for the desktop that show incoming callers or web services and hosted applications which make use of telephony in complex and interesting ways.

An example of web hosted integrated telephony could be to introduce telephony services to SQL Ledger. While it may be nice to add the basic ability to click on telephone numbers and have your customers dialed, I think it would also be interesting and useful to have a contacts icon next to the number which can launch a java applet to record the customer's name and post it back into the telephony server, so that one can use it for example in splash calling announcements at pickup or for customer service agents who might be on headsets, or use a frame and some javascript to provide event notification of new callers that include SQL-Ledger's existing customer meta-data. It is in these kinds of seamless ways that I believe we can finally move from classical ideas like click-to-dial services, and from proprietary back-end protocols used by things like Mircosoft Windows TAPI, to common and open standards which can support integrated telephony for both desktop clients and web hosted applications.

A side benefit is of course being able to use these same methods for telephony management and control applications. With the recent freeing of Java, I am in particular interested in developing a Java version of our original Bayonne1 network operations center monitor, sitemon. We may look at doing some fun and useful things, like introducing a gnome applet to alert you about incoming calls and voice mail. Integrated telephony using open standards and protocols is just one of several things planned for the 3.0 release of GNU Bayonne, and in fact is already initially available in the current 2.3 release series. However, I think it is our most important and represents one of the reasons why I think working in the free world is often so much better than working in the proprietary one.


Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice is preserved.