+ All Categories
Home > Documents > OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL)...

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

Date post: 31-Mar-2015
Category:
Upload: terrance-crofoot
View: 215 times
Download: 1 times
Share this document with a friend
Popular Tags:
27
OpenSig ‘99 1 06/26/22 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October 15, 1999
Transcript
Page 1: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

OpenSig ‘99104/11/23

Programming IP Telephony Services

with the Call Processing Language (CPL)and CGI

Jonathan Rosenberg

Bell LaboratoriesOctober 15, 1999

Page 2: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 3: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 4: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 5: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 6: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 7: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 8: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 9: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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?

Page 10: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 11: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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)

Page 12: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 13: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 14: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 15: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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)

Page 16: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 17: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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)

Page 18: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 19: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 20: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 21: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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.

Page 22: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

OpenSig ‘992204/11/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: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 24: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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

Page 25: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

OpenSig ‘992504/11/23

Example DAG

String Switchfield = “From”

Proxy [email protected]

Proxy tovoicemail

Proxy to555-1212

[email protected]

otherwise

No answer

Busy

Busy

No an

swerCall

Page 26: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

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=“[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: OpenSig ‘99 1 8/20/2014 Programming IP Telephony Services with the Call Processing Language (CPL) and CGI Jonathan Rosenberg Bell Laboratories October.

OpenSig ‘992704/11/23

Conclusion• Services key• Programmability

serious problem• Two solutions

proposed:– SIP CGI

– CPL


Recommended