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