自訂過濾程式

自訂過濾程式可讓您自訂並定義「動作」的執行方式。要執行這項作業,您可以上載事先定義的 Script 檔,或另外撰寫一個新的 Script 檔。

MarkVision Messenger 將提供您撰寫 Script 的簡單語言,供您定義過濾程式。以下有一份完整的清單,其中列出可用來撰寫自訂過濾程式的陳述式與條件式:

陳述式:

條件式:

比方說,以內建作用時觸發過濾程式的 Script 呈現方式為例:

IfThen(EventDataIs("state", "ACTIVE"))
Distribute

EventDataIs 條件式的效果便是向事件要求 event.state 關鍵字的值。您同樣可以將此關鍵字插入指令行與電子郵件訊息中。如果條件式 EventDataIs ("state", "ACTIVE") 為 True,則第一個陳述式 IfThen 便會執行下一個陳述式。如果關鍵字 (state) 的值與指定的值 (ACTIVE) 相符,則 EventDataIs 條件式為 True。如此,下一個陳述式 Distribute 便會執行指令。

現在,我們來看一下,如果要將作用時觸發過濾程式設定成有 30 秒鐘的延遲時間,則應如何撰寫 Script:

{
WaitUntil (TimeIsAfter(30))
IfThen(EventDataIs("state", "ACTIVE"))
Distribute
}

大括號 ({}) 的功用是要將數個陳述式歸納為同一清單。前一個範例中不需使用大括號,原因是 IfThen 以及其後的陳述式,可視為單一陳述式。

陳述式 WaitUntil 會使 Script 暫停執行,直到條件式為 True 時才會繼續執行。條件式 TimeIsAfter 必須超過指定的秒數,檢查結果才會變成 True。一旦超過 30 秒,且事件仍在「作用」狀態下,則陳述式 Distribute 便會執行該指令。

內建的作用或清除時觸發過濾程式的 Script 呈現方式,是一個單一的 Distribute 陳述式。譬如,假設您選取找不到送紙匣作為事件,但您希望只在該事件發生於送紙匣 3 時才執行指令。此外,您還希望先等待 20 分鐘後才執行指令,並且希望每過 20 分鐘後,如果該狀況仍處於「作用」狀態,便重新執行該指令。 我們來看看針對此過濾程式所撰寫的 Script:

While (And(EventDataIs("state", "ACTIVE"), EventDataIs("location", "Tray 3")))

{
WaitUntil(TimeIsAfter(1200))
IfThen(EventDataIs("state", "ACTIVE"))
Distribute
}

在本範例中,And 的功用在於建置一個複合條件式。另外,只有當事件作用於送紙匣 3 時,才會進入或重複 While 迴圈。 該迴圈內的程式碼,跟作用時觸發過濾程式的程式碼沒有什麼不同,唯一的差別在於 TimeIsAfter 條件式所設定的等待時間是 1200 秒(20 分鐘)。