Os filtros personalizados permitem personalizar e definir como a ação será executada. Isso pode ser feito carregando-se um arquivo de script predefinido ou gravando-se um novo.

O MarkVision Messenger fornece uma linguagem de script muito simples para definir filtros. Esta é uma lista completa das instruções e condições que podem ser usadas para gravar um filtro personalizado:

Instruções:

Condições

Como exemplo, eis uma representação do script do filtro incorporado Disparar quando ativo:

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

O efeito da condição EventDataIs é perguntar ao evento o valor da palavra-chave event.state. Essa é a mesma palavra-chave que pode ser inserida em linhas de comando e mensagens de e-mail. A primeira instrução, IfThen, executa a instrução seguinte se a condição EventDataIs ("state", "ACTIVE") for verdadeira. Uma condição EventDataIs é verdadeira se o valor da palavra-chave (state) corresponder ao valor fornecido (ACTIVE). A instrução seguinte, Distribute, faz com que o comando seja executado.

Agora, vejamos o script a ser gravado quando o filtro Disparar quando ativo estiver configurado para uma espera de 30 segundos:

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

As chaves ({}) são usadas para agrupar instruções em uma lista. Elas não foram necessárias no exemplo anterior porque a instrução IfThen e as instruções seguintes foram tratadas como uma única instrução.

A instrução WaitUntil faz com que o script pause a execução até que a condição seja verdadeira. A condição TimeIsAfter verifica se é verdadeira somente depois de decorridos os segundos especificados. Se o evento ainda estiver ativo após 30 segundos, a instrução Distribute executa o comando.

A representação do script do filtro incorporado Disparar quando ativo ou eliminado é uma única instrução Distribute. Vamos dizer, por exemplo, que você selecione Bandeja de papel faltando como evento, mas só quer executar o comando quando o evento correr para a Bandeja 3. Além disso, você deseja esperar 20 minutos depois de executar o comando, e executar o comando novamente no mesmo intervalo de 20 minutos se a condição continuar Ativa. O script para esse filtro se pareceria com o seguinte:

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

Neste exemplo, And foi usado para criar uma condição composta. O loop While só é iniciado ou repetido se o evento estiver ativo para a Bandeja 3. O código dentro do loop é o mesmo que o do filtro Disparar quando ativo, com a exceção de que a condição TimeIsAfter é definida para aguardar 1.200 segundos (20 minutos).