OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL)...

Post on 31-Mar-2015

215 views 1 download

Tags:

Transcript of OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL)...

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