# Tvůrce výrazů pravidel SIP

Pomocí tvůrce podvýrazů je možné sestavovat z podvýrazů podmínky komplexních pravidel pomocí operátorů AND, OR, NOT a seskupování do závorek. Když změny použijete, nástroj pro tvorbu pravidel ověří pravidlo a upozorní vás na nesoulad mezi kulatými závorkami a nepodporovanými logickými operátory.

Chcete-li zobrazit tuto stránku administrativní konzoly, klepněte na volbu Servery > Typy serverů > Směrovače ODR > název_směrovače_odr > Nastavení směrovače ODR SIP > Pravidla protokolu SIP pro zásady směrování > Přidat > Tvůrce podvýrazů.

Chcete-li upravit pravidla pomocí nástroje pro tvorbu pravidel, musíte mít oprávnění k administraci pro roli administrátora.

## Vybrat operand

### Operandy zásad služeb a směrování

V závislosti na vybraném protokolu se zobrazí různé operandy. Následující tabulka zahrnuje názvy operandů zobrazené v konzole, skutečný operand, jak bude zobrazen ve výrazu, platné protokoly pro jednotlivé operandy a popis jednotlivých operandů.

Tabulka 1. Operandy. Následující tabulka popisuje názvy operandů v konzole
Operand | Syntaxe | Popis
--- | --- | ---
Metoda protokolu SIP | `request.method` | Metoda protokolu SIP pro daný požadavek. Přípustné hodnoty jsou INVITE, TRYING, RINGING, ACK, OK a BYE. Pokud zpráva není požadavek, vrací tento operand hodnotu Null.
Kód odezvy protokolu SIP | `response.code` | Kód odpovědi příčiny. Pokud zpráva není odpověď, vrací tento operand hodnotu -1.
Schéma záhlaví Komu | `to.uri.scheme` | Schéma pole záhlaví Komu.
Schéma identifikátoru URI | `request.uri.scheme` | Schéma identifikátoru URI.
Schéma záhlaví Od | `request.from.uri.scheme` | Schéma pole záhlaví Od.
Identifikátor URI požadavku | `request.uri` | Identifikátor URI požadavku.
Identifikátor To URI | `request.to.uri` | Identifikátor URI pole záhlaví Komu.
Identifikátor From URI | `request.from.uri` | Identifikátor URI pole záhlaví Od.
Záhlaví Od | `request.from` | Pole záhlaví Od.
Záhlaví Komu | `request.to` | Pole záhlaví Komu.
Zobrazovaný název záhlaví Komu | `request.to.display-name` | Zobrazovaný název v poli záhlaví Komu.
Zobrazovaný název záhlaví Od | `request.from.display-name` | Zobrazovaný název pole záhlaví Od.
Hostitel URI Komu | `request.to.uri.host` | Port v identifikátoru URI pole záhlaví Komu.
Hostitel serveru | `serverhost` | Úplný název hostitele serveru. Tento operand nepodporuje číselné operátory, jako jsou `>, >=, <, <=`.
Port | `port` | Port naslouchání, na kterém byl přijat požadavek.
Záhlaví kontaktu | `request.contact` | Pole záhlaví Kontakt.
URI kontaktu | `request.contact.uri` | Pole záhlaví Identifikátor URI kontaktu.
Hostitel klienta | `clienthost` | Úplný název hostitele klienta. Jedná se o hodnotu názvu hostitele příkazů protokolu IP (Internet Protocol). Tento operand nepodporuje číselné operátory, jako jsou `>, >=, <, <=`.
Klient IPV4 | `clientipv4` | Adresa IP počítače klienta s použitím adresy protokolu IPv4 (Internet Protocol verze 4) čtyřmístného typu odděleného tečkami `n.n.n.n`.
Klient IPv6 | `clientipv6` | Adresa IPv6 (Internet Protocol verze 6) 128bitového typu `x:x:x:x:x:x:x:x` následující po dokumentu RFC 1924 (Request for Comments 1924) počítače klienta.
Server IPv4 | `serveripv4` | Adresa IP počítače serveru s použitím adresy protokolu IPv4 čtyřmístného typu odděleného tečkami `n.n.n.n`.
Server IPv6 | `serveripv6` | Adresa IPv6 128bitového typu `x:x:x:x:x:x:x:x` následující po dokumentu RFC 1924 počítače serveru.
Přenos požadavku | `request.transport` | Přenos požadavku.
Uživatel identifikátoru URI požadavku | `request.uri.user` | Uživatel v identifikátoru URI požadavku.
Uživatel URI Od | `request.from.uri.user` | Uživatel v poli záhlaví Od.
Uživatel URI Komu | `request.to.uri.user` | Uživatel v poli záhlaví Komu.
Hostitel URI požadavku | `request.uri.host` | Hostitel v identifikátoru URI požadavku.
Hostitel URI Od | `request.from.uri.host` | Hostitel v poli záhlaví Od.
Port URI požadavku | `request.uri.port` | Port v identifikátoru URI požadavku.
Port URI Od | `request.from.uri.port` | Port v identifikátoru URI pole záhlaví Od.
Hostitel URI Komu | `request.to.uri.host` | Hostitel v poli záhlaví Komu.
Název záhlaví | `header $<name>` | Název a hodnota záhlaví. Například výraz `header$Host='localhost'` testuje, zda požadavek obsahuje záhlaví hostitele HTTP s hodnotou `localhost`. Chcete-li otestovat přítomnost či nepřítomnost záhlaví hostitele, použijte jeden z těchto výrazů:
    header$Host IS NOT NULL
    header$Host IS NULL
