自定义过滤器允许您定制并定义您的操作如何执行。您可以通过上载以前定义的脚本文件或编写一个新的脚本文件来完成。

MarkVision Messenger 提供非常简单的脚本编写语言来定义过滤器。下面是您可以用于编写自定义过滤器的语句和条件的完整列表:

语句

条件

作为一个例子,这是内置的“活动时触发”过滤器的脚本表示:

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

EventDataIs 条件的作用是询问事件有关 event.state 关键字的值。这是与您可以插入命令行和电子邮件消息的相同的关键字。第一条语句,IfThen,当条件 EventDataIs ("state", "ACTIVE") 为真时执行下一条语句。如果关键字(state)的值与给定的值(ACTIVE)相匹配,则 EventDataIs 条件为真。下一条语句,Distribute,使命令执行。

下面是将“活动时触发”过滤器设置为 30 秒延迟的脚本编写:

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

大括号({})被用于将语句组成列表。在前面的例子中,因为 IfThen 和后面的语句被当作一条语句处理,所以不需要它们。

WaitUntil 语句使脚本暂停执行,直到条件为真。TimeIsAfter 条件只在经过指定的秒数后检查是否为真。当经过 30 秒之后,如果事件仍然为“活动”,则 Distribute 语句执行命令。

内置的“活动或清除时触发”过滤器的脚本表示是单个的 Distribute 语句。例如,如果您选择缺少进纸匣作为事件,但是您只希望当事件发生在进纸匣 3 时才执行命令。另外,您还希望在执行命令之前等待 20 分钟,如果状态仍然为 Active(活动),则在相同的 20 分钟间隔后再次执行命令。让我们看该过滤器的脚本编写:

While (And(EventDataIs("state", "ACTIVE"), EventDataIs("location", "Tray 3")))
{
    WaitUntil(TimeIsAfter(1200))
    IfThen(EventDataIs("state", "ACTIVE"))
    Distribute
}

在此例子中,And 被用于构造组合条件。只有当“进纸匣 3”的事件是活动时,才进入或重复 While 循环。除了 TimeIsAfter 条件被设置为等待 1200 秒(20 分钟)之外,循环中的代码与“活动时触发”过滤器的代码相同。