+ All Categories
Home > Documents > Programming IP Telephony Services with the Call Processing ...

Programming IP Telephony Services with the Call Processing ...

Date post: 12-Jan-2017
Category:
Upload: buikhanh
View: 217 times
Download: 3 times
Share this document with a friend
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
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


Recommended