自訂過濾程式可讓您自訂及定義動作的執行方式。執行這項作業的方式有兩種:一種是上傳先前定義的 Script 檔,另一種是撰寫新的 Script 檔。
MarkVision Messenger 提供一種很簡單的 Script 語言,用來定義過濾程式。以下是一份完整的清單,列有您可用來撰寫自訂過濾程式的陳述式和條件式。
While(條件式)
WaitUntil(條件式)
IfThen(條件式)
{ StatementList }
Distribute
And(條件式_1...條件式_n)
Or(條件式_1...條件式_n)
EventDatals (鍵, 值)
SourceDatals (鍵, 值)
TimeIsAfter
以下是內建「作用時觸發」過濾程式的 Script 表示法範例:
IfThen (EventDataIs("state", "ACTIVE")) DistributeEventDataIs 條件式的作用,是向事件詢問 event.state 關鍵字的值。這和您插入指令行和電子郵件訊息中的關鍵字是同一個關鍵字。如果條件式 EventDataIs ("state", "ACTIVE") 為真,則第一個陳述式 IfThen 會執行下一個陳述式。若關鍵字 (state) 的值符合給定的值 (ACTIVE),則 EventDataIs 條件式為 True(真)。下一個陳述式 Distribute 會使指令執行。
以下是 Script 將「作用時觸發」過濾程式設定等待時間為 30 秒的情況:
{ WaitUntil (TimeIsAfter(30)) IfThen(EventDataIs("state", "ACTIVE")) Distribute }大括號 ({}) 的作用,是將各個陳述式集合在同一個清單中。先前的範例之所以不需要大括號 ({}),因為 IfThen 和其後的陳述式被視同為一個陳述式。
WaitUntil 陳述式會使 Script 暫停,直到條件式為 True(真)。經過指定的秒數後,TimeIsAfter 條件式才會檢查是否為真。經過 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 分鐘)。