100 likes | 118 Views
This article explores the programming mechanisms and APIs available for developing services using the Session Initiation Protocol (SIP). It discusses the SIP Call Processing Language, Common Gateway Interface, Java Servlets, and the JAIN™ SIP API. The article highlights the benefits and considerations of each mechanism and provides relevant references for further reading.
E N D
SIP Programming : • SIP has texture encoding feature.[1] • SIP allows third parties or user to program • SIP follows HTTP programming model
Programming Mechanisms: • In order to develop services programmers needs APIs • Three mechanisms suggested in IETF:[2] • SIP Call Processing Language ( SIP – CPL ) • SIP Common Gateway Interface ( SIP – CGI ) • SIP Servlet • Other efforts • Parlay • JAIN™
Call Processing Language (CPL) : • Designed by the IETF to support sophisticated telephony services • May be used by both SIP or H.323. • XML based scripting language for describing controlling call services[3] • SimpleSyntax • Extendible • Easily edited by GUI tools • Scripts runs on network SIP signaling server to create end user services • Lightweight CPL interpreter is need to parser & validate scripts.
CPL Example : A simple script that blocks anonymous callers[4]; <?xml version="1.0" ?><!DOCTYPE cpl PUBLIC "-//IETF//DTD RFCxxxx CPL 1.0//EN" "cpl.dtd"><cpl> <incoming> <address-switch field="origin" subfield="user"> <address is="anonymous"> <reject status="reject" reason="I don't accept anonymous calls" /> </address> </address-switch> </incoming></cpl>
Common Gateway Interface (CGI) : • Almost identical to HTTP CGI [5] • Language independent ( Perl, Tcl, C, C++, ... ) • Any binary may be executed as a separate program • Suitable for services that contains substantial web content • Passes message parameters through environmental variables to a separate program. • More flexible but more risky • Feb. 1, 2001: RFC 3050 (Common Gateway Interface for SIP) published[6]
Java Servlets : • Similar to HTTP servlets • Instead of using a separate process, messages are passed to a class • The class runs within a JVM (Java Virtual Machine) on server • Security provided by Java • Portable between OSs & servers
JAIN™ SIP API: • Low level API that maps to IETF - RFC 2543 • Interfaces for services across circuit switched and packet networks • Three major objectives : • Service Portability – Write Once Run Anywhere • Network Converges – Any underlying network architecture IP, ATM,Wireless,... • Service Provider Access by Anyone
JAIN™ SIP API: ( Cont.) • Three SIP APIs under JAIN initiative; • JAIN™ SIP API (JSR 32) : • Low level API for almost any signaling protocol ( SIP, H.323, ... ) • Requires extensive knowledge of SIP. • Avaliable at Final Release, http://jcp.org/jsr/stage/final.jsp • JAIN™ SIP Lite : • High Level API for rapid application development • Especially User Agent development • Under development , http://jcp.org/jsr/detail/125.jsp • SIP Servlets : [7] • API for SIP servlets • Under development, http://jcp.org/jsr/detail/116.jsp
Conclusion: • As the arena become more & more crowded for service providers, the choice of the appropriate service creation mechanism inherently follows HTTP service creation mechanisms and highly depends on different scenarios where security,portability and performance have different roles of importance.
References : • [1],[5] Sisalem D.,Kuthan J., Understanding SIP , Http://iptel.org/sip/siptutorial.pdf • [2] Programming SIP, http://www.sipcenter.com/aboutsip/progsip.htm • [3] Rosenberg D.J, Shockey R., The Session Initiation Protocol (SIP) , ComputerTelephony , June 2000 • [4] A Spotlight on Call Processing Language, http://www.ubiquity.net/cpl.html • [6] News, http://www.cs.columbia.edu/~hgs/sip/ • [7] Java Specification Request,JSR 116,SIP Servlet API,http://jcp.org/jsr/detail/116.jsp