A SIP-based Programming Framework for Advanced Telephony

for Advanced Telephony Applications. Selection of Appropriate Services. 17. Service. Registration Server. (1) super(uri, Owner.ADMIN, Location.MeetingRoom).
4MB taille 2 téléchargements 250 vues
A SIP-based Programming Framework for Advanced Telephony Applications

Wilfried Jouve1, Nicolas Palix1, Charles Consel1, Patrice Kadionik2 1 INRIA

2 University

Bordeaux Phoenix Group

of Bordeaux IMS

IPTCOMM’08

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

Our Approach

Goal: Support the development of advanced telephony applications

A 2-step approach to developing applications Specifying the target application area Developing applications in a high-level and dedicated programming framework

SIP in dynamic and heterogeneous environments 2

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

New Requirements From Phones...

Phone

3

A SIP-based Programming Framework for Advanced Telephony Applications

New Requirements ...To Hardware Services...

Introduction

Location sensor

3

Phone

Screen

PDA

A SIP-based Programming Framework for Advanced Telephony Applications

New Requirements ...To Software Services

Introduction

Web Services

Calendar

Location sensor

3

Phone

Manager

Screen

PDA

A SIP-based Programming Framework for Advanced Telephony Applications

New Requirements ...To Software Services

Introduction

Web Services

Calendar

Location sensor

3

Phone

Manager

Screen

PDA

A SIP-based Programming Framework for Advanced Telephony Applications

New Requirements ...To Software Services

Introduction

Web Services

Calendar

Location sensor

3

Manager

Screen

Phone

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

A 2-Step Approach Area Expert

4

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

A 2-Step Approach Area Expert

phone

screen agenda

application location system

4

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

A 2-Step Approach Area Expert

4

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

A 2-Step Approach Area Expert

conformance Driver developers

4

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

A 2-Step Approach Area Expert

conformance

conformance

Driver developers

Application developers

screen phone

application location sensor

4

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

5

Abstracting the Complexity of Underlying Technologies

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

Abstracting the Complexity of Underlying Technologies

X10, Web Services, RTSP, HTTP, SIP... UPnP, SLP, SOAP, SDP, Presence...

5

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

Abstracting the Complexity of Underlying Technologies

Application Logic Service Interaction

5

Service Discovery

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

Abstracting the Complexity of Underlying Technologies

Application Logic SIP

5

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

Abstracting the Complexity of Underlying Technologies

Application Logic SIP

5

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

Abstracting the Complexity of Underlying Technologies

Application Logic

SIP

6

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

Abstracting the Complexity of Underlying Technologies

Application Logic

SIP APIs (JAIN-SIP)

6

} }

Application developers

Driver developers

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

Abstracting the Complexity of Underlying Technologies A DiaSpec Specification

Area Expert

Area Compiler

Application Logic

SIP APIs (JAIN-SIP)

6

} }

Application developers

Driver developers

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

Abstracting the Complexity of Underlying Technologies A DiaSpec Specification

Area Expert

Area Compiler

{

DiaGen Programming Framework

Application developers

SIP APIs (JAIN-SIP)

6

}

Driver developers

A SIP-based Programming Framework for Advanced Telephony Applications

Introduction

Abstracting the Complexity of Underlying Technologies A DiaSpec Specification

Area Expert

Area Compiler

Application Logic

{

}

Application developers

}

Driver developers

DiaGen Programming Framework

SIP APIs (JAIN-SIP)

6

DiaSpec Specification Capturing Application Area Features

A SIP-based Programming Framework for Advanced Telephony Applications

Illustration

DiaSpec Specification

Services

Interaction mode Command

Event

Session

Attributes

Invokee Invoker Consumer Producer Invitee Initiator Binder

Interfaces

8

Exchanged Data Types

A SIP-based Programming Framework for Advanced Telephony Applications

Illustration

DiaSpec Specification

Service Manager Location Virtual Manager Phone Pending Call Manager

Database

Device

Services

Sensor

Actuator

Location Light Light Sensor Sensor

Calendar Contact

Phone

Screen

PDA

Computer Screen

Interaction mode Command

