SIP Drafts: APIs and Programming Environments

The drafts and documents below provide APIs and programming environments suitable for SIP servers and user agents.

Session Processing Language (SPL)
A programming language for communications services, C or PHP-flavored in syntax
Using CSTA for SIP Phone User Agents (uaCSTA)
This Technical Report illustrates how CSTA can be used over a SIP session to control and observe SIP user agents (uaCSTA).

Common Gateway Interface for SIP
J. Lennox, H. Schulzrinne, J. Rosenberg
January 2001
In Internet telephony, there must be a means by which new services are created and deployed rapidly. In the World Wide Web, the Common Gateway Interface (CGI) has served as popular means towards programming web services. Due to the similarities between the Session Initiation Protocol (SIP) and the Hyper Text Transfer Protocol (HTTP), CGI is a good candidate for service creation in a SIP environment. This document defines a SIP CGI interface for providing SIP services on a SIP server.

PHP: Hypertext Preprocessor for SIP
S. Bhatia, A. Niemi
July 2001.
Due to the similarity of SIP and HTTP, many mechanisms that have been instrumental in the success of the World Wide Web have been replicated in SIP. PHP is a robust, cross-platform scripting language, which has been tailored to simplify and accelerate service development on the World Wide Web while empowering the developer with easy and yet reliable connectivity with all modern databases. This draft discusses the creation of SIP services using PHP.

SIP Servlet API Extensions
K. Peterbauer, J. Stadler, et al. February 2001.
This document improves and extends the SIP Servlet API defined in [2]. The SIP Servlet API defines a mechanism, which enables the encapsulation of service logic in so called SIP Servlets on the top of the protocol stack of a SIP Server. A very important point, which is not treated by [2] is the interoperability of services. [3] proposes a first approach to overcome this problem with a so called root servlet. In this Internet draft we define a more generic model to perform a combination or interaction of SIP Servlets. This makes the servlet approach to a very powerful alternative also in UMTS to connect SIP Proxy and Service Logic.

Root SIP Servlet
Mick O'Doherty. August 2000.
This Internet draft builds on and refines the SIP Servlet API defined in [3]. The SIP Servlet API defines an API for SIP Clients that allows them, via a SIP Servlet engine, present messages to 'Servlets' which can then interact with the message and the Client to change the behavior of the CIP Client. This document expands on this concept to: Suggest a standard way to identity or name SIP Servlets; Introduce the concept of a 'Root' SIP Servlet; Introduce some rules and mechanisms for SIP Servlet interaction; Suggest some Permission parameters for invoked SIP Servlets.

SIP Servlet Delivery
M. O'Doherty. August 2000.
This document defines an extension to the SIP protocol to combine some of the concepts introduced by the SIP Servlet API work and by Java Enhanced SIP. This document proposes a way to distribute SIP Servlets to SIP clients using the SIP protocol itself, including a way to authenticate the source of the Servlet. This may prove a useful mechanism for rolling out new services across multiple SIP clients. In addition it proposes a way for an originating SIP Client to specify in a message generated by it that it wants the message to be passed to a particular named SIP Servlet in the receiving SIP Client.

N. Deason
This document describes an extension to the Session Initiation Protocol (SIP). The purpose of this extension is to provide an extremely generic and extensible framework through which SIP nodes can request additional services from remote nodes. Examples of such nodes include SIP Network Servers, SIP User Agents, SIP/PSTN Gateways, SIP/H.323 Gateways and SIP Enabled Application Service Brokers. It also a candidate for providing a remote procedure call mechanism for Call Processing Language (CPL) scripts. This proposal is based upon a new SIP method, called SERVICE. The SERVICE method can carry a Simple Object Access Protocol (SOAP) message as it's payload. SOAP is a lightweight protocol for exchange of information in a decentralized, distributed environment. SOAP defines a framework for encoding request and response messages in XML. Typically SOAP uses HTTP as a transport protocol but this proposal enables SIP to be used instead.

Java enhanced SIP (JES)
Mick O'Doherty.
January 2001.
This document defines an extension to the SIP protocol to do a number of things - to extend SIP messages to carry Java applets or Java Mobile Agents, to define a Java SIP API which will allow the Java applet or Java Mobile Agent to interact with the receiving host system and to extend the SIP protocol client so that the Java applet or Java Mobile Agent is run before any other actions are taken on the receipt of a message by the receiving host SIP client.

The SIP Servlet API
A. Kristensen and A. Byttner. September 1999. A separate mailing list has been set up for discussions.

Java" SIP Servlet API Specification
Ajay P. Deo, Kelvin R. Porter, Mark X. Johnson. April 2000.

CPL: A Language for User Control of Internet Telephony Services
Jonathan Lennox, Henning Schulzrinne; November 2001
The Call Processing Language (CPL) is a language that can be used to describe and control Internet telephony services. It is designed to be implementable on either network servers or user agent servers. It is meant to be simple, extensible, easily edited by graphical clients, and independent of operating system or signalling protocol. It is suitable for running on a server where users may not be allowed to execute arbitrary programs, as it has no variables, loops, or ability to run external programs.

Transporting User Control Information in {SIP} {REGISTER} Payloads
Jonathan Lennox and Henning Schulzrinne; February 1999.
Several newly developed languages and interfaces, such as the CPL and SIP CGI, allow users or administrators to specify how Internet telephony servers should process calls. There needs to be a method of transporting scripts for such languages between a client and a server. This document proposes using the payload of SIP REGISTER messages, and their responses, as one method to transport them.

Call Processing Language Framework and Requirements
Jonathan Lennox, Henning Schulzrinne; July 1999.

Last updated by Henning Schulzrinne