Menu Zavrieť

Call Processing Language (CPL)

Je jazyk použivaný na popisovanie a ovládanie Internet Telephony. Môže byť implementovaný na sieťových serveroch alebo user agent serveroch. Je navrhnutý tak, aby bol jednoduchý, rozšíriteľný, ľahko editovateľný grafickým klientom a nezávislý na operačnom systéme alebo signálnom protokole. Je vhodný na beh na serveroch, kde užívatelia nemajú povolené spúšťať ich vlastné programy, nakoľko CPL nemá žiadne
premenné, cykly alebo schopnosť spúšťať externé programy. V prípade SIP (Session Initiation Protocol Servers(SIP servers)), môže byť použitý na špecifikovanie užívateľom definovaných preferencií (viď RFC3880).

Účelom CPL je byť dostatočne výkonný na popísanie veľkého množstva služieb a vlastností a sučasne byž dostatočne výkonovo limitovaný takže môže bezpečne bežať na Internet Telephony serveroch. Úmysel CPL jazyka je znemožniť užívateľom urobiť niečo komplexné (a nebezpečné) a zároveň mať schpnosť relatívne dobre popisovať Internet Telephony služby.

Výhodou tohoto jazyka je okrem iného možné určiť validitu a vhodnú formu už na úrovni modelu (je prehľadnejší ako samotne XML-ko) a skutočnosť, že jeho výstupom je štandardizované “XML-ko”. Teda na parsovanie výstupu je možné použiť rôzne voľne dostupné XML parsery. Jazyk je navrhnutý tak, aby boli servery po uploadnutí skryptu schopné ľahko určiť jeho validitu.

Štruktúra CPL skriptu

  1. Vysoko-úrovňová štruktúra

    CPL skript pozostáva z dvoch typov informácií: pomocné informácie o skripte a akcie vykonávanie hovoru.

  • Akcie vykonávanie hovoru vytvárajú štrukturovaný strom ktorý popisuje operácie a rozhodnutia, ktoré telefónny signalizačný server vykoná pri obdržaný udalosti prichádzajúceho hovoru. Sú tu dva typy akcií spracúvajúcich prichádzajúci hovor: Akcie najvyššej vrstvy a subakcie najvyššej vrstvy.
  • Akcie najvyššej vrstvy sú akcie, ktoré sú spúštané signalizačnými udalosťami, ktoré prídu na server. Dve z nich sú definované ako
    „incoming“ (akcia nastane vtedy keď, príde hovor, ktorého destinácia je vlastník skriptu) a „outgoing“ (akcia nastane vtedy keď, príde hovor, ktorého originátor je aj vlastník skriptu).
  • Subakcie najvyššej vrstvy sú akcie, ktoré môžu byť volané z iných akcií. CPL zakazuje aby subakcie boli volané rekurzívne.
  • Pomocná informácia je informácia, ktorá je nevyhnutná pre server aby spracoval skript správne, ale ktorá priamo neopisuje žiadnu operáciu alebo rozhodnutie. Momentálne nie je definovaná žiadna pomocná informácia, ale táto sekcia je rezervovaná pre použitie výnimiek.
  1. Abstraktná štruktúra akcie vykonávania hovoru

    Abstraktne je akcia vykonávania hovoru tvorená skupinou vrcholov, ktoré popisujú operácie (ktoré môžu byť vykonané) alebo rozhodnutia (ktoré môžu byť spravené). Vrchol môže obsahovať niekoľko parametrov, ktoré upresňujú konkrétne správanie vrcholu. Vrcholy zvyčajne mávajú výstup, ktorý závisí na výsledku ich rozhodnutia alebo akcie. Vrcholy a výstupy môžu byť reprezentované ako obdĺžniky a šípky.
    Vrcholy sú v strome, ktorý začína v ROOT vrchole. Výstup vrcholu je spojený s daľšími vrcholmi. Keď akcia beží, akcia alebo rozhodnutie popísané v najvyššom vrchole sa vykoná a na základe výsledku vrcholu server nasleduje výstup vrcholu a pokračuje vo vrchole na ktorý ukazuje výsledok. Proces pokračuje dovtedy, kým nie je dosiahnutý vrchol s neurčeným výsledkom. Pretože graf je acyklický, dosiahne určitý počet navštívených vrcholov. Ak výstup do vrcholu neukazuje na ďalší vrchol, to znamená, že CPL server by mal vykonať vrcholovú alebo protokolovú špecifikačnú akciu. Niektoré vrcholy majú priradené špecifické predvolené správanie (pre iné sa špecifické predvolené správanie prekrýva so signalizačným protokolom, alebo môže byť nakonfigurované administrátorom servera).

  2. Model lokácií

    Pre flexibilitu je jeden kúsok potrebných informácii pre CPL predávaný ako parameter vrcholu, a je to skupina lokácií, do ktorých má byť hovor smerovaný. Táto sad alokácie je uložená ako globálna premenná počas behu spustenej akcie (a subakcie). Toto dovoľuje lokáciám aby boli prijaté z vonkajších zdrojov, filtrované, a vopred bez potreby hlavnej podpory jazyka pre takéto operácie (čo môže poškodiť jednoduchosť a ľahké chápanie jazyka). Pre akciu najvyššej vrstvy pre prichádzajúci hovor je sada lokácií nastavená na prázdnu sadu. Pre odchádzajúci hovor je nastavená na adresu kam smeruje hovor.