Event

Session

Attributes

Invokee Invoker Consumer Producer Invitee Initiator Binder

Interfaces

8

Exchanged Data Types

A SIP-based Programming Framework for Advanced Telephony Applications

Illustration

DiaSpec Specification

Service Manager Location Virtual Manager Phone Pending Call Manager

Services

Sensor

Actuator

Location Light Light Sensor Sensor

Interaction mode Event

8

Computer Screen

Attribute Session

Invokee Invoker Consumer Producer Invitee Initiator Binder

Interfaces

Calendar Contact

Phone

Screen

PDA

Command

Database

Device

Attributes

Autonomy Audio Priority Location Owner Capacities

Exchanged Data Types

A SIP-based Programming Framework for Advanced Telephony Applications

Illustration

DiaSpec Specification

Service Manager Location Virtual Manager Phone Pending Call Manager

Database

Device

Services

Sensor

Actuator

Location Light Light Sensor Sensor

Calendar Contact

Phone

Screen

PDA

Computer Screen

Interaction mode Command

Event

Attribute

Attributes

Session

Invokee Invoker Consumer Producer Invitee Initiator Binder

Interface

Interfaces

Pending Call DisplayMessage GetPresence Management

Autonomy Audio Priority Location Owner Capacities

Exchanged Data type Message

Exchanged Location Presence Luminosity Data Types

Pending Calendar Desk Call Event Presence

8

Meeting Presence

Audio

A SIP-based Programming Framework for Advanced Telephony Applications

DiaSpec Specification

Illustration - Textual Excerpt

service Service(Owner) { } service Device(Location) extends Service { } service Calendar() extends Database { provides event Info } service Phone(AudioCapacities) extends Device { provides session Audio requires session Audio } service Manager(Priority) extends Service { provides command StartStop }

9

service PendingCallManager() extends Manager { requires event DeskPresence requires command DisplayPendingCall provides command PendingCallManagement binds session Audio }

A SIP-based Programming Framework for Advanced Telephony Applications

DiaSpec Specification

Illustration - Textual Excerpt

service Service(Owner) { } service Device(Location) extends Service { } service Calendar() extends Database { provides event Info } service Phone(AudioCapacities) extends Device { provides session Audio requires session Audio } service Manager(Priority) extends Service { provides command StartStop }

9

service PendingCallManager() extends Manager { requires event DeskPresence requires command DisplayPendingCall provides command PendingCallManagement binds session Audio }

A SIP-based Programming Framework for Advanced Telephony Applications

DiaSpec Specification

Illustration - Textual Excerpt

service Service(Owner) { } service Device(Location) extends Service { } service Calendar() extends Database { provides event Info } service Phone(AudioCapacities) extends Device { provides session Audio requires session Audio } service Manager(Priority) extends Service { provides command StartStop }

9

service PendingCallManager() extends Manager { requires event DeskPresence requires command DisplayPendingCall provides command PendingCallManagement binds session Audio }

A SIP-based Programming Framework

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

DiaGen Programming Framework A DiaSpec Specification

Area Expert

Area Compiler

Application Logic

{

DiaGenApplication Programming Framework Logic

SIP 11

}

Application developers

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Mapping DiaSpec into SIP

DiaSpec requirements An extensible message format Selection of appropriate services Rich interaction model

A gap between SIP and DiaSpec

12

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Message Formats

DiaSpec requirements An extensible message format Selection of appropriate services Rich interaction model

A gap between SIP and DiaSpec Numerous proposals (SDP, CPIM, DMP...) Heterogeneous Numerous APIs to manipulate these formats

Hardly extensible But a constant flow of new services 13

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Message Formats

Our solution SOAP message format A single extensible widely-used message format

Programmers directly rely on DiaSpec Java data types Transparent (un)marshalling of attributes and exchanged data

14

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Mapping DiaSpec into SIP

DiaSpec requirements An extensible message format Selection of appropriate services Rich interaction model

A gap between SIP and DiaSpec A too basic registration process Attributes and functionalities not described

15

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Selection of Appropriate Services

Framework

DiaSpec

Service Registration

