170 likes | 347 Views
CPL, Policies, Features, FET. Jacques Sincennes. Overview. Feature: service enhancement through subscription to added functionality. CPL allows users to customize the service via call setup instructions.
E N D
CPL, Policies, Features, FET Jacques Sincennes
Overview • Feature: service enhancement through subscription to added functionality. • CPL allows users to customize the service via call setup instructions. • FET target the specification of telephone systems, the definition of features, and user customization of the service on top.
CPL in a nutshell • CPL permits to customize the SIP/Proxy server by instructing it how to react under specific circumstances, during call setup. • It is designed to minimize the risks of misbehaviors caused by erroneous scripts (e.g. by forbidding recursion) and claims to be intended for general users (as opposed to designers).
CPL-Driven System User CPL SIP/Proxy Server Network
CPL Mode of Operation • intercept INVITE message • incoming and outgoing • follow decision tree, based on message and/or environment values • address/time/priority/string switches • execute action • proxy/redirect/reject • optionally handle action response • proxy -> busy | no-answer
CPL Locations CPL provides means of managing the list of target addresses through: • Static Location • statically specifying an address • Registration Lookup • fetch the current user's address • Source Lookup • (dynamically) obtain addresses
Address- and Time-Switched Features • Speed Call (address proxying) • e.g. invite(12) -> invite(555-1212) • Outgoing Call Screening (address rejection) • e.g. invite(1-976-555-1212) -> reject • Incoming Call Screening (address rejection) • e.g. invite(1-800-salesman) -> reject • Do Not Disturb (timely rejection) • e.g. time(lunch) -> reject("Gone to Lunch") • Night Service (timely proxying) • e.g. time(day) -> invite(01) | time(night) -> invite(02)
CPL Location Manipulations • Call Forward on Busy: • proxy -> busy -> location (ForwardToTel) -> proxy • Call Forward: • location (ForwardToTel) -> proxy • Hunt Groups: • location (SetOfNumbersToForwardTo) -> proxy (ordering=sequential, timeout) • Call Forking: • location (SetOfNumbersToForwardTo) -> proxy (ordering=parallel)
CPL Caveats • Location • sensitive lookups, storage • Presence • location and availability switches • In-Call Processing • Administrative operations
FET In a nutshell • FET are lower level than CPL: they aim at dealing with all system operations. Therefore, all of the current CPL functionality should be implementable by FET. • Not unlike CPL, FET permit to customize the SIP/Proxy server by instructing it how to react; this holds for call setup in particular, and for any other events in general.
FET-Driven system FET are executed as (or by) agents, and would share a similar view of the system to that of CPL. User FET SIP/Proxy Server Network
FET Mode of Operation • FET describe how the system reacts to the presence of events on the tuple-space • FET of Basic Service and Features are used to define user’s policies • User Agents implement the user's policies: • lookup the tuple-space for events related to user • execute the first FET that applies • repeat until no more event concerns user
Feature Execution Tree Pre-Cdn Action Pre-Cdn Action Post-Cdn
FET Format feature(Parameters, fet([Pre-Condition], [Action], [Post-Condition]) ). % caller goes off-hook (to initiate a call) and gets dial-tone basic( Self, fet( [status(Self, idle), action(Self, off_hook)], [status(Self, dial_tone)], [not(status(Self, idle)), not(action(Self, off_hook))] ) ).
FET of Features call_Forward(Self, From, To, fet([event(invite(From, Redirector, Self))], [event(invite(From, Self, To))], [not(event(invite(From, Redirector, Self)))] )). call_Screening(Source, Destination, fet([event(invite(Source, Redirector, Destination))], [event(busy(Destination, Source))], [not(event(invite(Source, Redirector, Destination)))])).
Policies using FET % time_period(0): ENTERPRISE forbids "luigi" to call "jack": policy(enterprise, FET) :- time_period(0), call_Screening(luigi, jack, FET). % time_period(1): "jack" forwards all incoming calls to "ruoshan": policy(jack, FET) :- time_period(1), call_Forward(jack, _From, ruoshan, FET).
Other Actors The enterprise, group and other entities may exist in the system as user's agents do, with varied priorities. System data FET has access to system data and is not limited to static data provided in the user's policy. Furthermore, it can also store data for later use (e.g. redial, recall). FET Caveats Recursion Due to its mode of operation, FET is sensitive to loops.