Programové vybavenie CPL skriptov

  1. Prepínače

Prepínače reprezentujú možnosť, ktorú môže CPL skript vykonať, založenú tiež na atribútoch originálnej požiadavky hovoru alebo položke závisiacej na hovore. Všetky prepínače sú reprezentované ako zoznam podmienok, ktoré sa môžu rovnať premennej. Každá podmienka korešponduje s výstupom vrcholu. Výstup vedie k ďalšiemu vrcholu, ktorý by mal byť dosiahnutý ak je podmienka splnená. Podmienky sú testované v poradí v akom sa vyskytujú v skripte. Výstup korešponduje s prvým vrcholom ktorý vyhovuje podmienke.

  1. Lokačné meniče

    Pri abstraktnom CPL modeli lokácií je správanie niektorých signalizačných operácií závislé na aktuálnej skupine lokácií. Vrcholy lokácií pridávajú alebo odoberajú lokácie zo skupiny lokácií. Sú definované tri typy vrcholov lokácií. Explicitné lokácie pridávajú lokácie špecifikované názvom do skupiny lokácií, vyhľadávacie lokácie obsahujú niektoré lokácie z vonkajších zdrojov a filtre lokácií odstraňujú lokácie zo skupiny lokácií podľa vyšpecifikovaných kritérií.

  2. Signalizačné operácie

    Vrcholy signalizačných operácií spôsobujú signalizačné udalosti v podpornom signalizačnom protokole. Sú definované tri signalizačné operácie: „proxy“, „redirect“ a „reject“.

  3. Nesignalizačné operácie

    Ako prídavok k signalizačným operáciám CPL definuje aj pár operácií, ktoré neovplyvňujú a nezávisia na telefónnom signalizačnom protokole.

 Príklad CPL služby

Call Redirect Unconditional

Tento CPL skript uploadnutý nejakým SIP používateľom na SIP server bezpodmienečne presmeruje hovory generované používateľom so SIP adresou sip: palo@sip.uniza.sk. Do logu je vložená poznámka o presmerovaní.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE cpl SYSTEM "file:/home/cpl-01.dtd">
<cpl>
  <incoming>
   <log comment=" Call redirect on: palo@sip.uniza.sk" name=“test“>
     <location url="sip: palo@sip.uniza.sk">
       <redirect />
     </location>
   </log>
  </incoming>
</cpl>

Call screening

Tento CPL skript presmeruje všetky volania od anonymných používateľov.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE cpl SYSTEM "file:/home/cpl-02.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>
Rate this post

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The reCAPTCHA verification period has expired. Please reload the page.