# SIP 規則表示式建置器

請利用子表示式建置器，透過 AND、OR、NOT 和括弧分組，從子表示式建置複式規則條件。 規則建置器會在您套用變更時驗證規則，並在括弧不對稱及邏輯運算子不受支援時發出警示。

如果要檢視這個管理主控台頁面，請按一下伺服器 > 伺服器類型 > 隨需應變路由器 > odr_name > SIP 隨需應變路由器設定 > 遞送原則 SIP 規則 > 新增 > 子表示式建置器。

如果要利用規則建置器來修改規則，您必須有管理者的管理專用權。

## 選取運算元

### 遞送及服務原則運算元

依所選的通訊協定而定，會顯示不同的運算元。下表包括主控台所顯示的運算元名稱、出現在表示式中的實際運算元、每個運算元的有效通訊協定，以及每個運算元的說明。

表 1. 運算元。下表說明顯示於主控台的運算元名稱
運算元 | 語法 | 說明
--- | --- | ---
SIP 方法 | `request.method` | 要求的 SIP 方法。可能的值如下：INVITE、TRYING、RINGING、ACK、OK 及 BYE。如果訊息不是要求，則此運算元傳回空值。
SIP 回應碼 | `response.code` | 回應的回應碼。如果訊息不是回應，則此運算元傳回 -1。
「目標」標頭的架構 | `to.uri.scheme` | 「目標」標頭欄位中的架構。
URI 體制 | `request.uri.scheme` | URI 架構。
「來源」標頭的架構 | `request.from.uri.scheme` | 「來源」標頭欄位中的架構。
要求 URI | `request.uri` | 要求 URI。
目標 URI | `request.to.uri` | 「目標」標頭欄位中的 URI。
來源 URI | `request.from.uri` | 「來源」標頭欄位中的 URI。
來源標頭 | `request.from` | 「來源」標頭欄位。
「目標」標頭 | `request.to` | 「目標」標頭欄位。
目標標頭顯示名稱 | `request.to.display-name` | 「目標」標頭欄位中的顯示名稱。
來源標頭顯示名稱 | `request.from.display-name` | 「來源」標頭欄位中的顯示名稱。
目標 URI 主機 | `request.to.uri.host` | 「目標」標頭欄位中的 URI 埠。
伺服器主機 | `serverhost` | 伺服器的完整主機名稱。此運算元不支援 `>、>=、<、<=` 等數值運算子。
埠 | `port` | 收到要求的接聽埠。
聯絡標頭 | `request.contact` | 「聯絡」標頭欄位。
聯絡 URI | `request.contact.uri` | 「聯絡」標頭欄位中的 URI。
用戶端主機 | `clienthost` | 完整的用戶端主機名稱。這是網際網路通訊協定 (IP) 指令主機名稱的值。此運算元不支援 `>、>=、<、<=` 等數值運算子。
clientipv4 | `clientipv4` | 用戶端電腦的 IP 位址，使用「網際網路通訊協定」第 4 版 (IPv4) 帶點四段式位址類型 `n.n.n.n`。
clientipv6 | `clientipv6` | 「網際網路通訊協定」第 6 版 (IPv6) 128 位元位址類型 `x:x:x:x:x:x:x:x`，遵循用戶端電腦的「意見請求 1924 (RFC 1924)」。
serveripv4 | `serveripv4` | 伺服器電腦的 IP 位址，使用 IPv4 帶點四段式位址類型 `n.n.n.n`。
serveripv6 | `serveripv6` | IPv6 128 位元位址類型 `x:x:x:x:x:x:x:x`，遵循伺服器電腦的 RFC 1924。
要求傳輸 | `request.transport` | 要求的傳輸。
要求 URI 使用者 | `request.uri.user` | 要求 URI 使用者。
來源 URI 使用者 | `request.from.uri.user` | 「來源」標頭欄位中的使用者。
目標 URI 使用者 | `request.to.uri.user` | 「目標」標頭欄位中的使用者。
要求 URI 主機 | `request.uri.host` | 要求 URI 主機。
來源 URI 主機 | `request.from.uri.host` | 「來源」標頭欄位中的主機。
要求 URI 埠 | `request.uri.port` | 要求 URI 埠。
來源 URI 埠 | `request.from.uri.port` | 「來源」標頭欄位中的 URI 埠。
目標 URI 主機 | `request.to.uri.host` | 「目標」標頭欄位中的主機。
標頭名稱 | `header$<name>` | 標頭名稱和值。例如，`header$Host='localhost'` 表示式會測試要求，以瞭解它是否包含值為 `localhost` 的 HTTP 主機標頭。如果要測試主機標頭是否存在，請使用下列其中一個表示式：
    header$Host IS NOT NULL
    header$Host IS NULL
