Call Processing Language (CPL)

Call Processing Language (CPL)

RFC 2824: Call Processing Language (CPL) – see [RFC 2824] and [RFC 3880]

An XML-based scripting language for describing and controlling call services.

CPL is a very simple language without variables, loops, or the ability to run external programs! {Hence non-trusted end users can upload services to their SIP server} However, it has primitives for making decisions and acting based on call properties (e.g., time of day, caller, called party, …).

There is a Document Type Definition (DTD) “cpl.dtd” and strict parsing is done based on this DTD.

See also Chapter 13 of Practical VoIP: Using VOCAL [Dang 2002], this includes an example of developing a feature in CPL

See also the dynamic loading of CPL in [Oukhay 2006].

Thus any discrepancies between the script and the scheme are errors.

 


Slide Notes

J. Lennox and H. Schulzrinne, “Call Processing Language Framework and Requirements”, IETF RFC 2824, May

J. Lennox, X. Wu, and H. Schulzrinne, “Call Processing Language (CPL): A Language for User Control of Internet Telephony Services”, IETF RFC 3880, October 2004 http://www.ietf.org/rfc/rfc3880.txt Links to an external site.

Younes Oukhay, Context Aware Services, M.Sc. Thesis, Department of Communication Systems, Royal Institute of Technology (KTH), COS/CCS 2006-3, January 25, 2006 http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-92259 Links to an external site.

Luan Dang, Cullen Jennings, and David Kelly, Practical VoIP: Using VOCAL, O’Reilly, 2002, ISBN 0-596-00078-2.


Transcript

[slide329] So the call processing language is a very interesting language, it's not Turing-complete. So what does that mean? There are no branches or loops. So we can't take arbitrary amounts of time, we can only run and branch to another thing in the forward direction, we can never branch back. That means I can set up a primitive that says, if the call comes in, and it's between 8 o'clock in the morning and 1600 in the afternoon, send the invite off. If it's not, is it from one of my family? If so, deliver the call, otherwise send it to voicemail. And I can write that kind of branching structure, and because it is a finite execution time, the operator is willing to take my CPL and run it. So there's a thesis by Oukhay in 2006 about that.