Les filtres personnalisés vous permettent de personnaliser et de définir le mode d’exécution de votre action. Vous pouvez procéder à cette opération en téléchargeant un fichier de script déjà défini ou en en écrivant un nouveau.

MarkVision Messenger fournit un langage de script très simple pour définir des filtres. La liste suivante correspond à une liste complète des instructions et des conditions que vous pouvez utiliser pour écrire un filtre personnalisé :

Instructions

Conditions

Par exemple, voici la représentation du script correspondant au filtre Déclencher lorsque l'état est défini sur Active :

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

La condition EventDataIs a pour effet de demander à l'événement la valeur de son mot clé event.state. Il s’agit du même mot clé que vous pouvez insérer dans les lignes de commande et les courriers électroniques. La première instruction, IfThen, exécute l'instruction suivante si la condition EventDataIs (« état », « ACTIVE ») est vraie. La condition EventDataIs est vraie si la valeur du mot clé (état) correspond à la valeur indiquée (ACTIVE). L'instruction suivante, Distribute, entraîne l'exécution de la commande.

Voici le script qui définit un délai de 30 secondes dans le filtre Déclencher lorsque l'état est défini sur Active :

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

Les accolades ({}) sont utilisées pour grouper des instructions dans une liste. Elles n'étaient pas nécessaires dans l'exemple précédent car IfThen et les instructions suivantes étaient considérées comme une seule instruction.

L'instruction WaitUntil entraîne une pause dans l'exécution du script jusqu'à ce que la condition soit vraie. La condition TimeIsAfter vérifie si la condition est vraie uniquement une fois le nombre de secondes spécifié écoulé. Si l'événement est toujours actif après 30 secondes, l'instruction Distribute exécute la commande.

La représentation du script du filtre Déclencher lorsque l'état est défini sur Active ou Clear correspond à une seule instruction Distribute. Imaginons que vous sélectionniez Tiroir papier manquant comme événement, mais que vous souhaitiez uniquement exécuter la commande lorsque l’événement se produit dans le tiroir 3. De plus, vous souhaitez attendre 20 minutes avant d’exécuter la commande, puis exécuter à nouveau cette commande 20 minutes plus tard si la condition reste Active. Le script de ce filtre doit se présenter comme suit :

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

Dans cet exemple, And a servi à construire une condition composée. La boucle While est déclenchée ou répétée uniquement si l'événement est actif pour le tiroir 3. Le code figurant dans la boucle est identique à celui du filtre Déclencher lorsque l'état est défini sur Active, sauf que la condition TimeIsAfter est définie pour attendre 1200 secondes (20 minutes).