Mit Hilfe von benutzerdefinierten Filtern können Sie anpassen und festlegen, wie und wann eine Aktion ausgeführt wird. Sie können hierfür entweder eine zuvor definierte Skriptdatei laden oder ein neues Skript schreiben.

MarkVision Messenger verfügt über eine sehr einfache Skriptsprache zum Definieren von Filtern. Nachfolgend finden Sie eine vollständige Liste der Anweisungen und Bedingungen, mit denen Sie einen benutzerdefinierten Filter erstellen können:

Anweisungen

Bedingungen

Als Beispiel finden Sie hier die Skriptdarstellung des integrierten Filters "Auslösen bei Aktivierung":

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

Die Bedingung EventDataIs fragt das Ereignis nach dem Wert des Schlüsselworts event.state. Es handelt sich um dasselbe Schlüsselwort, das Sie in Befehlszeilen und E-Mail-Nachrichten einfügen können. Die erste Anweisung (IfThen) führt die nächste Anweisung aus, sofern die Bedingung EventDataIs ("state", "ACTIVE") wahr ist. Eine EventDataIs-Bedingung ist erfüllt, wenn der Wert des Schlüsselworts (state) mit dem vorgegebenen Wert (ACTIVE) übereinstimmt. Die nächste Anweisung (Distribute) veranlasst die Ausführung des Befehls.

Das Skript zum Festlegen des Filters "Auslösen bei Aktivierung" mit einer Verzögerung von 30 Sekunden sollte wie folgt aussehen:

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

Die geschweiften Klammern ({}) dienen dazu, Anweisungen zu einer Liste zusammenzufassen. Im vorherigen Beispiel waren diese Klammern nicht erforderlich, weil die Anweisung IfThen und die nachfolgende Anweisung als eine einzige Anweisung betrachtet worden waren.

Die Anweisung WaitUntil hält die Ausführung des Skripts an, bis die Bedingung wahr wird. Die Bedingung TimeIsAfter prüft erst dann, ob die Bedingung wahr ist, nachdem die festgelegte Anzahl Sekunden verstrichen ist. Wenn das Ereignis nach Ablauf der 30 Sekunden immer noch aktiv ist, wird der Befehl mit der Anweisung Distribute ausgeführt.

Die Skriptdarstellung des integrierten Filters "Auslösen bei Aktivierung oder Löschung" ist eine einzige Distribute-Anweisung. Angenommen, Sie wählen Papierfach fehlt als Ereignis aus, möchten jedoch, dass der Befehl nur dann ausgeführt wird, wenn das Ereignis für Fach 3 eintritt. Außerdem soll die Ausführung des Befehls um 20 Minuten verzögert werden und der Befehl soll in Abständen von jeweils 20 Minuten erneut ausgeführt werden, wenn die Bedingung immer noch Aktiv ist. Das Skript für diesen Filter sieht folgendermaßen aus:

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

In diesem Beispiel wurde And für die Erstellung einer zusammengesetzten Bedingung verwendet. Die While-Schleife wird nur abgearbeitet bzw. wiederholt, wenn das Ereignis für Fach 3 aktiv ist. Der Code innerhalb der Schleife ist mit Ausnahme der Bedingung TimeIsAfter, die hier auf 1200 Sekunden (20 Minuten) eingestellt ist, derselbe wie beim Filter "Trigger on Active".