Programmable End System Services Using SIP
E N D
Presentation Transcript
Programmable End System Services Using SIP Xiaotao Wu, Henning Schulzrinne 2nd New York Metro Area Networking Workshop September 3rd, 2002
Today’s Endpoints • Processing ability • Graphical rendering • Storage capacity • Converged information • Varied platforms • Phones • PCs • PDAs
SIP promotes end system services • 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 service interfaces <?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> @ECHO OFF IF %SIP_FROM%==sip:wxt@cs.columbia.edu GOTO BLOCK GOTO EXIT :BLOCK echo SIP/2.0 486 Busy :EXIT • CPL • SIP CGI • SIP Servlet public boolean doInvite(SipRequest req) { SipResponse res = req.createResponse(); res.setStatus(486); res.send(); return true; }
#! /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"; }
Describe end system services • 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. End System Services End System Service Language
End system service languages • 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 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 example • <esml name="online_call" • require="generic presence ui"> • <notification status="online" • priority="0.5"> • <address-switch field="origin"> • <address is="xyz@foo.com"> • <call /> • <alert sound=“foo.au" • text="Calling xyz@foo.com" /> • </address> • </address-switch> • </notifying> • </esml>
SIP user agent SIP Device agent Presence agent Basic user agent presence Generic Media UI x10 vcr ESML packages im email web calendar conference
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>
Compare to other languages • CPL • SCML • CCXML • CPML, TML, CallXML
Conclusion and future work • Service partition between end system services and network services • Feature interaction
Thank you! The End.