listing supported methods. However, other extensions, such as reliable provi-
sional responses, need the Requireheader that lists required features of the
UAS. If the UAS does not support the feature, the request must be rejected
with a 420 Bad Extensionresponse.
Any extension to SIP that can be referenced using the Requireor Sup-
portedheader must be fully documented in an RFC, even if it is an informa-
tional and not a standards track document. This should prevent vendor
proprietary headers and methods from causing interoperability problems in
the SIP protocol. The use of headers and methods in SIP that have not been
standardized by the IETF is extremely dangerous to interoperability, because
these extensions may not be fully documented or may have been rejected by
the working group for good reasons. All standardized extensions to SIP must
describe how the extensions interact with elements that do not understand the
extension.
The next section will describe how the service or feature logic can be
scripted or programmed into SIP devices.
Service Creation Options
Just as there are a number of options where service logic can reside in a SIP net-
work, there are many options for the form of the service logic. These scripting
and programming options include Call Processing Language (CPL), SIP Com-
mon Gateway Interface (CGI), and SIP Servlets.
Call Processing Language
Call Processing Language (CPL) [2] was developed to allow nontrusted
end users to upload their services to SIP servers. CPL will be briefly intro-
duced in the following sections, which include some examples of services
created using CPL.
Introduction to CPL
CPL was adopted by the IETF IP telephony (IPTEL) working group (WG) as
executable code to be run on a SIP proxy server to implement services. CPL is
an official work item of the IPTEL WG. CPL is based on Extensible Markup
Language (XML) [3], which is a form of Standard Generalized Markup Lan-
guage (SGML) [4] developed by the W3C.
Readers familiar with Hypertext Markup Language (HTML) [5] who are
used to formatting web documents will recognize a similar structure. XML
tags have the form <tag>,which opens the tag, and then </tag>,which
142 Chapter 7