16

service Service(Owner) { } service Device(Location) extends Service { } service LocationSensor() extends Device { provides event Location }

class MyLocationSensor extends LocationSensor { LocationSensor(String uri) { super(uri, Owner.ADMIN, Location.MeetingRoom) [...] } [...] }

Location sensor

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Selection of Appropriate Services

Service Registration in SIP

Location sensor

Service

(1)

Registration Server REGISTER

OK OPTIONS

OK [SOAP]

17

(1) super(uri, Owner.ADMIN, Location.MeetingRoom)

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Selection of Appropriate Services

Service Lookup

Framework

Service Class

18

Properties

class MyLocationManager extends LocationManager { [...] LocationSensorFilter filter = LocationSensor.getFilter(); filter.location.setValue(Location.BuildingA); List myLocSensors = LocationSensor.getServices(filter); for (LocationSensor ls : myLocSensors) { // subscription } [...] }

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Selection of Appropriate Services

Service Lookup

Framework

Service Class

18

Properties

class MyLocationManager extends LocationManager { [...] LocationSensorFilter filter = LocationSensor.getFilter(); filter.location.setValue(Location.BuildingA); List myLocSensors = LocationSensor.getServices(filter); for (LocationSensor ls : myLocSensors) { // subscription } [...] }

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Selection of Appropriate Services

Service Lookup

Framework

Service Class

18

Properties

class MyLocationManager extends LocationManager { [...] LocationSensorFilter filter = LocationSensor.getFilter(); filter.location.setValue(Location.BuildingA); List myLocSensors = LocationSensor.getServices(filter); for (LocationSensor ls : myLocSensors) { // subscription } [...] }

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Selection of Appropriate Services

Service Lookup

Framework

Service Class

18

Properties

class MyLocationManager extends LocationManager { [...] LocationSensorFilter filter = LocationSensor.getFilter(); filter.location.setValue(Location.BuildingA); List myLocSensors = LocationSensor.getServices(filter); for (LocationSensor ls : myLocSensors) { // subscription } [...] }

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Selection of Appropriate Services

Service Lookup

Framework

Service Class

18

Properties

class MyLocationManager extends LocationManager { [...] LocationSensorFilter filter = LocationSensor.getFilter(); filter.location.setValue(Location.BuildingA); List myLocSensors = LocationSensor.getServices(filter); for (LocationSensor ls : myLocSensors) { // subscription } [...] }

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Selection of Appropriate Services

Service Lookup in SIP

Location manager

Service

(1)

Registration Server MESSAGE[SOAP]

OK[SOAP]

(1) LocationSensor.getServices(filter); 19

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Mapping DiaSpec into SIP

DiaSpec requirements An extensible message format Selection of appropriate services Rich interaction model

A gap between SIP and DiaSpec No RPC-like mechanism Restricted use of event and session

20

A SIP-based Programming Framework for Advanced Telephony Applications

Rich Interaction Model

Programming Framework

Programming Command

Invoker

Framework

DiaSpec

Call manager

Invokee Screen

service CallManager() extends Manager { requires event DeskPresence requires command DisplayPendingCall provides command PendingCallMng binds session Audio }

service Screen() extends Device { requires command PendingCallMng provides command DisplayPendingCall }

public class MyCallMng extends CallManager { [...] myScreen.display(pendingCall); [...] }

public class MyScreen extends Screen { [...] public void display(PendingCall call) { // TODO Auto-generated by ECLIPSE } [...] }

21

A SIP-based Programming Framework for Advanced Telephony Applications

Rich Interaction Model

Programming Framework

Programming Command

Invoker

Framework

DiaSpec

Call manager

Invokee Screen

service CallManager() extends Manager { requires event DeskPresence requires command DisplayPendingCall provides command PendingCallMng binds session Audio }

service Screen() extends Device { requires command PendingCallMng provides command DisplayPendingCall }

public class MyCallMng extends CallManager { [...] myScreen.display(pendingCall); [...] }

public class MyScreen extends Screen { [...] public void display(PendingCall call) { // TODO Auto-generated by ECLIPSE } [...] }

21

A SIP-based Programming Framework for Advanced Telephony Applications

Rich Interaction Model

Programming Framework

Programming Command

Invoker

Framework

DiaSpec

Call manager

Invokee Screen

service CallManager() extends Manager { requires event DeskPresence requires command DisplayPendingCall provides command PendingCallMng binds session Audio }

service Screen() extends Device { requires command PendingCallMng provides command DisplayPendingCall }

public class MyCallMng extends CallManager { [...] myScreen.display(pendingCall); [...] }

public class MyScreen extends Screen { [...] public void display(PendingCall call) { // TODO Auto-generated by ECLIPSE } [...] }

21

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Rich Interaction Model

Command in SIP

Call manager

Screen

Invoker

Invokee

(1)

MESSAGE [SOAP]

(2) OK [SOAP]

(1) myScreen.display(pendingCall); (2) void display(PendingCall call) {...} 22

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Rich Interaction Model

Command in SIP

Call manager

Screen

Invoker

Invokee

(1)

MESSAGE [SOAP]

(2) OK [SOAP]

(1) myScreen.display(pendingCall); (2) void display(PendingCall call) {...} 22

Missed Call

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Rich Interaction Model

Programming Event

Consumer DiaSpec

Location sensor

service LocationManager() extends Manager { requires event Location provides command GetPresence provides session Presence provides event Presence }

service LocationSensor() extends Device { provides event Location }

Framework

Location manager

Producer

public class MyLocationMng extends LocationManager { [...] myLocationSensor.subscribe(this); [...] public void receive(Location loc, Service s) { // TODO Auto-generated by ECLIPSE } }

public class MyLocationSensor extends LocationSensor { [...] publish(new Location(People.BOB, Room.MEETINGROOM)); [...] }

23

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Rich Interaction Model

Programming Event

Consumer DiaSpec

Location sensor

service LocationManager() extends Manager { requires event Location provides command GetPresence provides session Presence provides event Presence }

service LocationSensor() extends Device { provides event Location }

Framework

Location manager

Producer

public class MyLocationMng extends LocationManager { [...] myLocationSensor.subscribe(this); [...] public void receive(Location loc, Service s) { // TODO Auto-generated by ECLIPSE } }

public class MyLocationSensor extends LocationSensor { [...] publish(new Location(People.BOB, Room.MEETINGROOM)); [...] }

23

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Rich Interaction Model

Programming Event

Consumer DiaSpec

Location sensor

service LocationManager() extends Manager { requires event Location provides command GetPresence provides session Presence provides event Presence }

service LocationSensor() extends Device { provides event Location }

Framework

Location manager

Producer

public class MyLocationMng extends LocationManager { [...] myLocationSensor.subscribe(this); [...] public void receive(Location loc, Service s) { // TODO Auto-generated by ECLIPSE } }

public class MyLocationSensor extends LocationSensor { [...] publish(new Location(People.BOB, Room.MEETINGROOM)); [...] }

23

A SIP-based Programming Framework for Advanced Telephony Applications

Programming Framework

Rich Interaction Model

Programming Event

Consumer DiaSpec

Location sensor

service LocationManager() extends Manager { requires event Location provides command GetPresence provides session Presence provides event Presence }

service LocationSensor() extends Device { provides event Location }

Framework

Location manager

Producer

public class MyLocationMng extends LocationManager { [...] myLocationSensor.subscribe(this); [...] public void receive(Location loc, Service s) { // TODO Auto-generated by ECLIPSE } }

public class MyLocationSensor extends LocationSensor { [...] publish(new Location(People.BOB, Room.MEETINGROOM)); [...] }

23

A SIP-based Programming Framework for Advanced Telephony Applications

Rich Interaction Model

Programming Framework

Event in SIP

Location sensor

Location manager

Consumer

(1)

Notification Server

Producer

SUBSCRIBE [SOAP] OK PUBLISH [SOAP]

(3)

24

NOTIFY [SOAP]

(1) producer.subscribe(this); (2) publish(bobsLocation); (3) void receive(Location loc, Service s) {...}

(2)

A SIP-based Programming Framework for Advanced Telephony Applications

Rich Interaction Model

Programming Framework

Programming Session

Binder

Framework

DiaSpec

CallManager

service CallManager() extends Manager { requires event DeskPresence requires command DisplayPendingCall provides command PendingCallManagement binds session Audio }

Invitee Phone

service Phone(AudioCapacities) extends Device { provides session Audio requires session Audio }

public class MyCallMng extends CallManager { public class MyPhone extends Phone { Phone phone1, phone2; [...] [...] public AudioSession connect(AudioSession s) AudioSession session = bind(phone1, phone2); { // TODO Auto-generated by ECLIPSE } [...] public void disconnect(AudioSession s) } { // TODO Auto-generated by ECLIPSE } public void play(AudioSession s) { // TODO Auto-generated by ECLIPSE } }

25

A SIP-based Programming Framework for Advanced Telephony Applications

Rich Interaction Model

Programming Framework

Programming Session

Binder

Framework

DiaSpec

CallManager

service CallManager() extends Manager { requires event DeskPresence requires command DisplayPendingCall provides command PendingCallManagement binds session Audio }

Invitee Phone

service Phone(AudioCapacities) extends Device { provides session Audio requires session Audio }

public class MyCallMng extends CallManager { public class MyPhone extends Phone { Phone phone1, phone2; [...] [...] public AudioSession connect(AudioSession s) AudioSession session = bind(phone1, phone2); { // TODO Auto-generated by ECLIPSE } [...] public void disconnect(AudioSession s) } { // TODO Auto-generated by ECLIPSE } public void play(AudioSession s) { // TODO Auto-generated by ECLIPSE } }

25

A SIP-based Programming Framework for Advanced Telephony Applications

Rich Interaction Model

Programming Framework

Programming Session

Binder

Framework

DiaSpec

CallManager

service CallManager() extends Manager { requires event DeskPresence requires command DisplayPendingCall provides command PendingCallManagement binds session Audio }

Invitee Phone

service Phone(AudioCapacities) extends Device { provides session Audio requires session Audio }

public class MyCallMng extends CallManager { public class MyPhone extends Phone { Phone phone1, phone2; [...] [...] public AudioSession connect(AudioSession s) AudioSession session = bind(phone1, phone2); { // TODO Auto-generated by ECLIPSE } [...] public void disconnect(AudioSession s) } { // TODO Auto-generated by ECLIPSE } public void play(AudioSession s) { // TODO Auto-generated by ECLIPSE } }

25

A SIP-based Programming Framework for Advanced Telephony Applications

Rich Interaction Model

Programming Framework

Session in SIP Phone

Call Manager

Invitee

Binder

(2)

INVITE [SOAP] OK [SOAP]

PDA

Invitee

(1) INVITE [SOAP] OK [SOAP] ACK

(3)

26

ACK [SOAP]

(1) bind(phone1, phone2) (2) AudioSession connect(AudioSession s) {...} (3) void play(AudioSession s) {...}

(2)

A SIP-based Programming Framework for Advanced Telephony Applications

Conclusion

Summary

A 2-step approach to developing applications Generated programming frameworks High-level programming support Automatically mapped into a SIP infrastructure

Leveraging SIP to extend its scope

27

A SIP-based Programming Framework for Advanced Telephony Applications

Perspectives

Conclusion

Being communication protocol agnostic: DiaSpec

DiaGen

Application Logic

{

DiaGen Programming Framework

SIP

28

}

Application developers

A SIP-based Programming Framework for Advanced Telephony Applications

Perspectives

Conclusion

Being communication protocol agnostic: DiaSpec

DiaGen

Application Logic

{ {

Application developers

DiaGen Programming Framework

Adaptation Layers

SIP RMI Simulation WS 28

} }

Communication Protocols

A SIP-based Programming Framework for Advanced Telephony Applications

Perspectives

Conclusion

Being communication protocol agnostic: DiaSpec

Questions? } DiaGen

Application developers

Application Logic

{ {

DiaGen Programming Framework

Adaptation Layers

SIP RMI Simulation WS 28

}

Communication Protocols