java voice mail with jslee, sip & rtp ivelin ivanov
TRANSCRIPT
Agenda
• Review Application Requirements
• Evaluate Technology Alternatives
• Review Design
• Demo
• Code Review
• Q&A
Requirements
• Functional– Manage subscribers– Record voice messages to subscribers
• System– Support standard SIP/RTP clients– Web based admin interface– All Java (d’uh, this is the Java track)– Fully functional demo on one laptop– Scale to millions of users without code
redesign
Use CaseOperator
Subscriber A
User provisioning
[http]
Calling Subscriber B (fwd to vmail)
[SIP, RTP]
Call SequenceRTP Server
RTP sessionREGISTER
SIP Server
SIP dialog
INVITE
TRYING
RINGING
OK + SDP (RTP Session Info)
New Session
RTP Session Info
ACK
BUY
OK
VMail Greeting
Record message
Technology Alternatives (1)
• Option 1:– Servlet container
– JSIP library
– JMF library
• Option 1 issues:– Hard to associate SIP Dialog with RTP session
– Explicit thread pooling
– Explicit logic for garbage collection of stale calls
– Explicit transaction demarcation
Technology Alternatives (2)
• Option 2:– JSLEE container
– JSIP Resource Adaptor
– Media Resource Adaptor
• Option 2 advantages:– Service Building Block (SBB) construct
– Activity primitive. Easy to associate SBB entitiy with related SIP Dialog and RTP session
– Container managed thread pooling
– Container managed garbage collection of stale calls
– Container managed transactions
JSLEE component interaction
SIP
RTP
SBBSBB
- An SBB entity attached to 2 related activities:
SIP Dialog and RTP Session
- Asynchronous event channels
-Container assures thread isolation of
independent simultaneous calls
Low level protocol stack
Java SIP API (JSIP, JSR 32)
Java VM
javax.sip.request.INVITE
SipProvider
JSIP
java.net.*
OS level
Network Socket
SipListener
Custom Application
javax.sip.request.OK
SIP INVITE
From: Alice
To: Bob
SIP OK
response
= sync call= async
Java VM
JSLEE
JSLEE Resource Adaptor Architecture
SIP INVITE
From: Alice
To: Bob
javax.sip.request.INVITEJSIP
java.net.*
SipListener
Resource Adaptor
javax.sip.request.OK
SIP Proxy
SBB
Forwarding
SBB
Call Blocking
SBB
SIP Dialog Activity Context
Event Router
javax.sip.request.OK
javax.sip.request.INVITE
SipProvider
SIP OK
response
= sync call= async
Create Activity
Initial Events
Voice Mail
SBB
SIP Dialog Activity Context (one instance per SIP Dialog)
Event Router
•Bob
•Charlie
Service Profiles
Is initial event?
1) SIP INVITE
From: Alice
To: Bob
2) SIP UPDATE
From: Alice
To: Bob
Is subscriber?
Q&A
• http://www.mobicents.org
• http://wiki.java.net/bin/view/Communications/MobicentsExamples