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 endpoints are more than IP-based POTS phones
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
Network Services v.s. End System Services End System Service Language 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 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>
ESML packages SIP user agent SIP im email web Device agent x10 vcr Presence agent presence Basic user agent Generic Media UI 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>
ESML Service Creation
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.