Implementing End-to-End SIP Vol 2: SIP Telephone Signaling ...
Programmable End System Services Using SIP
-
Upload
avram-carrillo -
Category
Documents
-
view
18 -
download
0
description
Transcript of Programmable End System Services Using SIP
Programmable End Programmable End System Services Using SIPSystem Services Using SIP
Xiaotao Wu, Henning Schulzrinne2nd New York Metro Area
Networking Workshop September 3rd, 2002
Today’s EndpointsToday’s Endpoints
Processing ability Graphical rendering Storage capacity Converged information Varied platforms
Phones PCs PDAs
SIP promotes end system SIP promotes end system servicesservices
Two SIP UAs can talk to each other directly.
Service-related information is explicitly contained in SIP headers.
The simplicity of SIP makes it easier for end system to perform services.
SIP endpoints are more than SIP endpoints are more than IP-based POTS phonesIP-based POTS phones
SIP service interfacesSIP service interfaces
CPL SIP CGI SIP Servlet@ECHO OFFIF %SIP_FROM%==sip:[email protected] GOTO BLOCKGOTO EXIT
:BLOCKecho SIP/2.0 486 Busy
:EXIT
<?xml version="1.0" ?> <!DOCTYPE cpl PUBLIC "-//IETF//DTD RFCxxxx CPL 1.0//EN" "cpl.dtd">
<cpl> <incoming> <address-switch field="origin" subfield="user"> <address is="anonymous"> <reject status="reject" reason="I don't accept anonymous calls" /> </address> </address-switch> </incoming></cpl>
public boolean doInvite(SipRequest req) { SipResponse res = req.createResponse(); res.setStatus(486); res.send(); return true;}
Service Moderator
SIP stack
SIP CGIengine
CPLengine
ESMLengine
Servicemodule
Hardcodedservices
CPLScripts
#! /usr/bin/env perl -w
# Reject messages whose 'From:' matches 'sip:hgs@' by # responding with 486 Busy, redirect the others to voicemail
print "SIP/2.0 100 Wait\n\n";
if (defined $ENV{SIP_FROM} && $ENV{SIP_FROM} =~ "sip:hgs@") { print "SIP/2.0 486 Don't disturb, I am working\n\n";} else { print "SIP/2.0 302 Redirect\n"; print "Contact: sip:xiaotaow\@voicemail.cs.columbia.edu\n\n";}
Service Moderator
SIP stack
SIP CGIengine
CPLengine
ESMLengine
Servicemodule
Hardcodedservices
Describe end system Describe end system servicesservices
Users pay for a bad service because they do not understand why it is not good
Techniques for network services are not good for end system services.
Network Services v.s. Network Services v.s. End System ServicesEnd System Services
Call
Connection Connection
Address1 Address2
Call
Address app1 app2 app3
a. Network service call model b. End system service call model
Network Services v.s. Network Services v.s. End System ServicesEnd System Services
Network services
End system services
Developer Experienced developers
Non-programmers
Media and other end system applications
Indirect control
Direct control
User interaction
Indirect Direct
End system service End system service languageslanguages Simple and easy to understand by non-
programmers Platform neutral Express user interactions Control media and other end system
applications Extensible to accommodate new services Restricted to certain class of services, not
necessarily Turing-complete
Endpoint Service Markup Endpoint Service Markup Language (ESML)Language (ESML)
XML based language Platform and underlying programming
language neutral Readable by non-programmers
Defined as an XML schema Derivation of new types Pre-defined types
Tree-like structure Use packages to group events and
actions
ESML exampleESML example <esml name="online_call" require="generic presence ui"> <notification status="online" priority="0.5"> <address-switch field="origin"> <address is="[email protected]"> <call /> <alert sound=“foo.au" text="Calling [email protected]" /> </address> </address-switch> </notifying> </esml>
Device agent
x10 vcr
SIP user agent
SIP
ESML packagesESML packages
Basic user agent
Generic Media UIPresence agent presence
conference
email web
calendar
im
Extend ‘general’ to ‘sip’Extend ‘general’ to ‘sip’ <xs:schema targetNamespace="esml:sip" xmlns:sip="esml:sip" xmlns:generic="esml:generic" .......... <xs:complexType name="IncomingType"> <xs:complexContent> <xs:extension base="generic:IncomingType"> <xs:attribute name="priority" type="PriorityType"/> .......... </xs:extension> </xs:complexContent> </xs:complexType>
ESML Service CreationESML Service CreationESML editorXML editor
service.esml(template)
Configurationeditor
service_foo.esml
ESMLdesigner
esml.xsl
XSLT
service.htmluser
translate.cgi
Compare to other Compare to other languageslanguages
CPL SCML CCXML CPML, TML, CallXML
Conclusion and future Conclusion and future workwork
Service partition between end system services and network services
Feature interaction