Filtri personalizzati

I filtri personalizzati consentono di modificare 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 predefinito 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 se la condizione EventDataIs ("state", "ACTIVE") è vera. Una condizione EventDataIs è vera se il valore della parola chiave (state) corrisponde al valore specificato (ACTIVE). L'istruzione successiva, Distribute, esegue il comando.

Passiamo ora ad esaminare lo script che è necessario scrivere se il filtro Esegui se Attivo è impostato su un ritardo di 30 secondi:

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

Le parentesi graffe ({}) sono utilizzate per raggruppare le istruzioni in un elenco. Nell'esempio precedente, le parentesi graffe non erano necessarie perché IfThen e la stringa successiva venivano trattate come una singola istruzione.

L'istruzione WaitUntil ritarda 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. Allo scadere dei 30 secondi, se l'evento ha ancora uno stato Attivo, l'istruzione Distribute esegue il comando.

Lo script del filtro predefinito Esegui se Attivo o Eliminato si compone di una sola istruzione Distribute. Supponiamo che venga selezionato Vassoio mancante come evento e che si desideri eseguire il comando solo se l'evento si verifica in relazione al Vassoio 3. Si è scelto, inoltre, di attendere 20 minuti prima dell'esecuzione del comando e di rieseguire lo stesso ad intervalli di 20 minuti se la condizione rimane attiva. La composizione dello script per questo filtro sarebbe:

While (And(EventDataIs("state", "ACTIVE"), EventDataIs("location", "Tray 3")))

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

Nell'esempio, è stato utilizzato l'operatore And per costruire 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, con la differenza che la condizione TimeIsAfter è impostata su un ritardo di 1200 secondi (20 minuti).