時間 | `time` | 此運算元是用來定義必須允許使用給定要求的日期和時間。兩個選用欄位是「開始時間」和「結束時間」。如果在所定義時間間隔之外收到要求，則要求不會加以處理。 「開始時間」和「結束時間」欄位皆使用下列格式：`dayOfWeek/dayOfMonth/month/year::hour:minute:second`。 例如，2007 年 4 月 11 日星期四下午 1 點 3 分 45 秒指定為： Thu/11/Apr/2007::13:03:45 任何欄位都可以在值中使用萬用字元 *。例如，每月的第一天可指定為 */1。 dayofWeek 值是 Sun、Mon、Tue、Wed、Thu、Fri、Sat，而 dayOfMonth 值的範圍是 1 到 31。 month 值是非數值，代表十二個月份：Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov、Dec。 year 值是由年份的四位數字組成。例如，2007。 hour 值是當日時刻，24 小時表示法。例如，上午 8 點表示為 ::8。minute 和 second 是範圍 0 到 59 的整數。 正斜線 (/) 是用來分開日期參數，雙冒號 (::) 是用來分開日期和時間值，冒號 (:) 是用來分開日期時間參數。 請注意，它是使用 time 運算元的整個規則 Boolean 結果，判定要採取的遞送動作。
百分比 | `percentage$<val>` | 對於時間的固定百分比，percentage 運算元求值為 `true`。例如，對於時間平均值 50%，`percentage$50` 求值為 `true`。
加速 | `rampup$<startTime>` `$<completionTime>` | 對於時間的可變百分比， `rampup` 運算元求值為 `true`。如果在 `<startTime>` 之前，則 rampup 運算元一律求值為 `false`；如果在 `<completionTime>` 之後，則 rampup 運算元一律求值為 `true`。當時間以線性遞增百分比從 `<startTime>` 進展到 `<completionTime>` 時，rampup 運算元將求值為 `true`。 `<startTime>` 及 `<completionTime>` 的格式是 `day/month/year::hour:min:sec`。 其中，`day` 是月份中的日期，`month` 是 12 個月份之一： Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov、Dec，`year` 是 4 位數年份， `hour` 是 24 小時表示法的 2 位數小時， 而 `min` 及 `sec` 分別是表示分鐘及秒鐘的 2 位數值。 例如， `rampup$01/Jan/2007::08:00:00$01/Jan/2007::17:00:00` 在 2007 年 1 月 1 日上午 8 點開始時，偶而求值為 `true`，但在同一天的加速完成時間下午 5 點，一律求值為 `true`。

## 運算子

表格 2. 追蹤規格運算子
運算子 | 說明
--- | ---
等於且不區分大小寫 (EQUALSIGNORECASE) | 「等於且不區分大小寫」運算子。會忽略字串的大小寫。`'ABC' EQUALSIGNORECASE 'abc'` 為 true。`('ABC' = 'abc')` 為 false。
不等於 (< >) | 不等於運算子表示運算元值不等於您輸入的值。
In (IN) | 如果左側的字串與右側列出的字串完全相符（區分大小寫）， 則 `字串 IN 字串清單`會求值為 true。例如： ’adrian’ in `('keith','eric','kalyan','david', 'adrian and etc')` 為 false。 `'adrian'` in `('tom','adrian')` 為 true。 ’adrian’ in `('Tom','Adrian')` 為 false。 `整數 IN 整數清單`： `1` in `(1,2,3,4,5)` 為 true。 `6` in `(1,2,3,4,5)` 為 false。
類似 (LIKE) | 表示對字串運算元的值進行型樣比對。這個值在型樣比對的起始位置中，必須包含萬用字元 (`%`)。 例如，表示式：
    host LIKE %blanca
符合單字 `blanca` 和結尾是 `blanca` 的其他任何單字； 表示式：
    host LIKE blanca%
符合單字 `blanca` 和開頭是 `blanca` 的其他任何單字。表示式：
    host LIKE %blanca%
符合單字 `blanca` 和內嵌記號 `blanca` 的任何單字。
類似且不區分大小寫 (LIKEIGNORECASE) | 這個運算子表示對字串運算元值進行型樣比對。會忽略字串的大小寫。
非空值 (IS NOT NULL) | 查詢的驗證作業顯示所要求的參數存在。
連結 (+) | 這個運算子會將 `'abc'+'def'` 求值為 `'abcdef'`。
Like In (LIKEIN) | 這個運算子表示如果 `likein` 左側的字串符合一或多個字串 (stringN)， 則 `string likein (string1, string2, string3,...)` 會求值為 true。
空值 (IS NULL) | 查詢的驗證作業顯示所要求的參數不存在。測試運算元是否有 `NULL` 值。
等於 ( = ) | 這個相等運算子表示一個區分大小寫的相符項目。
大於 (>) | 求值為標準邏輯結果。
大於或等於 (>=) | 求值為標準邏輯結果。
小於 (<) | 求值為標準邏輯結果。
小於或等於 (<=) | 求值為標準邏輯結果。
介於 (BETWEEN) | 與 `AND` 搭配使用， 以選取包含第一個值（低值）到最後一個值（高值）的值範圍。它們一起運作於數字和日期值。

## 值

請依所選的運算子，輸入選擇要建立之子表示式的值。

## 產生子表示式

產生子表示式作為所指定運算元、運算子和值的結果。

## 附加

請按一下這裡，在規則畫面上附加到此框。

相關資訊：
遞送原則 SIP 規則
服務原則 SIP 規則

檔名：sip_rulebuilder_detail.html