カスタムフィルタにより、アクションの実行方法をカスタム化できます。 これは、以前に定義したスクリプトファイルをアップロードするか、新しいスクリプトファイルを作成して実行できます。

MarkVision Messenger には、フィルタを定義するための非常に簡単なスクリプト言語が用意されています。 以下に、カスタムフィルタを作成する際に使用できるステートメントを示します。

ステートメント

条件

例として、付属の[有効になったら起動]フィルタのスクリプトを示します。

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

条件 EventDataIs によって、イベントのキーワード event.state の値を確認します。 これはコマンド行や E メールメッセージに挿入できるのと同じキーワードです。 最初のステートメント IfThen は、条件 EventDataIs ("state", "ACTIVE") が真の場合に、次のステートメントを実行します。 条件 EventDataIs は、キーワード(state)の値が指定された値(ACTIVE)と一致する場合に真になります。 次のステートメント Distribute は、コマンドが実行されるようにします。

次に、スクリプトによって[有効になったら実行]フィルタを 30 秒間の遅延時間で設定する方法を示します。

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

中括弧({})は、ステートメントをリストにまとめるのに使用されます。 前の例では、IfThen とそれ以降のステートメントが 1 つのステートメントとして扱われていたため、必要ありませんでした。

ステートメント 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 は複合条件を作成するために使用されています。 While ループは、カセット 3に対してイベントが有効な場合のみ実行されるか繰り返されます。 ループ中のコードは、条件 TimeIsAfter が 1200 秒間(20 分間)待機するよう設定されていること以外は、[有効になったら起動]フィルタのコードと同じです。