WebCalom - příručka uživatele
Systém Calom slouží pro tarifikaci telefonních hovorů. Skládá se z Calom serveru a Calom klienta. K systému Calom se standardně dodává textový klient calom, se kterým je možné pracovat po přihlášení na počítač, na kterém je tento klient nainstalován, např. pomocí služeb SSH nebo Telnet. Dále existuje klient creport, který slouží pro vygenerování reportu přes příkazovou řádku.
Tento dokument popisuje www prostředí WebCalom, pomocí kterého je možné k systému Calom přistupovat přes webový prohlížeč. Na úvod stručně popíšeme Calom server.
Calom server je základní částí
systému Calom. Sbírá data, spravuje
telefonní seznam, uživatele a poskytuje služby pro
zpracování reportů.
Může běžet na jiném počítači než WebCalom (pouze nebude možné prohlížet log Calom serveru).
Může spravovat libovolné množství ústředen několika typů.
Má několik možností propojení s telefonními ústřednami (sériová linka nebo internet, příp. spojení s dalším Calom serverem).
Kompletně podporuje češtinu včetně třídění.
Calom servery se mohou navzájem doplňovat a synchronizovat.
Umožňuje současnou práci mnoha připojených uživatelů.
Podporuje několik druhů klientů.
Umožňuje definování přístupových práv. Je možné uživatelům povolit přístup jen do určitých organizačních jednotek nebo mu třeba úplně zakázat zápis do telefonního seznamu.
Není náročný na hardware počítače a umožňuje práci i s velmi velkým objemem dat.
Poskytuje možnost vzdálené správy
Poznámky
Nastavení a práce s Calom serverem jsou popsány ve zvláštní dokumentaci.
Vlastní práce se systémem (zadávání údajů a prezentace dat) probíhá prostřednictvím webového prohlížeče. Práce se systémem vyžaduje povolené cookies a některé stránky vyžadují přítomnost Java pluginu (Java 2 SE 5.0 nebo vyšší). Pro přihlášení k systému napište do adresy:
http://jméno_počítače/calom/login.html
resp.:
http://jméno_počítače/cgi-bin/calom/calom_www/login.html
Poznámka: "jméno_počítače" je jméno počítače, na kterém je nainstalován WWW klient. Na podrobnosti se zeptejte správce systému Calom.
Tím se dostanete do úvodní obrazovky. Tam zadáte svoje přihlašovací jméno a heslo, které vám přidělil administrátor systému. Administrátorský účet má název 'admin', 'administrator' nebo 'root'. Všechny účty˙s těmito jmény mají práva administrátora (smějí měnit veškeré nastavení).˙
Pokud nastane při přihlašování nějaký problém, zobrazí se popis nad tabulkou s přihlašovacími údaji. Po úspěšném přihlášení se zobrazí hlavní stránka systému.
Hlavní stránka (main.html) je rozcestník k dalším funkcím WebCalomu. V závislosti na tom, zda jste přihlášeni pod administrátorským účtem nebo jako běžní uživatelé, se bude obsah stránky lišit.
Spustit report | Nastaví parametry reportu a spustí report |
Editace telefonního seznamu | Umožní upravovat telefonní seznam |
Konfigurace | Konfigurace Calom serveru a WebCalomu |
Spustit synchronizaci | Nastavuje spuštění nástrojů pro synchronizaci telefonního seznamu |
Odhlásit se | Ukončí sezení |
Běžní uživatelé vidí místo položky konfigurace přímo nabídku stránek s konfigurací, ke kterým mají přístup:
Uživatelské nastavení | Základní nastavení uživatele (heslo, jazyk a vzhled (skin) prostředí) |
Správa rychlých reportů | Umožnuje vytvářet, mazat a upravovat rychlé reporty |
Naplánované reporty | Spravuje naplánované reporty a nastavuje jejich spouštění |
Uložené reporty | Prohlížení a stahování výsledků reportů uložených na serveru |
Na stránce spouštění reportů (report_params.html) se nastavují parametry reportu. Nejdřív se vybere formát (HTML, PDF, CSV, XML, neformátovaný) a typ reportu, který určuje jaké informace budou na výstupu reportu a jak budou strukturované. Podporované typy reportu jsou:
HTML je vhodný pro zobrazování na obrazovce, příp. pro tisk
CSV je formát určený pro import dat do tabulkového procesoru (např. Excel)
XML je vhodný pro výměnu dat s jinými aplikacemi
PDF je určený především pro tisk
Neformátovaný se hodí pro případy, kdy chcete zobrazit report bez formátování (není určeno pro koncové uživatele).
Pro každý formát může být nadefinováno libovolné množství typů reportu. Klasicky se dodávají tyto předdefinované reporty (nemusí být dostupné pro všechny formáty), ale je možné si vytvořit vlastní typy:
Autorizační kódy celkem |
Obsahuje seznam autorizačních kódů,
které byly použity v alespoň jednom hovoru
(který splnil kritéria - viz.
výše). |
Autorizační kódy detail |
Podobný reportu Autorizační kódy celkem. Pro každý autorizační kód ale obsahuje tabulku všech hovorů uskutečněných jeho prostřednictvím. |
Oddělení celkem |
Pro každé oddělení vypíše tabulku obsahující záznam pro každého účastníka, který hovor platil spolu s celkovými údaji (počet volání, trvání hovorů, počet pulsů a cena). Na závěr tabulky je uveden součet přes všechny účastníky z daného oddělení. Úplně na závěr je celkový součet. |
Oddělení detail |
Podobný reportu Oddělení celkem. Pro
každého účastníka ale
vypíše zvláštní tabulku, kde jsou
rozepsány jeho jednotlivé
hovory. |
Oddělení přehled |
Podobný reportu Oddělení celkem. Pro dané oddělení se ale vypíše pouze celkový součet. |
Pobočky celkem |
Vypíše pro každé účastnické číslo součty hodnot (počet volání, délka, počet pulsů, cena) přes všechny hovory. |
Pobočky cena |
Podobný reportu Pobočky celkem, ale
setříděný podle
ceny. |
Pobočky detail |
Vypíše pro každé účastnické číslo tabulku všech hovorů obsahující informace o času, délce, cíli, počtu pulsů, ceně a použitém autorizačním kódu. |
Pobočky trvání |
Podobný reportu Pobočky celkem, ale
setříděný podle délky
trvání. |
Přenašeče celkem |
Pro každý odchozí přenašeč
vypíše řádek se součtem hodnot
(počet volání, trvání,
počet pulsů, cena) přes všechny hovory,
které přes něj
odešly. |
Přenašeče detail |
Obsahuje podobné informace jako Přenašeče celkem, ale pro každý přenašeč je uveden seznam všech hovorů, které přes něj prošly, ne jen součet jejich údajů. |
Účty celkem |
Obsahuje seznam account kódů, které byly
použity v alespoň jednom hovoru (který splnil
kritéria - viz. výše). |
Účty detail |
Podobný reportu Účty celkem. Pro každý account kód ale obsahuje tabulku všech hovorů uskutečněných jeho prostřednictvím. |
Volaná čísla |
Obsahuje pro každé volané číslo
informace o počtu volání na toto
číslo, celkovém trvání,
počtu pulsů a ceně. |
Četnost volaných čísel |
Podobný reportu Volaná čísla, ale setříděný podle počtu volání na dané číslo. |
Zatížení |
Vypíše součty informací o hovorech
(počet volání, trvání,
počet pulsů a cena) přes všechny hodiny
(od 0:00 do 23:59). |
Další volby lze rozdělit do dvou kategorií. Většina z nich omezuje výběr hovorů, které se dostanou do reportu, další vybírají způsob prezentace nebo uložení výsledku. Poslední volba umožňuje uložit všechno nastavení ve formě tzv. "rychlého reportu" (což je report, který se dá vyvolat z hlavní stránky).
Jednotlivé volby je možné skrývat kliknutím na název v prvním sloupci. Znovu ukázat všechny volby je možné klepnutím na "Zobraz všechna pole".
Do reportu jsou zahrnuty všechny hovory, které splňují zadaná kritéria a uživatel, který je spouští, má právo na jejich prohlížení. Právo na prohlížení se nastaví pouze na ty hovory, kde volající, volaný i ten, co hovor platil, mají v telefonním seznamu záznam umístěný v rámci organizačních jednotek, na které má daný uživatel právo na čtení nebo pokud ten, co hovor platí, má v telefonním seznamu záznam umístěný v rámci organizačních jednotek, na které má daný uživatel právo na rozšířené čtení.
Poznámka: Vždy, když se u reportu mluví o tom, že obsahuje tabulku pro všechny oddělení, autorizační kód, atd., rozumí se, že pokud do dané kategorie nespadl žádný záznam, tabulka je vynechána.
Datum |
Určuje časové rozmezí, ze kterého
se budou do reportu započítávat hovory.
Všechny hovory mimo toto rozmezí se budou v reportu
ignorovat. |
Den v týdnu |
Zde můžete výběr hovorů omezit jen na některé dny v týdnu. Hovory, které skončily ve dne, který není zaškrtnut, budou ignorovány. |
Typ hovoru |
Zde můžete výběr hovorů omezit
jen na některé typy hovorů.
Událost je typ, který je
ústřednou přiřazen např.
když šlo o přepojení hovoru na
jiného účastníka. |
Denní doba |
Slouží k omezení výběru
hovorů na hovory končící v
určité denní době. Můžete
zadat dolní a horní limit. |
Délka hovoru |
Slouží k omezení výběru
hovorů na hovory s určitou délkou.
Můžete zadat dolní a horní
limit. |
Cena hovoru |
Slouží k omezení výběru
hovorů podle ceny. Můžete zadat dolní a
horní limit. |
Zdroj |
Slouží k omezení výběru
hovorů podle volajícího. Můžete
zadat:
|
Cíl |
Slouží k omezení výběru
hovorů podle volaného. Můžete zadat
stejné údaje jako u položky
Zdroj. |
Platí |
Slouží k omezení výběru
hovorů podle účastníka, který
hovor platí. |
Autorizační kód |
Omezení na hovory s určitým
autorizačním kódem.
|
Account kód |
Omezení na hovory s určitým account
kódem. |
Tarifikační skript |
Každý report může mít hovory tarifikované různými tarify. Pokud nezvolíte jiný, bude se používat Implicitní tarif, což je tarif, který nastavil správce systému. Pro bližší informace o tarifech viz stránka správy tarifů. |
Zasílání výsledků reportu |
Zde volíte způsob výstupu reportu.
|
Rychlý report |
Nastavení parametrů je možné
uložit jako tzv. "rychlý report". Tyto
reporty se zobrazí na hlavní stránce a
kliknutím na ně se zobrazí výsledek bez
nutnosti zadávat nějaké parametry. |
Editor reportů je Java aplikace pro editaci definice reportu. Definici reportu je možné upravovat i v textovém editoru, ale editor reportů nabízí grafické prostředí pro návrh. Je možné jej spouštět jako Java applet v rámci aplikace nebo jako samostatnou aplikaci. Bližší informace je možné najít v nápovědě pro aplikaci.
Na stránce “Správa plánovače” se provádí správa naplánovaných úloh.
Uvedete zde čas prvního spuštění a případně také frekvenci opakovaného spouštění. Pokud chcete report spustit pouze jednou, vyberte Pouze jednou. Parametry reportu už zde nemůžete měnit, můžete se ale podívat na nastavení reportu stisknutím Zobraz detaily o reportu. Toto je však určeno pro zkušené uživatele. Stisknutím OK bude report nastaven pro plánování.
Na stránce “Správa naplánovaných reportů” je pak s danými reporty možné dále pracovat. Tyto reporty se vytvoří na stránce spouštění reportů zaškrtnutím políčka Pouze uložit definici, naplánovat spuštění později. Při vytvoření takového reportu se nespouští generování reportu, pouze se uloží nastavení. Na této stránce pak naplánujete, kdy se report spustí.
Report může být spuštěn jednou v zadaný čas a potom zůstane neaktivní nebo můžete nastavit periodické spouštění. Pokud má report pevně určený rozsah data, nemá periodické spouštění smysl. V reportu ale můžete zadat rozdahy jako Dnes, Tento týden nebo Minulý měsíc. V takovém případě např. spouštění každý měsíc vygeneruje bez dalších zásahů každý měsíc aktuální report. Pokud to ještě zkombinujete se zasíláním reportu e-mailem, budete výsledky reportu automaticky dostávat. Pokud ne, můžete si hotové reporty vyzvednout na stránce uložených reportů.
Neaktivní reporty (ty, které se nebudou samy spouštět) jsou vybarveny šedou barvou, aktivní jsou černé. Kliknutím na Zapnout/Vypnout report aktivujete/deaktivujete. U každého reportu je vyznačeno datum a čas spuštění i frekvence spouštění.
Naplánovaný report můžete také smazat. Report se pak předstane spouštět, pokud však již spuštěn byl, výsledky nebudou smazány.
Z této nabídky můžete spouštět synchronizaci telefonního seznamu (dirdb adresáře) z jednoho ze dvou zdrojů:
SQLSync - synchronizace s DNA databází
LDAPSync - synchronizace s LDAP databází
Pro synchronizaci SQLSync jsou k dispozici následující parametry:
Simulace - synchronizace proběhne bez zápisu do seznamu Calomu. Pouze se označí duplicitní záznamy a jiné chyby.
Množství výstupu určuje kolik pomocných informací se má vypisovat.
Úroveň výpisu ladicích informací určuje kolik se má vypisovat informací, které mohou sloužit ke zjišťování problémů.
Verze DNA volí verzi DNA. DNA verze 5 je kompatibilní s verzí 4. Rozdíl ve verzi 3 a 4 je v existenci propojovací tabulky ext_sub a možností mít u jednoho záznamu víc telefonních čísel. Takovéto záznamy se pak v seznamu Calom serveru objeví jako několik položek se stejnými jmény ale různými čísly.
Pokračuj i když najdeš duplicitní záznamy ovlivňuje chování SQLSyncu při nalezení duplicitních záznamů (což je chyba v při zadávání údajů do DNA). Implicitně se při nalezení duplicitních informací synchronizace ukončí a žádné změny se neprovedou. Tato volba umožní pokračovat i v tomto případě.
Nepoužívej tabulku sub_ext je volba, která by se neměla používat pokud k tomu nejsou vážné důvody. Vynechá tabulku sub_ext, která se u DNA verze 4 a výš používá pro převod mezi jmény účastníků a telefonními čísly.
Prohoď jména slouží ke zvolení příjmení jako prvního slova u záznamu. Calom má pro záznam v telefonním seznamu pouze jednu kolonku na jméno, a tam se zadává jméno i příjmení. Implicitně se nejdřív uvádí jméno, ale touto volbou je možné to změnit.
Vyber Calom server slouží pro nastavení
jiného Calom serveru než je uveden v
konfiguračním souboru
sql.conf.
Poznámka: nastavení
implicitního konfiguračního souboru se
dá provést změnou
volbysqlsync-config
v souboru
config/server_params)
Vyber SQL server souží k nastavení jiného SQL serveru než je uvedeno v konfiguračním souboru sql.conf.
Podstrom pro synchronizaci umožňuje vybrat pro synchronizaci pouze podstrom v telefonním seznamu. Ostatní záznamy budou ponechány beze změny.
Kategorie pro nové záznamy vybírá číslo kategorie pro záznamy, které před tím v telefonním seznamu na Calom serveru nebyly. DNA totiž neobsahuje informaci o kategoriích.
Databázové políčko pro komentář umožňuje vybrat databázový sloupec, ze kterého se má vzít komentář pro záznam.
Databázové políčko pro CIL-kód umožňuje vybrat databázový sloupec, ze kterého se má vzít CIL-kód pro záznam.
Třídění podle políčka vybírá databázový sloupec, podle kterého se záznamy před synchronizací setřídí. Má význam při použití pokročilých filtrů, které počítají s pořadím, v jakém přichází záznamy pro jednoho účastníka.
Tabulka pro node prefixy umožní vybrat tabulku s node-prefixy.
Filtry umožní vybrat podmínky pro
záznamy. Záznamy, které neprojdou filtrem,
budou ignorovány.
Můžete si napsat
vlastní podmínku pro filtr nebo použít
některou z přednastavených. Podmínka
Zařaď pouze účastníky s A v
poli slouží k vyřazení
záznamů, které nemají v daném
databázovém sloupci uvedeno 'A'.
Další parametry slouží k zadání jiných parametrů pro SQLSync. Nastavení konzultujte s manuálem k programu SQLSync.
Uložení/Obnovení nastavení
formuláře – nastavení v tomto
formuláři můžete uložit
pomocí tlačítka Ulož
formulář a při dalším
přístupu na tuto stránku (i když jste se
mezi tím odhlásili a znova přihlásili)
nazpět nahrát pomocí tlačítka
Obnov formulář.
Pro funkčnost
těchto tlačítek musíte mít v
prohlížeči povolené cookies.
Standardní doba platnosti těchto údajů
je jeden rok od posledního uložení..
Poznámky k výběru databázových sloupců (políček):
Můžete přímo specifikovat jméno
databázového sloupce (políčka).
Implicitně se bude hledat v tabulce subscriber
.
Můžete však před název sloupce
zadat jméno tabulky a údaje oddělit
tečkou. Za tabulku subscriber
se
používá s
, za tabulku
extension
se používá
e
.
Např. sloupec
directory_number
z tabulky extension
vyberete zápisem e.directory_number
.
Můžete hodnotu specifikovat pomocí UDF, pokud před ní napíšete '#'.
Na stránce “Správa tarifů” se provádí úprava tarifikačních skriptů (tarifů). Tarify jsou programy ve speciálním skriptovacím jazyce, které slouží pro určení ceny hovoru.
Tyto tarify mohou být složeny z několika skriptů. Jednotlivé skripty jsou vidět v levé části v tabulce Dostupné skripty. Skriptovací jazyk je syntaxí podobný jazykům JavaScript nebo C. Skripty obsahují definice funkcí, proměnných a mohou obsahovat také kód mimo funkce. Skripty, které mají kód mimo funkce mohou sloužit jako tzv. hlavní tarifikační skripty. Tyto skripty si můžete vybrat při generování reportu a ceny hovorů budou počítány právě tímto kódem za definicemi funkcí.
Filosofie je taková, že tento kód obsahuje jenom kostru a většinu činností zajišťují funkce, které volá. Tyto funkce mohou být ze stejného skriptu nebo i z jiných skriptů.
Tímto vznikají závislosti mezi jednotlivými skripty. Pokud skript A využívá skript B, není možné skript B odstranit dokud existuje skript A. Podobně není možné odstranit skript pokud je používán jako implicitní tarif pro reporty. Tyto závislosti si systém sám kontroluje a nepovolí odstranit skript pokud by došlo k porušení pravidel.
Ve standardní distribuci např. existuje skript
global, ve kterém jsou pomocné funkce
použitelné prakticky pro všechny tarifikace.
Například je tam funkce pro zjištění
zda je daný den svátek nebo obecné
jedno-pásmové, dvou-pásmové a
tří-pásmové tarify.
Na tento skript
pak navazuje skript telecom nebo aliatel, kde jsou funkce
pro konkrétní způsoby tarifikace - např.
místní hovor Telecomu. To je o víkendu a
svátcích jednopásmový hovor, jindy
dvoupásmový se jedním pásmem od 7:00 do
19:00 a s nejmenším tarifikovaným časem 2
minuty a následnou tarifikací po jedné
minutě. Konkrétní ceny zde nejsou, jsou až v
konkrétnějším tarifu např.
telecom_standard nebo telecom_business. Tyto skripty
volají služeb ze skriptu telecom.
Nakonec je tu hlavní tarifikovací skript main, kde se určí, jaké trunky budou tarifikovány jakými operátory, tedy jaké funkce se pro tarifikaci budou volat, případně se zde provedou výjimky. Třeba hovory z organizační domény soukromé hovory mohou být tarifikovány dvakrát větší cenou. Toto kaskádovité uspořádání má výhody v univerzálnosti, je však možné zvolit i libovolné jiné řešení.
Na levé straně v tabulce Dostupné skripty
vyberte skript/tarif se kterým budete pracovat. Všechny
další informace na stránce se budou vztahovat k
tomuto skriptu.
V části Dostupné
tarify můžete také vytvářet
nové skripty, přejmenovávat nebo mazat
existující (pro pravidla pro mazání viz
výše).
V pravé části v sekci detaily
můžete upravovat kód tarifu. Pro
uložení změn stiskněte
tlačítko Ulož. Pokud při kontrole
nastaly ve skriptu chyby, uvidíte popis v horní
části stránky. Aby nedošlo k
poškození existujícího tarifu, bude
nefunkční tarif dočasně
přejmenován a po odstranění chyb se
vrátí původní
jméno.
Více informací o syntaxi
tarifikačních skriptů najdete v dokumentaci
popisující tarifikační jazyk.
Při generování reportu si můžete vybrat jakým tarifem budete chtít cenu počítat. Aby byl daný tarif při generování reportu nabídnut, musíte mu přiřadit jméno pro tarifikaci. Toto jméno od té doby budete moci používat. Administrátor může pojmenovat tarif globálně, tj. pro všechny uživatele zaškrtnutím políčka Ulož globálně pro všechny uživatele. Pojmenování můžete zrušit uvedením prázdného políčka. Pro potvrzení stiskněte tlačítko Ulož.
Poznámky:
Editace tarifikačních skriptů je
určena pro zkušené uživatele.
Systém je dodáván se standardní sadou
tarifů, které by měly pokrýt
většinu požadavků. Pokud je
nutné udělat úpravy, je možné
se domluvit s distributorem.
Každý skript je uložen na serveru v
samostatném souboru. Tyto soubory můžete
editovat přímo nebo můžete tarify
spravovat i pomocí konzole nebo jiného
klienta systému Calom. Soubory můžete
editovat i přímo, pak je ale nutný restart
serveru, aby se změny projevily.
Více informací o syntaxi tarifikačních
skriptů najdete v dokumentaci k tarifikačnímu
jazyku
Na stránce “Správa uživatelů” můžete přidávat, mazat uživatelské účty WWW klienta a měnit jejich nastavení.
Klepnutím na uživatelské jméno se dostanete
na stránku “Nastavení uživatelského
účtu” pro daného uživatele.
Když klepnete na Přidat nového
uživatele, dostanete se na týž stránku,
ale bez předvyplněných údajů.
Klepnutím na Vymaž vymažete daného
uživatele.
Uživatelské účty
WWW klienta mají svůj protějšek v
účtech na Calom serveru.˙Každý
uživatelský účet má svůj Calom
protějšek stejného jména. Protože se
ale˙uživatelské účty na Calom serveru
mohou dynamicky měnit i jinak než pomocí˙WWW
klienta, synchronizuje se při každém
požadavku na připojení ke Calom˙serveru
údaj o aktuálním uživateli a jeho
protějšek na Calom serveru. Účty
na˙serveru se také, pokud se neuloží,
při ukončení serveru vymažou.
Klepnutím na Uložit na serveru se uloží nastavení účtů permanentně˙na serveru. Pak nebude třeba tak často účty synchronizovat. Neuloží se ale˙pouze účty modifikované pomocí WWW klienta, ale všechny účty, které jsou˙v paměti serveru.
Je vhodné po nadefinování uživatelských účtů provést uložení na serveru.
Pomocí licence je možné omezit počet uživatelů, kteří smějí být na WWW klientu definováni. Pokud narazíte na omezení počtu uživatelů, bude nutné některé uživatele smazat.
Na stránce “Nastavení uživatelského účtu” nastavujete vlastnosti uživatelských účtů. Můžete měnit nastavení nějakého konkrétního účtu, jehož hodnoty byly do políček předvyplněné, nebo přidávat nový účet.
Jednotlivá políčka jsou:
Uživatelské jméno je jméno pod kterým se uživatel bude přihlašovat do WWW klienta.
Uživatelské heslo je heslo, které musí při příhlášení zadat. Pokud není zaškrtnuto políčko Změnit bude ponecháno původní heslo, pro nového uživatele se vygeneruje prázdné heslo.
Plné jméno je celé jméno uživatele. Aby se při přihlašování nemuselo psát celé dlouhé jméno, používá se uživatelské jméno, které by mělo být kratší a snadno zapamatovatelné.
Číslo z adresáře označuje
telefonní číslo daného
účastníka.
Je možné tento
údaj využít např. v rychlém
reportu, kde se výběr hovorů
zúží např. jen na hovory, kde
volající volal z daného čísla.
Viz stránka “Editace rychlého reportu”.
Implicitní jazyk je jazyk stránek, které se uživateli budou zobrazovat. Můžete vybrat z nabizených jazyků. ˙¯¯Výběr jazyků se konstruuje ze seznamu adresářů HTML_jazyk.˙¯¯Pokud v nějakém z těchto adresářů není kompletní jazyková verze,˙¯¯stránky mohou být nefunkční.
Přístup povolen z IP adres
umožňuje povolit uživateli
přístup k systému pouze z
určitého okruhu počítačů.
Můžete zadat '0' pro neomezený
přístup nebo IP adresu (čtyři
čísla v rozmezí 0 až 255
oddělená tečkou) volitelně se
síťovou maskou (buď ve formátu
aaa.bbb.ccc.ddd nebo jen počet bitů (0
až 24)).
Pokud síťovou masku neuvedete,
bude se implicitně uvažovat '255.255.255.255' (nebo
ekvivalentní zápis '24').
Domovská organizační doména se podobně jako Číslo z adresáře může využívat v rychlých reportech. Navíc je uživateli automaticky povoleno čtení z této domény (viz. stránka o spouštění reportu).
Organizační domény s právem na
čtení je seznam organizačních
domén, ze kterých se uživateli budou zobrazovat
hovory v reportech. Hovory, kde volající,
volaný nebo platící není v
telefonním seznamu v některé z těchto
domén (nebo jejich poddomén), nebudou při
reportu brány v potaz. Více viz. stránka o
spouštění reportu.
Chcete-li
přidat novou doménu, vyplňte její
jméno do prázdného políčka a
vlevo od zašktněte okénko. Pokud chcete odebrat
doménu, zrušte zaškrtnutí vlevo od
jejího jména.
Organizační domény s
rozšířeným právem na
čtení je seznam organizačních
domén, ze kterých se uživateli budou zobrazovat
hovory v reportech. Hovory, kde je platící v
telefonním seznamu v některé z těchto
domén (nebo jejich poddomén), bude zahrnut do reportu.
Více viz. stránka o spouštění
reportu.
Chcete-li přidat novou doménu,
vyplňte její jméno do prázdného
políčka a vlevo od zašktněte
okénko. Pokud chcete odebrat doménu, zrušte
zaškrtnutí vlevo od jejího jména.
Organizační domény s právem na zápis je seznam organizačních domén, ve kterých může uživatel editovat telefonní seznam. Postup přidávání a ubírání domén je stejný jeko u seznamu domén pro čtení.
Do logu systému WebCalom se zapisují chybové
události nebo varování, které nastanou ve
WebCalom klientu nebo při komunikaci s Calom serverem.
Na
každém řádku je na začátku
uvedeno datum a čas, potom následuje popis
události. Určité druhy událostí jsou
vyznačeny zvláštními barvami.
Prohlížení WebCalom logu je určeno pouze pro správu WebCalomu, většina záznamů nemá při běžném používání smysl, neboť obsahuje pouze informace použitelné při ladění systému a hledání chyb.
Aby log příliš nenarůstal, můžete starší údaje vymazat. Do kolonky Smazat záznamy před vyplňte datum (den-měsíc-rok), před kterým chcete záznamy smazat a stiskněte tlačítko Smazat.
Do logu systému Calom se zapisují události, které při provozu generuje Calom server. Na každé řádce je uvedeno datum a čas a v dalším sloupci popis události. a jedna událost. Každá obrazovka ukazuje vždy záznamy pro jeden den.
Pokud při práci s WWW klientem nastane nějaká chyba, sem se o ní zapíše podrobnější informace.
Ke každému záznamu je přiřazen typ (závažnost), která je rozlišena barvou. Kliknutím na položky z horní tabulky se seznamem typů se zobrazí nebo skryjí záznamy s daným typem.
Kliknutím na odkazy Předchozí a Následující se přesunete na předchozí resp. následující dny, kdy byly vygenerovány nějaké záznamy. Také můžete napsat datum ve formátu rok-měsíc-den a zobrazí se záznam pro daný den nebo nejbližší neprázdný záznam před tímto datem.
Tato konzole slouží pro přímou komunikaci s Calom serverem. Pro bližší popis funkcí Calom serveru nahlédněte do manuálu k Calom serveru.
Konsole běží v prostředí Java. Pro její funkčnost musíte mít v prohlížeči nainstalovanou a povolenou podporu jazyka Java alespoň verze 1.2. Pokud tomu tak není, můžete si stáhnout Java plugin pro váš prohlížeč z http://java.sun.com/.
V systému Calom jsou v telefonním seznamu uloženy
všechny důležité informace o
účastnících (pobočkách) v
telefonní síti. Používá se pro
převod telefonního čísla na jméno
účastníka (pobočky) a další
záznamy.
V telefonním seznamu by měly
být uloženy všechny vnitřní linky a
do co největších detailů také
vnější směry.
Pokud budou v seznamu
chybět některé položky, nezobrazí se
v reportech na místě pro jméno
účastníka nic. Pokud bude vynechán
nějaký údaj s CIL-kódem, nebudou se
správně zobrazovat ani reporty, které jej
využívají.
Telefonní seznam je hierarchický podobně jako
struktura adresářů (složek) a souborů
na počítači. Roli adresářů
(složek) zde hrají organizační
domény.
V každém místě
telefonního seznamu je možné umístit
libovolné množství organizačních
domén i záznamů o
účastnících
(pobočkách).
Organizační
doména sama o sobě nenese žádnou informaci,
pouze může obsahovat další domény a
záznamy o účastnících.
Typické nastavení pro firmu s odděleními 'Vývoj' a 'Prodej' se dá znázornit např.:
ext Evropa <x> Albánie 000355 … Česká republika <x> Brno 05 <x> Plzeň 019 <x> Praha 02 <x> ostatní 01 <x> ostatní 03 <x> ostatní 04 <x> ostatní 06 <x> ostatní 07 <x> ostatní 08 <x> ostatní 09 … <x> Německo 00049 Asie <x> Čína 00086 … … Vývoj skupina 1 <x> Josef Novák 2456 <x> Miroslav Pokorný 2457 skupina 2 <x> Pavel Prokeš 2510 <x> Miroslav Pokorný 2522 Prodej <x> Antonín Svoboda 2568 <x> Hana Svobodová 2571
Kde řádky označené <x>
představují účastníky, ostatní
jsou organizační domény.
Z daného příkladu je vidět, že když je nějaký útvar pro hovory důležitý, nemusí se mu přiřadit účastník, ale přiřadí se mu organizační doména a účastnící se vytvoří až v ní. Tímto se informace "zjemňuje" (viz např. rozdíl u České republiky a Albánie).
Když se v reportu někde vyskytne telefonní číslo, hledá se pro něj v telefonním seznamu záznam, který je nejdelším prefixem daného čísla (pokud je u něj poznačeno, že se nejedná o prefix, musí se shodovat přesně). Z tohoto záznamu se pak vezme jméno, CIL-kód a další informace a zobrazí se v reportu.
K organizačním doménám se vztahují uživatelská práva. Pokud by se měl v reportu zpracovávat hovor, kde volající, volaný nebo ten, co hovor platí, jsou z domény, kam daný uživatel nemá právo na čtení, hovor se ignoruje. Proto je dobré dát každému právo na čtení domény ext (pro telefonování ven).
Na stránce editace adresáře je možné provádět následující úkony:
Pohyb v organizačních
doménách – Pokud chcete
prohlížet nebo upravovat domény nebo
záznamy v nějaké doméně,
klikněte na její název. Na prvním
řádku se ukazuje jméno aktuální
domény (kořenová doména se
nazývá '.').
Pokud se chcete dostat do
nadřazené domény, klepněte na
'..' (pokud jste v kořenové
doméně '.', tento odkaz se
nezobrazí).
Na počátku se
ukáže kořenová doména, pokud do
ní máte přístup (pro
čtení). Pokud nemáte, zobrazí se seznam
domén, do kterých máte přístup.
Editace záznamu – U záznamu, který chcete editovat, klepněte na odkaz Edituj v posledním sloupci. Dostanete se na stránku “Editace záznamu telefonního seznamu”.
Přidání nového záznamu – Klepněte na Přidej záznam. Dostanete se na stránku “Editace záznamu telefonního seznamu”.
Přidání organizační domény – Jméno organizační domény napište do políčka vedle tlačítka Přidej doménu a toto tlačítko stiskněte.
Vymazání organizačních domén nebo záznamů – Zaškrtněte políčka vlevo od záznamú nebo domén, které chcete smazat, a stiskněte tlačítko Vymaž označené.
Přesun organizačních domén nebo záznamů – Zaškrtněte políčka vlevo od záznamú nebo domén, které chcete přesunout, vyberte z nabídky u Přesuň označené do cílovou doménu a stiskněte tlačítko Přesuň.
Třídění záznamů – Pokud je záznamů v dané organizační doméně velké množství, může být poměrně složité najít určitý záznam. Proto můžete klepnutím na jméno sloupce v záhlaví tabulky setřídit záznamy podle daného sloupce.
Zapsat na serveru – Adresář se po každé akci ukládá na Calom server. Ten si ho však drží pouze v paměti a v případě výpadku se změny ztratí. Proto je dobré čas od času změny ukládat na serveru. K tomu slouží tlačítko Uložit u popisku Zapsat na serveru.
Záznamy v telefonním seznamu slouží pro převod telefonního čísla na jméno, navíc slouží pro tarifikaci.
V horním řádku se za textem Org. vypíše v které organizační doméně se daný záznam nachází. Je to ta doména telefonního seznamu, ze které jste klepli na Přidej záznam nebo Edituj.
Jméno účastníka je text, který se objeví v reportech vedle telefonního čísla.
Číslo účastníka je telefonní číslo daného účastníka. V telefonním seznamu nemohou být dvě stejná čísla, může se zde ale vyskytovat u více čísel stejné jméno (pro případ, že účastník má víc telefonních linek). Mohou se zde také vyskytovat dvě čísla, kde jedno je prefixem druhého.
Prefix označuje, zda je dané číslo prefixem, tj. jestli tomuto záznamu bude odpovídat telefonní číslo, které začíná tímto číslem, ale pak pokračuje dalšími číslicemi.
CIL-kód je autorizační kód,
který umožní, aby volání z
libovolného telefonního přístroje bylo
účtováno účastníkovi,
jehož autorizační kód byl při
volání použit. Proto musí být
daný CIL-kód unikátní -
žádný další
účastník nesmí mít stejný
CIL-kód.
Aby se tento způsob tarifikace dal
použít, musí být v
ústředně nadefinován tzv. PIN
kód.
Kategorie je číslo
udávající tarifikační kategorii
záznamu. Podle této kategorie u volaného
čísla se hovory většinou
tarifikují. Např. záznamy pro Evropské
země, do kterých je cena za volání
stejná, mohou mít stejnou kategorii. Naopak
třeba mobilní síť Eurotel bude
mít jinou kategorii než Německo, protože
mezinárodní hovory se tarifikují jiným
způsobem než volání do
sítí mobilních
operátorů.
Volba kategorie se musí
zvolit v souladu s tarifikačními pravidly pro danou
kategorii uvedenými v tarifních skriptech na Calom
serveru (viz. dokumentace k tarifům Calom serveru).
Komentář je libovolný text, který se v adresáři objeví vedle jména. Lze jej použít na doplňující informace o účastníkovi.
Stiskem Ulož uložíte daný záznam na Calom serveru (pozor, ještě není permanentně uložen, viz poznámka na stránce “Editace adresáře”. Stisknutím odkazu Zpět se vrátíte na stránku “Editace adresáře”.
Na stránce “uložené reporty” je možné stahovat nebo mazat výsledky reportů, které byly vygenerovány plánovačem nebo byla v tabulce parametrů reportu zaškrtnuta volba Pouze uložit definici, naplánovat spuštění později.
Poznámka: Tyto uložené reporty by se měly čas od času promazat, protože zabírají místo na disku serveru.
Poznámka: Pro více informací viz. správa plánovače.
Na stránce “Konfigurace rychlých reportů” se provádí úprava rychlých reportů. Vidíte seznam vlastních (administrátor i globálních) tzv. rychlých reportů. Klepnutím na Smazat daný rychlý report smažete, klepnutím na Editovat se dostanete na stránku “Editace rychlého reportu”, kde můžete daný rychlý report upravit.
Na stránce “Nastavení licence” můžete nastavit vlastnosti licence. Tato stránka je určena pouze pro osoby, které mohou měnit licenci a znají autorizační kód. Nastavují se zde různé limity a povolují resp. zakazují se určité vlastnosti. Tato nastavení se týkají pouze WebCalomu, ne Calom serveru.
Počtem uživatelů se myslí počet uživatelských účtů na WebCalomu, ne počet současně pracujících uživatelů.
Poznámka: Pokud do políčka Omezit počet uživatelů napíšete -1, nebude počet uživatelů omezen.
Tarifikace probíhá při generování
reportu po tom, co informace o hovoru projde autorizací a
lokálními filtry.
Je
zajišťována skripty (také
označovaných jako tarify), jejichž formát
zde bude popsán.
To, jaký skript se pustí pro tarifikování
hovoru se určí podle nastavení implicitního
"hlavního" skriptu.
Nastavení tohoto
skriptu se provede příkazem 'TARIF DEFAULT_MAIN
jmeno_skriptu' buď v konfiguračním souboru nebo z
příkazové řádky
klienta.
Vymazat implicitní hlavní skript lze
pomocí 'TARIF NO_DEFAULT_MAIN' (skript se nesmaže, pouze
se u něj poznačí, že není
hlavní).
Kromě implicitního hlavního
skriptu se dá pro každou seanci
zvlášť nastavit lokální
"hlavní" skript příkazem 'TARIF
LOCAL_MAIN jmeno_skriptu'. Pokud je nastaven, použije se
při tarifikování místo implicitního.
Skripty je možné přidávat pomocí 'TARIF ADD', mazat pomocí 'TARIF DEL', zjišťovat o nich informace 'TARIF DUMP' nebo si nechat vypsat všechny natažené skripty přes 'TARIF LIST'.
Každý skript má tzv. reference count, což je
počet objektů, které ho potřebují.
Pokud tento čítač klesne na nulu a skript
není uložen, smaže se. Za každou funkci
daného skriptu, kterou používá
nějaký jiný skript se mu o 1
zvýší reference count.
Když z
určité cli seance natáhnu nový skript,
dostane reference count 1. Když daná seance
skončí, čítač se zase
sníží. Když je skript
"hlavní" (ať už lokálně
nebo globálně), má reference count
zvýšený o 1 (pokud je jak lokálně tak
globálně, tak o 2). To zabraňuje tomu, aby byl
smazán.
Pozor na to, že pokud natáhnu
nějaký skript pomocí 'TARIF ADD' a
skončím seanci, skript se smaže. To platí i
pro seanci, ve které se načítá
konfigurační soubor. Takže pokud chci skript
zachovat, musím buď nahrát jiný skript,
který bude využívat jeho funkcí, nebo ho
označit jako hlavní.
Tímto vznikají
jakésy stromy využívání
skriptů, kde v kořeni jsou "hlavní"
skripty (globální nebo lokální pro
nějakou probíhající seanci) a na ně
se napojují skripty, které jsou jimi
využívány. Pokud potom smažu kořen,
smaže se celý strom (v případě,
že jsem skripty načítal ve stejné seanci, ve
které toto provádím, smažou se až po
jejím skončení).
Pokud ale
nějaký skript uložím příkazem
'TARIF STORE', nesmaže se ani když jeho reference count
dosáhne 0 (pod 0 klesnout nemůže).
Když chci provést upgrade skriptů, stačí smazat hlavní skript a potom nahrát nové verze skriptů a jednomu z nich přiřadit funkci "hlavního skriptu". Tento reference counting je udělán z důvodu, aby se nemohly mazat skripty, které jsou používány, a aby v systému nezůstávaly nepoužívané skripty.
Skript mohu smazat příkazem 'TARIF DEL'. Pokud měl reference count větší než 0, akce se neprovede. To se může stát, pokud je daný skript lokální (využívá ho aktuální seance, takže mu o 1 zvyšuje reference count), pokud je nastaven jako hlavní skript nebo pokud jeho funkcí využívá nějaký jiný skript. Reference county skriptů a další informace se mi zobrazídané příkazem 'TARIF LIST'.
Příkazy 'TARIF REPARSE', 'TARIF STRIP', 'TARIF STORE', 'TARIF DEL', 'TARIF SET_MAIN', 'TARIF NO_DEFAULT_MAIN', 'TARIF INFO', 'TARIF DUMP' a 'TARIF DUMP_CODE' jsou povolené pouze účtům s administrátorskými právy.
Standardní postup je načíst skripty v konfiguračním souboru serveru v takovém pořadí, aby skript, který načítám se odkazoval pouze na skripty už načtené a na závěr načtu hlavní skript a označím ho jako hlavní. Příklad konfiguračního souboru:
; Ruzne servisni funkce
TARIF ADD global tarifs/global.trf
; Telecom
TARIF ADD telecom tarifs/telecom_fcn.trf
TARIF ADD tabulky tarifs/telecom_standard.trf
; Aliatel
TARIF ADD aliatel tarifs/aliatel.trf
; Main
TARIF ADD main tarifs/main.trf
TARIF STORE main
TARIF SET_MAIN main
Seznam nových příkazů serveru (dají se použít z klienta z příkazové řádky nebo v konfiguračním souboru serveru):
TARIF ADD jméno_tarifu jméno_souboru |
Načte tarif ze souboru 'jméno_souboru' a pojmenuje ho 'jméno_tarifu'. Reference count bude mít 1 a po skončení seance se o 1 sníží. Takže ho ve stejné seanci musím označit jako hlavní, uložit ho pomocí 'TARIF STORE' nebo načíst jiný skript, který ho používá. V opačném případě se po ukončení seance smaže. Načítání konfiguračního souboru je bráno jako seance. |
TARIF DEL jméno_tarifu |
Smaže skript 'jméno tarifu', pokud měl
reference count 0. Pokud má reference count
větší než 0, systém ho
odmítne smazat. |
TARIF CREATE jméno_tarifu |
Vytvoří skript 'jméno tarifu', ale nepřiřadí mu žádný kód. Kód se musí doplnit pomocí příkazů 'TARIF DEFINE'. Dokud se neprovede 'TARIF PARSE' nebo 'TARIF REPARSE', skript nelze spouštět. |
TARIF DEFINE jméno_tarifu "definice tarifu" |
Přidá řádku kódu do definice skriptu 'jméno_tarifu'. |
TARIF PARSE jméno_tarifu |
Spustí překlad skriptu 'jméno_tarifu'. Lze použít pouze pokud ještě není přeložen. Smí ho použít každý uživatel (aby si uživatelé mohli definovat svoje vlastní tarify). Dokud se skript nepřeloží, nelze spouštět. |
TARIF REPARSE jméno_tarifu |
Podobně jako 'TARIF PARSE', ale skript už může být přeložen. Využije se v případě, že se zdrojový kód skriptu změnil. Vyžaduje administrátorská práva (aby normální uživatelé nemohli měnit stávající tarify). |
TARIF STRIP jméno_tarifu |
Odstraní ze skriptu zdrojový kód. Takový skript může být spouštěn, ale nemůže být znova přeložen (pokud se znova nedodefinuje zdrojový kód). |
TARIF STORE jméno_tarifu |
Uloží skript 'jméno_tarifu' mezi globální skripty. Tyto skripty se nemažou při dosáhnutí reference countu 0. Lokální skripty (které nebyly uloženy) se po skončení sezení smažou (pokud není zvláštní důvod, proč je nesmazat - jako třeba že je používá nějaký globální skript). Tímto způsobem lze uchovat skripty "do zásoby" i když nejsou nastaveny jako hlavní ani je nepoužívají jiné skripty. Například pro uložení tarifikace podle alternativního operátora, o jehož zavedení se teprve rozhoduje. |
TARIF DEFAULT_MAIN jméno_tarifu (nebo TARIF SET_MAIN jméno_tarifu) |
Nastaví 'jméno_tarifu' jako implicitní (globální) hlavní skript. Pokud v nějaké seanci není nastaven lokální hlavní skript, bude se tento skript spouštět pro tarifikaci hovorů. |
TARIF NO_DEFAULT_MAIN |
U globálního hlavního skriptu odstraní příznak hlavního skriptu. Pak nebude globální hlavní skript specifikován a bude se tarifikovat pouze pomocí lokálního hlavního skriptu (bude-li specifikován). |
TARIF LOCAL_MAIN jméno_tarifu |
Nastaví 'jméno_tarifu' jako lokální hlavní skript. Ten se bude pro danou seanci spouštět pro tarifikaci hovorů (i když je nastaven globální hlavní skript). |
TARIF NO_LOCAL_MAIN |
U lokálního hlavního skriptu odstraní příznak hlavního skriptu. Pak se bude tarifikovat pouze pomocí globálního hlavního skriptu (bude-li uveden). |
TARIF LIST |
Vypíše všechny načtené skripty s různými informacemi (o velikosti kódu, dat, o tom, zda jde o hlavní skripty, a o reference countu). Je to užitečné například pro určení, jaký skript je hlavní. |
TARIF LIST_LOCAL |
Vypíše seznam lokálních skriptů. Lokální skripty se po skončení seance automaticky smažou pokud mají během seance reference count 1 nebo menší. |
TARIF INFO jméno_tarifu |
Vypíše seznam deklarovaných funkcí skriptu 'jméno_tarifu' a také funkce importované z jiných skriptů. |
TARIF DUMP jméno_tarifu |
Vypíše zdrojový kód skriptu 'jméno_tarifu'. |
TARIF DUMP_CODE jméno_tarifu |
Vypíše byte-kód skriptu 'jméno_tarifu'. Pro uživatele asi nemá význam. |
Jazyk pro skripty je syntaxí podobný jazyku C.
Zdrojový kód se skládá ze dvou
částí: deklarační a
příkazové.
V deklarační
části jsou deklarace proměnných (jsou
lokální pro daný skript) a funkcí (ty jsou
globální, tj. přístupné z
jiných skriptů).
V příkazové
části jsou příkazy, které se budou
spouštět při tarifikaci pokud je daný skript
hlavní (pokud není, daná část
nemá smysl).
Deklarace globálních proměnných
vypadá takto (hranaté závorky udávají
nepovinnou část):TYP jméno1 [,
jméno2 [, …]] [= iniciální hodnota];
TYP
může být:
int |
klasické 32-bitové znaménkové celé číslo |
ulong |
odpovídá unsigned longu: 32 bitů, bez znaménka, celé číslo |
byte |
8 bitů se znaménkem, celé číslo |
float |
odpovídá floatu. 32 bitů, číslo s pohyblivou řádovou čárkou (desetinné) |
string |
řetězec znaků o délce maximálně 256 znaků |
time |
označuje délku časového úseku, je uložen jako int (může být záporný), přesnost na sekundy |
timestamp |
označuje časový okamžik, přesnost na sekundy |
money |
peníze - celé číslo udávající počet haléřů |
Mezi mnoha typy jsou prováděny implicitní konverze.
Pokud je v deklaraci proměnné uvedena iniciální hodnota, je daná proměnná na tuto hodnotu inicializována při každém spuštění reportu.
Poznámka: obsahují aktuální informace o
hovoru a mají stejný význam jako
proměnné stejného jména v reportech nebo
filtrech
string ANUM, BNUM, CNUM, DNUM - telefonní čísla
string ACOM, BCOM, CCOM, DCOM - komentáře
string ADOM, BDOM, CDOM, DDOM - domény
byte ACAT, BCAT, CCAT, DCAT - kategorie
string ANAME, BNAME, CNAME, DNAME - jména účastníků
byte SRC
ulong FLAGS
string TRUNK
string AUTH
string ACCT
string AUX
ulong PULSES - počet tarifních impulzů
ulong LEN - délka hovoru
timestamp END - čas konce hovoru
ulong OPQUEUE
ulong QUEUE
ulong PULSECOST
TYP jméno_funkce ([TYP [&] parametr1 [, TYP [&] parametr2 [,…]]])
{
[lokální deklarace proměnných (stejné jako globální)]
[seznam příkazů]
}
TYP
je stejný jako u proměnné, ale
navíc může být 'void', který
označuje, že funkce nic nevrací.
Pokud je v lokální deklaraci uvedena iniciální hodnota, dosadí se do dané proměnné při každém volání funkce (než se začnou vykonávat příkazy). Parametry, u kterých je uvedeno '&' se předávají odkazem, tj. funkce může měnit hodnotu proměnné uvedené jako skutečný parametr (ten, který se píše do volání funkce).
Ve volání funkce musí být parametry předávané odkazem uvedeny také s '&'.
Poznámka: není problém na požádání přidat další. Zatím jsou tam ty, které byly potřeba při tarifikování
int split_timestamp( timestamp end, int &year, int &month, int &month_day, int &week_day, int &day_seconds ); |
Rozdělí údaj o časovém okamžiku ('end') na jednotlivé části:
|
int day_intersect( time end0, time length0, time begin1, time end1 ); |
Spočítá počet sekund průsečíku dvou časových období: jedno končí end0 (počítáno od začátku dne) a má délku length0, druhé začíná begin1 a končí end1. |
int strlen(string s); |
Vrací délku řetězce s |
string substr( string s, int start, int length); |
Vrací podřetězec s začínající start a s délkou length |
int parse_trunk( string trunk, int &t1, int &t2, int &t3 ); |
Rozdělí trunk na tři čísla (podle formátu trunku jsou v řetězci trunk uloženy dvojciderně nebo trojciferně) |
{ příkaz1; [příkaz2; [příkaz3; […]]]} |
Skupina příkazů. Chápe se jako jeden příkaz. |
if (podmínka) příkaz if (podmínka) příkaz1 else príkaz2 |
Pokud je splněna podmínka (tj. výraz 'podmínka' bude mít hodnotu nenulovou), provede se příkaz/příkaz1 (může být i víc příkazů uvedených mezi '{' a '}'). V opačném případě se provede příkaz2 (je-li uveden). |
while (podmínka) příkaz |
Dokud je splněna podmínka, provádí se příkaz |
for (příkaz1; podmínka; příkaz3;) příkaz4 |
Na začátku se provede příkaz1, potom dokud platí podmínka, provádí se příkaz4 a příkaz3. |
switch (výraz) { case a: příkazy_a; [break;] case b: příkazy_b; [break;] […] [default: příkazy_default;] } |
Na základě hodnoty výrazu se provádění přesune na příkazy uvedené u hodnoty výrazu (např. je-li výraz roven 5, a 'b' je 5, začnou se provádět příkazy_b. Pokud hodnota výrazu není mezi a, b, …, skočí se na větev default. Výraz musí být převeditelný na int. |
break; break n; |
Skočí se na konec určité oblasti (pokud je uveden parametr n, skočí se na konec n-té oblasti nad aktuálně prováděnou. Oblastí pro break je for a while cykly a switch příkaz. break 3 ukončí třeba tři právě prováděné do sebe vnořené cykly. |
return výraz; |
Vrátí výraz jako výsledek z funkce. |
print string [, string2 [, …]]; println string [, string2 [, …]]; |
Vypíše dané řetězce (pouze pokud je tarifikátor spouštěn samostatně, ne z reportu). println navíc za posledním z nich odřádkuje. |
stop; |
Zastaví provádění skriptu (bez chybového hlášení). |
fail; fail "Chybová hláška"; |
Zastaví provádění skriptu a ohlásí chybu (pokud je to spuštěno z reportu, ukončí se jeho zpracování). |
funkce(parametr [, parametr]); |
Volání funkce. 'parametr' může být buď výraz nebo může být tvaru '& proměnná' (v případě předávání parametru odkazem). Je striktně požadováno, aby souhlasily parametry předávané odkazem a hodnotou v deklaraci funkce i ve volání. U paramtrů předávaných odkazem navíc musí přesně sedět typ. Pokud funkce vrací hodnotu, může být použita i jako výraz. |
Klasické výrazy v infixové notaci se
závorkami.
Používají se
operátory (seřazeno podle priorit, první
řádek má nejvyšší):
'-' (unární), '++', '--', '(typ)', '(+typ)', '(-typ) (přetypování)
'*', '/', '%'
'+', '-'
'<', '>', '<=', '>='
'==', '!='
'&'
'|'
'&&'
'||'
'=' a všechny varianty jako '+=', '*=', …
','
Poznámky:
priority jsou stejné jako v jazyce C.
Oproti jazyku C je zde navíc přetypování na typ 'typ' se zaokrouhlením dolů: (-typ) a nahoru: (+typ).
Nejsou zde bitové posuny.
Překlad probíhá těsně po příkazu serveru 'TARIF ADD', 'TARIF PARSE' nebo 'TARIF REPARSE'. Výskyt chyby je hlášen serverem klientovi a detailní popis důvodu je zapsán do logu.
Hlavní skript; v něm se tarifikace rozskakuje podle trunku do tarifikačních funkcí jednotlivých operátorů. Tento soubor je potřeba upravit podle přiřazení trunků jednotlivým operátorům.
Zde jsou uloženy obecné servisní funkce, které je možné použít pro libovolného operátora.
int is_easter(int year, int month, int day) |
Vrací 1, pokud jsou v daném dnu velikonoce |
int is_holiday(int year, int month, int day) |
Vrací 1, pokud je daný den svátkem |
void get_day_before( int year, int month, int day, int &year1, int &month1, int &day1 ) |
Do proměnných year1, month1 a day1 uloží datum dne před dnem určeným year, month a day |
money do_tarif_1pasmo( time mintime, money mincost, time timeslice, money slicecost, time &begin, time &length, int is_continuation ) |
Spočítá cenu hovoru, který končí v čase 'begin' (počítá se od půlnoci) s délkou 'length'. Parametr is_continuation určuje, zda se počítá první část hovoru (potom je potřeba dbát na minimální zpoplatněnou částku, hodnota is_continuation je 0) nebo zda se jedná o pokračování hovoru jdoucího přes víc dnů, jehož první část byla spočítána. Parametr 'mintime' určuje minimální zpoplatněný čas, parametr 'mincost' určuje cenu za tento minimální čas, 'timeslice' je délka úseků, po kterých se navyšuje cena a konečně 'slicecost' je cena za jeden takovýto úsek. Celý hovor musí ležet v rámci jednoho dne. Parametry 'begin' a 'length' jsou předávány odkazem, uloží se do nich informace nutné pro tarifikování zbytku hovoru pro případ, kdy hovor přejde přes půlnoc. V parametru 'length' se vrátí rozdíl konce hovoru a okamžiku, kdy by se znova navýšila cena (pokud hovor končil přesně na násobku timeslice, bude length 0, jinak je záporná - určuje vlastně na kolik sekund by ještě volající měl "nárok"). V parametru 'begin' se vrátí začátek nepředplacené doby (vždy je větší nebo roven času 'begin' na vstupu). Pokud je třeba 'min_time' 1 minuta a 'timeslice' 30 sekund, hovor trval 1:05 a začal v 7:20:00, bude ma konci v 'begin' 7:21:30 (v tuto dobu by se do hovoru započítala další půlminuta) a 'length' bude -0:25 (protože mohl mluvit ještě 25 sekund bez navýšení ceny). |
money do_tarif_2pasma( time T1, time T2, time mintime1, time mintime2, money mincost1, money mincost2, time timeslice1, time timeslice2, money slicecost1, money slicecost2, time &begin, time &length, int is_continuation ) |
Rozdíl od do_tarif_1pasmo je v tom, že zde je den rozdělen na dvě časová pásma, která mají vlastní parametry mincost, mintime, timeslice a slicecost. Parametry končící 1 jsou pro první pásmo, parametry končící 2 jsou pro druhé pásmo. První pásmo má dvě části, od 0:00:00 do (T1 - 1 sekunda) včetně a od T2 do 23:59:59 včetně, druhé je od T1 do (T2 - 1 sekunda) včetně. Jinak význam ostatních parametrů je jako u do_tarif_1pasmo. |
money do_tarif_3pasma( time T1, time T2, time T3, time T4, time mintime1, time mintime2, time mintime3, money mincost1, money mincost2, money mincost3, time timeslice1, time timeslice2, time timeslice3, money slicecost1, money slicecost2, money slicecost3, time &begin, time &length, int is_continuation ) |
Rozdíl od do_tarif_1pasmo je v tom, že zde je den rozdělen na tři časová pásma, která mají vlastní parametry mincost, mintime, timeslice a slicecost. Parametry končící 1 jsou pro první pásmo, parametry končící 2 jsou pro druhé pásmo a parametry končící 3 pro třetí. První pásmo má dvě části, od 0:00:00 do (T1 - 1 sekunda) a od T4 do 23:59:59, druhé má také dvě části: od T1 do (T2 - 1 sekunda) a od T3 do (T4 - 1 sekunda), třetí je od T2 do (T3 - 1 sekunda) (vše včetně). |
money do_tarif_internet2002( time T1, time T2, money low_cost1, money high_cost1, money low_cost2, money high_cost2, time &begin, time &length1, time &length2 ) |
Tarifikuje hovor podle internetového tarifu, kde se počítá v minutových intervalech, ale minuta v prvních 10 minutách od začátku hovoru má jinou cenu než minuta ve zbytku hovoru. 'low_cost1' je cena v prvním pásmu v prvních 10 minutách. 'low_cost2' je cena v prvním pásmu mimo prvních 10 minut. 'high_cost1' je cena ve druhém pásmu v prvních 10 minutách. 'high_cost2' je cena ve druhém pásmu mimo prvních 10 minut. Pásma se stanovují stejně jako u do_tarif_2pasma, význam ostatních parametrů je také stejný jako u ostatních funkcí. |
Zde jsou funkce uzpůsobené konkrétně pro Telecom, používají ale funkce z global.trf.
money tarif_telecom_mistni02( money cost_low, money cost_high, timestamp end, time length ) |
Tarifikuje místní hovor s cenou 'cost_low' za minutu v slabém pásmu, 'cost_high' za minutu v silném pásmu. 'end' je konec hovoru, length je délka hovoru. |
money tarif_telecom_mezimesto02( money cost_night, money cost_low, money cost_high, timestamp end, time length ) |
Tarifikuje meziměstský hovor s cenou 'cost_night' za minutu v nočním pásmu, 'cost_low' za minutu v slabém pásmu a 'cost_high' za minutu v silném pásmu. 'end' je konec hovoru, length je délka hovoru. |
money tarif_telecom_mobil02( money cost, timestamp end, time length ) |
Tarifikuje hovor na mobil, 'cost' je cena za minutu, ostatní parametry mají stejný význam jako u tarif_telecom_mistni02. |
money tarif_telecom_mezinarodni02( money cost_low, money cost_high, timestamp end, time length ) |
Tarifikuje mezinárodní hovor s cenou 'cost_low' za minutu v slabém pásmu, 'cost_high' za minutu v silném pásmu. 'end' je konec hovoru, length je délka hovoru. Od místního se liší tím, že je tarifikován po sekundách a minimální zpoplatněná délka je jedna minuta. |
money tarif_telecom_2pasma_02( time min_time, time interval, money cost_low, money cost_high, timestamp end, time length ) |
Tarifikuje speciální tarify Telecomu, které jsou rozděleny do dvou časových pásem a mají různě dlouhé minimální doby a intervaly, ale vždy se počítá se stejnou cenou vztaženou k jedné minutě. Slouží např. pro tarifikování různých barevných linek. 'min_time' je minimální zpoplatněná doba. 'interval' je interval, po kterých se tarikuje. 'cost_low' je cena za minutu ve slabém pásmu. 'cost_low' je cena za minutu v silném pásmu. |
money tarif_telecom_1pasmo_02( time min_time, time interval, money cost_per_minute, timestamp end, time length ) |
Tarifikuje speciální tarify Telecomu, které nejsou rozděleny do časových pásem a mají různě dlouhé minimální doby a intervaly, ale vždy se počítá se stejnou cenou vztaženou k jedné minutě. Slouží např. pro tarifikování různých barevných linek. 'min_time' je minimální zpoplatněná doba. 'interval' je interval, po kterých se tarikuje. 'cost_per_minute' je cena za minutu. |
money tarif_telecom_internet2002( money cost1_low, money cost1_high, money cost2_low, money cost2_high, timestamp end, time length ) |
Tarif Telecom Internet2002. 'cost1_low' je cena za minutu ve slabém pásmu v prvních 10 minutách, 'cost1_high' je cena za minutu v silném pásmu v prvních 10 minutách, 'cost2_low' je cena za minutu ve slabém pásmu ve zbytku hovoru. 'cost2_high' je cena za minutu ve slabém pásmu ve zbytku hovoru. |
Je zde hlavní tarifikovací funkce tarif_telecom(), která na základě BCATu určí, jaké tarifikovací funkce a s jakými cenami zavolá. Tento soubor je potřeba upravit podle konkrétní konfigurace BCATů a podle konkrétního cenového programu.