Post on 31-Mar-2015
OpenSig ‘99104/11/23
Programming IP Telephony Services
with the Call Processing Language (CPL)and CGI
Jonathan Rosenberg
Bell LaboratoriesOctober 15, 1999
OpenSig ‘99204/11/23
Services, services, services!• IP telephony cost
benefits to consumer declining
• Must be differentiators– higher quality?
– ease of use - UI
– new services and features
• Key is new services– integration services
• email, web, presence, IM, chat part of telephony
– control services• allow parameters to be
defined by consumer
– presentation services• new look and feel for old
friends
OpenSig ‘99304/11/23
Web Integration I• IWR - Interactive Web
Response– user calls a number– web page “answers”– use hyperlinks instead of
keypresses to navigate• much easier than voice
– final link makes phone call– VXML for non-PC access
• SIP Accept headers for MIME negotiations!
INVITE INVITE
redirection
Web Page
IWR Service
OpenSig ‘99404/11/23
Web Integration II• Web Agents
– A calls B
– B is not home
– After N rings, A gets web page instead
• possibly dynamically created for caller
– Web page lists• alternate contact
information and times– cell phone after 5pm
– email for non-urgent stuff
• URL for recording voicemail
• mailto URL for sending email
OpenSig ‘99504/11/23
Web Integration III• Shared Web Talking
– “web” another form of media stream - like audio and video
– Users can talk and simultaneously browse web
• Show each other pages• Discuss stocks• Read the paper
• Web Caller ID– When A calls B, B’s
homepage appears in A’s browser
– “homepage” dynamically generated for B perhaps
OpenSig ‘99604/11/23
Email• E-mail not good for
interactive communications
• Great for notification related services!– Type of information
unbounded
• Notification possibilities– call information
• call attempts
– subscriber information• monthly bill
– Messaging• emails contain URLs to
streaming media controls
OpenSig ‘99704/11/23
Presence• ICQ concept
– “buddy lists” and subscriptions
– know who is online
– normally for instant messages
• Big idea:
• Users can subscribe to each other, and learn:– when they pick up and hang
up the phone– when they are available to
talk or not– when they are in the office or
not• chair sensor!
– when the cell-phone is on or not
Presence propagates information abouta users willingness, ability, and desire to communicate using a variety of mediums
OpenSig ‘99804/11/23
Example Presence Service• Phone status subscription
– A subscribes to B’s phone
– When B’s phone state changes• hook state• willingness to talk
– Notification sent to A• email, instant message,
presence notification
– A can then• call B• unsubscribe to B
SUBSCRIBEhangup
NOTIFY
Presenceserver
OpenSig ‘99904/11/23
Challenge - Service Programmability
• Where do services live?
• What controls do the programs have?
• When can the program execute controls?
• What information are the programs provided?
• What resources do the programs have access to?
• Who can create the programs?
• How are the programs instantiated?
OpenSig ‘991004/11/23
Session Initiation Protocol• Invite user to sessions
• Basic signaling and session description (SDP)
• Allows to search for the user to be invited– Mobility
– Redirect/proxy
– Multicast
1
23
45
67
8
9
1011
12
SIP Client
SIP RedirectServer
SIP Proxy SIP Proxy
SIP Client(User AgentServer)
Location Service
RequestResponse
OpenSig ‘991104/11/23
Location of logic• SIP User Agents
– trust issues
– heterogeneity of platforms
– always on problem
• SIP servers– natural place for routing,
screening, pre-call services
• External devices to SIP servers– SCP/SSP model in IN
• safety, load balancing, good for third parties
• latency issues in IP
– what replaces INAP?• DIAMETER? COPS?
MGCP+?
• SIP (same syntax, wrong semantics)
OpenSig ‘991204/11/23
Nature of Control• High Level
– “forward”, “reject”, “redirect”
– common to all SP
• Medium Level– controlled device
abstracted to a model
– call models in IN
– control = goto state N
• Lowest level– full control - send
message X
• Not a single answer!– Fundamental tradeoffs:
• simplicity vs. flexibility
• safety vs. flexibility
OpenSig ‘991304/11/23
Nature of Information• Highest level
– “new call from Joe to Bob”
– can be SP independent
• Medium level– state machine
transitions + basic data (caller, callee, etc.)
• Lowest level– Full messages
• Same tradeoffs...
OpenSig ‘991404/11/23
Who can write them?• Creator determines
tradeoff operating point
• Three principals– Administrator
– Third party provider
– End user
• Lines can be blurry• Real operating point
depends largely on trust
OpenSig ‘991504/11/23
Other issues• Access to resources
– What else can program do besides control
– General purpose program - anything
– Java script - lots, but not everything
– configuration script - very limited
• How does it get there?– Linked in (API model)
• server must be taken down, recompiled
• not clean
– separate process (CGI)
– data read in (servlet model)
OpenSig ‘991604/11/23
Solution I:SIP CGI• Benefits of CGI as a
basis– programming language
independence
– full control over headers/messages
– leverage existing tools
– SIP similar to HTTP
• What’s different from HTTP CGI– persistence model
– multiple actions per script output
– response naming
– request naming
OpenSig ‘991704/11/23
Persistence Model• Transaction more complex
than request-response– proxying
– provisional responses
• Many points during transaction where script might execute
• “points” = message arrivals
• Script reinvoked on message arrivals
• State maintained by cookie– opaque to server
– passed from script to server and back on reinvocation
• Reinvocation points controllable (triggers)
OpenSig ‘991804/11/23
Multiple Actions• Many actions possible
– new request
– proxy request
– create response
– return response
– default
• Each action looks like a message in script output – parser reuse
• Multiplex actions using SIP message multiplexing rules
OpenSig ‘991904/11/23
Response Naming• Wish to return a response
received during previous invocation
• Server names responses
• Tell server to return named response– script need not store
message
1
2
3
2
OpenSig ‘992004/11/23
Request Naming• Multiple requests proxied
(forking)
• When response comes, script wants to match response to request
• Can use branch-id, but complex
• Solution: request-token
• Passed back to script when response comes
• Not same as response token: multiple responses per request
a
b
c
2
a
b
c
OpenSig ‘992104/11/23
Message Merging• When script outputs
response or proxied request– server computes default
resp/request
– header fields are merged with script output
• Merging– header in script replaces
header in message
– header in script with no value deletes header in message
• Simplifies life– Script ignores Via’s,
MaxForwards, etc.
OpenSig ‘992204/11/23
Example OutputINVITE sip:jdrosen@bell-labs.com SIP/2.0To: sip:jdrosen@bell-labs.comFrom: sip:machine@bell-labs.comCall-ID: 10Cseq: 0 INVITEContent-Length: 0
PROXY_REQUEST_TO sip:hgs@cs.columbia.edu SIP/2.0Max-Forwards:
SIP/2.0 180 Ringing User
CGI_SCRIPT_COOKIE aoi988ans0naa SIP/2.0
OpenSig ‘992304/11/23
Status• Draft 1 submitted to
IETF Dec98, draft 2 May 21, 1999
• No wg to do it– likely we will submit as
informational
• Two known implementations
OpenSig ‘992404/11/23
Solution II: CPL• Call Processing
Language– targeted for end user
service creation
– controls at high level
– information available at high level
– Describes basic service
• Model: SIB’s from IN– service = DAG
– Two types of nodes• action nodes: outputs =
results
• decision nodes: ouputs = possible values
– Safety
– Bounds on compute time
OpenSig ‘992504/11/23
Example DAG
String Switchfield = “From”
Proxy tojoe@att.com
Proxy tovoicemail
Proxy to555-1212
Boss@company.com
otherwise
No answer
Busy
Busy
No an
swerCall
OpenSig ‘992604/11/23
Representation• Use XML
– links = subtags– parameters = attributes– extensibility
mechanisms useful– easy transport– generation/parsing by
tools• GUI for creation
<call> <string-switch field=“from”> <string is=“boss@company.com”> <location url=“sip:joe@att.com”> <proxy> <busy> <location url=“tel:5551212”> <proxy> <busy> <location url=“sip:voicemail@att.com” link=“vm”> <proxy/> </location> </busy> <noanswer> <link id=“vm”/> </noanswer> </proxy> </location> </busy> <noanswer> <link id=“vm”/> </noanswer> </proxy> </location> </string> <otherwise> <link id=“vm”/> </otherwise> </string-switch></call>
OpenSig ‘992704/11/23
Conclusion• Services key• Programmability
serious problem• Two solutions
proposed:– SIP CGI
– CPL