I filtri personalizzati consentono di personalizzare e definire le modalità di esecuzione dell'azione. È possibile personalizzare un filtro caricando un file script creato precedentemente oppure scrivendone uno nuovo.

Il linguaggio utilizzato da MarkVision Messenger per la creazione degli script è molto semplice. Di seguito viene fornito un elenco completo delle istruzioni e delle condizioni utilizzabili per creare un filtro personalizzato:

Istruzioni

Condizioni

Nell'esempio fornito di seguito, viene rappresentato lo script del filtro incorporato Esegui se Attivo:

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

L'effetto generato dalla condizione EventDataIs è di richiedere all'evento il valore della parola chiave event.state. Si tratta della stessa parola chiave che è possibile inserire nelle righe di comando e nei messaggi e-mail. La prima istruzione IfThen esegue l'istruzione successiva purché la condizione EventDataIs ("state", "ACTIVE") sia vera. Una condizione EventDataIs è vera se il valore della parola chiave (state) corrisponde al valore specificato (ACTIVE). L'istruzione successiva, Distribute, esegue il comando.

Di seguito viene riportato il formato dello script per impostare il filtro Esegui se Attivo con un ritardo di 30 secondi:

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

Le parentesi graffe ({}) sono utilizzate per riunire le istruzioni in un elenco e non sono state inserite nell'esempio precedente poiché l'istruzione IfThen e l'istruzione successiva sono state considerate come una singola istruzione.

L'istruzione WaitUntil consente di interrompere l'esecuzione dello script finché la condizione non diventa vera. La condizione TimeIsAfter viene interpretata come vera solo dopo che è trascorso il numero di secondi specificato. Se l'evento è ancora attivo dopo 30 secondi, l'istruzione Distribute esegue il comando.

Lo script del filtro incorporato Esegui se Attivo o Eliminato si compone di una sola istruzione Distribute. Si supponga, ad esempio, che venga selezionato Vassoio carta mancante come evento e che si desideri eseguire il comando solo se l'evento si verifica in relazione al vassoio 3. Inoltre, si desidera attendere 20 minuti prima dell'esecuzione del comando e rieseguire lo stesso a intervalli di 20 minuti se la condizione rimane Active. Il formato dello script ditale filtro deve essere il seguente:

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

In questo esempio, And è stato utilizzato per creare una condizione composta. Il loop While viene eseguito o ripetuto solo se l'evento è attivo per il vassoio 3. Il codice all'interno del loop è identico a quello del filtro Esegui se Attivo, tranne per il fatto che la condizione TimeIsAfter è impostata su un ritardo di 1.200 secondi (20 minuti).