Los filtros personalizados permiten personalizar y definir el modo de ejecución de la acción. Para ello, puede cargar un archivo de script definido anteriormente o escribir uno nuevo.

MarkVision Messenger proporciona un lenguaje sencillo de script para definir filtros. A continuación, se proporciona una lista completa de sentencias y condiciones que puede utilizar para escribir un filtro personalizado:

Statements

Conditions

A modo de ejemplo, esta es la representación del script del filtro incorporado Desencadenar en Activo:

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

El efecto de la condición EventDataIs es solicitar el evento para el valor de la palabra clave event.state. Esta palabra clave es la misma que puede insertar en las líneas de comandos y los mensajes de e-mail. La primera instrucción, IfThen, ejecuta la siguiente instrucción si la condición EventDataIs ("state", "ACTIVE") es verdadera. Una condición EventDataIs es verdadera si el valor de la palabra clave (state) coincide con el valor concreto (ACTIVE). La siguiente instrucción, Distribute, conlleva la ejecución del comando.

A continuación, se muestra el script para definir el filtro Desencadenar en Activo con un retraso de 30 segundos:

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

Las llaves ({}) se utilizan para agrupar instrucciones en una lista. No se agregaron en el ejemplo anterior, ya que la instrucción IfThen y las siguientes se tomaron como una sola.

La instrucción WaitUntil hace que el script detenga la ejecución hasta que la condición sea verdadera. La condición TimeIsAfter comprueba si es verdadera después del tiempo (número de segundos) especificado. Si el evento sigue activo después de 30 segundos, la instrucción Distribute ejecuta el comando.

La representación del script del filtro incorporado Desencadenar en Activo o Borrado es sólo una instrucción Distribute. Pongamos por ejemplo que selecciona el evento Falta bandeja de papel pero sólo desea ejecutar el comando cuando se produzca el evento en la Bandeja 3. También desea esperar 20 minutos antes de ejecutar el comando, y ejecutarlo de nuevo en el mismo intervalo de 20 minutos si la condición permanece Active. El script de este filtro se representaría así:

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

En este ejemplo, And se ha utilizado para crear una condición compuesta. El bucle While sólo se introduce o repite si el evento está activo para la Bandeja 3. El código dentro del bucle es el mismo que el del filtro "Desencadenar activo", excepto la condición TimeIsAfter, que está definida para esperar 1200 segundos (20 minutos).