Programming IP Telephony Services with the Call Processing ...

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

Transcript of Programming IP Telephony Services with the Call Processing ...

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