Čas | `time` | Tento operand je používá k definování data a času, kdy musí být daný požadavek splněn. Dvě nepovinná pole jsou Čas zahájení a Čas ukončení. Pokud je požadavek přijat mimo toto definované časové okno, nebude zpracován. Pole Čas zahájení a Čas ukončení mají následující formát: `den_v_týdnu/den_v_měsíci/měsíc/rok::hodina:minuta:sekunda`. Například čtvrtek 11. dubna roku 2007 ve 13:03:45 bude uveden takto: Thu/11/Apr/2007::13:03:45 V libovolném poli lze použít zástupný znak s hodnotou *. Například 1. den každého měsíce je určen jako */1. Hodnota pro den_v_týdnu jsou Sun, Mon, Tue, Wed, Thu, Fri, Sat a pro den_v_měsíci 1-31. Hodnota pole měsíc je nečíselná hodnota představující dvanáct měsíců: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec. Hodnota pole rok je tvořena čtyřmi číslicemi daného roku. Například 2007. Hodnota pole hodina je hodina dne na 24hodinové časomíře. Například 8 hodin ráno představuje hodnota ::8. Minuta a sekunda jsou celá čísla v rozsahu 0-59. Dopředné lomítko (/) se používá k oddělení parametrů data, dvojitá dvojtečka (::) k oddělení hodnot data a času a dvojtečka (:) k oddělení parametrů času. Všimněte si, že akci směrování, která se provede, určuje logický výsledek celého pravidla, v němž se používá operand time.
Procentní část | `percentage$<val>` | Operand percentage se vyhodnotí jako `true` v pevně určené procentní části případů. Například `percentage$50` se vyhodnotí jako `true` v průměru v 50 % případů.
Náběh | `rampup$<čas_zahájení>` `$<čas_dokončení>` | Operand `rampup` se vyhodnotí jako `true` v proměnné procentní části případů. Vždy se vyhodnotí jako `false` před časem zahájení `<startTime>` a jako `true` po čase dokončení `<completionTime>`. Jak plyne čas od času zahájení `<startTime>` k času dokončení `<completionTime>`, vyhodnocuje se jako `true` s lineárně rostoucí pravděpodobností. Formát času zahájení `<startTime>` a času dokončení `<completionTime>` je `den/měsíc/rok::hodina:minuta:sekunda`. kde `den` je den v měsíci, `měsíc` je jeden z 12 měsíců: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, `rok` je čtyřciferný rok, `hodina` je dvouciferná hodina na 24hodinové časomíře a `minuta` a `sekunda` jsou dvouciferné hodnoty minut a sekund. Příklad: `rampup$01/Jan/2007::08:00:00$01/Jan/2007::17:00:00` začíná občasným vyhodnocením jako `true` v 8 hodin ráno 1. ledna 2007 a vždy se vyhodnotí jako `true` od času dokončení náběhu v 5 hodin odpoledne téhož dne.

