Post on 12-Jan-2017
OpenSig ‘99105/04/23
Programming IP Telephony Services
with the Call Processing Language (CPL)and CGI
Jonathan RosenbergBell Laboratories
October 15, 1999
OpenSig ‘99205/04/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 ‘99305/04/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 ‘99405/04/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
OpenSig ‘99505/04/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 ‘99605/04/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 ‘99705/04/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 ‘99805/04/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 ‘99905/04/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 ‘991005/04/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 ‘991105/04/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 ‘991205/04/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 ‘991305/04/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 ‘991405/04/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 ‘991505/04/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 ‘991605/04/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 ‘991705/04/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 ‘991805/04/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 ‘991905/04/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 ‘992005/04/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 ‘992105/04/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 ‘992205/04/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 ‘992305/04/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 ‘992405/04/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 ‘992505/04/23
Example DAG
String Switchfield = “From”
Proxy tojoe@att.com
Proxy tovoicemail
Proxy to555-1212
Boss@company.com
otherwise
No answer
Busy
Busy
No ans
werCall
OpenSig ‘992605/04/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 ‘992705/04/23
Conclusion• Services key• Programmability
serious problem• Two solutions
proposed:– SIP CGI– CPL