27
OpenSig ‘99 1 06/24/22 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October 15, 1999

Programming IP Telephony Services with the Call Processing

Embed Size (px)

Citation preview

Page 1: Programming IP Telephony Services with the Call Processing

OpenSig ‘99105/04/23

Programming IP Telephony Services

with the Call Processing Language (CPL)and CGI

Jonathan RosenbergBell Laboratories

October 15, 1999

Page 2: Programming IP Telephony Services with the Call Processing

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

Page 3: Programming IP Telephony Services with the Call Processing

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

Page 4: Programming IP Telephony Services with the Call Processing

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

email

Page 5: Programming IP Telephony Services with the Call Processing

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

Page 6: Programming IP Telephony Services with the Call Processing

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

Page 7: Programming IP Telephony Services with the Call Processing

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

Page 8: Programming IP Telephony Services with the Call Processing

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

Page 9: Programming IP Telephony Services with the Call Processing

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?

Page 10: Programming IP Telephony Services with the Call Processing

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

Page 11: Programming IP Telephony Services with the Call Processing

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)

Page 12: Programming IP Telephony Services with the Call Processing

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

Page 13: Programming IP Telephony Services with the Call Processing

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...

Page 14: Programming IP Telephony Services with the Call Processing

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

Page 15: Programming IP Telephony Services with the Call Processing

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)

Page 16: Programming IP Telephony Services with the Call Processing

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

Page 17: Programming IP Telephony Services with the Call Processing

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)

Page 18: Programming IP Telephony Services with the Call Processing

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

Page 19: Programming IP Telephony Services with the Call Processing

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

Page 20: Programming IP Telephony Services with the Call Processing

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

Page 21: Programming IP Telephony Services with the Call Processing

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.

Page 22: Programming IP Telephony Services with the Call Processing

OpenSig ‘992205/04/23

Example OutputINVITE sip:[email protected] SIP/2.0To: sip:[email protected]: sip:[email protected]: 10Cseq: 0 INVITEContent-Length: 0

PROXY_REQUEST_TO sip:[email protected] SIP/2.0Max-Forwards:

SIP/2.0 180 Ringing User

CGI_SCRIPT_COOKIE aoi988ans0naa SIP/2.0

Page 23: Programming IP Telephony Services with the Call Processing

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

Page 24: Programming IP Telephony Services with the Call Processing

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

Page 25: Programming IP Telephony Services with the Call Processing

OpenSig ‘992505/04/23

Example DAG

String Switchfield = “From”

Proxy [email protected]

Proxy tovoicemail

Proxy to555-1212

[email protected]

otherwise

No answer

Busy

Busy

No ans

werCall

Page 26: Programming IP Telephony Services with the Call Processing

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=“[email protected]”> <location url=“sip:[email protected]”> <proxy> <busy> <location url=“tel:5551212”> <proxy> <busy> <location url=“sip:[email protected]” 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>

Page 27: Programming IP Telephony Services with the Call Processing

OpenSig ‘992705/04/23

Conclusion• Services key• Programmability

serious problem• Two solutions

proposed:– SIP CGI– CPL