## Operátor

Tabulka 2. Operátory specifikace trasování
Operátor | Popis
--- | ---
Je rovno, ignorovat velká/malá písmena (EQUALSIGNORECASE) | Operátor je rovno, ignorovat velká/malá písmena. Je ignorována velikost písmen řetězců. `'ABC' EQUALSIGNORECASE 'abc'` je true. `('ABC' = 'abc')` je false.
Nerovná se (< >) | Operátor nerovnosti vyjadřuje, že hodnota operandu není rovna zadané hodnotě.
V (IN) | `Řetězec IN seznam řetězců` se vyhodnocuje na true, pokud řetězec nalevo přesně odpovídá (rozlišují se malá a velká písmena) nějakému řetězci v seznamu napravo. Příklad: ’adrian’ in `('keith','eric','kalyan','david', 'adrian atd.')` je false. `'adrian'` in `('tom','adrian')` je true. ’adrian’ in `('Tom','Adrian')` je false. `celé číslo IN seznam celých čísel` : `1` in `(1,2,3,4,5)` je true. `6` in `(1,2,3,4,5)` je false.
Je jako (LIKE) | Vyjadřuje porovnání vzorků u hodnot řetězcových operandů. Hodnota musí obsahovat zástupný znak (`%`) na pozici, kde se očekává začátek porovnání vzorků. Například výraz
    host LIKE %blanca
odpovídá slovu `blanca` a jakémukoli jinému slovu, které končí řetězcem `blanca`, zatímco výraz
    host LIKE blanca%
odpovídá slovu `blanca` a jakémukoli jinému slovu, které začíná řetězcem `blanca`. Výraz
    host LIKE %blanca%
odpovídá slovu `blanca` a jakémukoli slovu, ve kterém je vložen token `blanca`.
Je jako, ignorovat velká/malá písmena (LIKEIGNORECASE) | Tento operátor vyjadřuje vzorek hledající shodu s hodnotou operandu typu řetězec. Je ignorována velikost písmen řetězců.
Není null (IS NOT NULL) | Ověření dotazu ukazuje existenci požadovaného parametru.
Zřetězit (+) | Tento operátor vyhodnocuje `'abc'+'def'` na `'abcdef'`.
Jako v (LIKEIN) | Tento operátor vyjadřuje, že `řetězec likein (řetězec1, řetězec2, řetězec3,...)` se vyhodnocuje na true, pokud řetězec nalevo od operátoru `likein` odpovídá minimálně jednomu z řetězců (řetězecN).
Je null (IS NULL) | Ověření dotazu ukazuje neexistenci požadovaného parametru. Testuje na operand, který má hodnotu `NULL`.
Je rovno (=) | Operátor rovnosti vyjadřuje shodu s rozlišováním malých a velkých písmen.
Větší než (>) | Vyhodnocuje se na standardní logický výsledek.
Větší nebo rovno (>=) | Vyhodnocuje se na standardní logický výsledek.
Menší než (<) | Vyhodnocuje se na standardní logický výsledek.
Menší nebo rovno (<=) | Vyhodnocuje se na standardní logický výsledek.
Mezi (BETWEEN) | Používá se společně s operátorem `AND` k výběru rozsahu hodnot včetně první (nejnižší) a poslední (nejvyšší) hodnoty. Společně se používají pro čísla a hodnoty data.

## Hodnota

V závislosti na vámi zvoleném operátoru zadejte hodnotu podvýrazu, který jste se rozhodli vytvořit.

## Generovat podvýraz

Generovat podvýraz jako výsledek vámi zadaného operandu, operátoru a hodnot.

## Připojit

Klepnutím připojíte do rámečku na panelu pravidel.

Související informace:
Pravidla protokolu SIP pro zásady směrování
Pravidla protokolu SIP pro zásady služeb

Název souboru: sip_rulebuilder_detail.html