Base de Conhecimento

Programação e Extensibilidade

Data de criação: 21/01/2013

Última alteração: 22/11/2016

Winconnection X possui uma inovadora ferramenta que permite estender a funcionalidade do programa com uma simples API (Application Programming Interface) para a linguagem PHP.

A API é composta por uma função de call back chamada onDispatch e um toolset. O script onDispatch é chamado antes de se aplicarem as regras de roteamento. 

Interface onDispatch

Ao fazer a entrega de uma mensagem (onDispatch), o Winconection 7 executará o script PHP, e só então passará para a execução dos filtros originais do programa (filtros globais e por grupo).

Interface onDispatch possibilita:

  • Alterar parte ou inteiramente a lista de destinatários de uma mensagem.
  • Incluir ou alterar headers da mensagem.
  • Apagar a mensagem da fila.
  • Alterar a pontuação do detector de SPAM.
  • Fazer com que uma mensagem não passe pelos filtros do programa.
  • Criar e-mails.

Para utilizar a interface onDispatch, basta criar a função onDispatch() no arquivo 'on_mail_message.php', que deverá ser criado no diretório C:\Arquivos de programas\Winco\Winconnection7\Scritps.

O usuário pode habilitar a interface onDispatch em Serviços de E-mail → Armazenamento de Filas de Mensagens e marcando a opção "Habilitar PHP onDispatch". 

Toolkit do Winconnection X

Para que seja possível utilizar a Interface onDispatch, o Winconnection X possui um toolset de funções que devem ser utilizadas pelo usuário na criação dos scripts.

Antes de analisarmos o toolset de funções do Winconnection X, vamos primeiramente analisar a sintaxe da função OnDispatch:

  • A função principal é a function onDispatch($id)onde o $id é o id da mensagem que é passado para a função automaticamente pelo programa.

function OnDispatch($id) {

}

  • O usuário pode declarar todas as funcionalidades que desejar dentro da função  principal, ou pode declarar novas funções e chamá-las dentro da função principal:

function OnDispatch($id) {

    $rc = wc_ms_addrecipient($id, "usuario@dominio.com.br");

    $rc = wc_ms_setspamscore($id, 100);

    return 0;

}

Ou:

function addRecipiente($id) {

    $rc = wc_ms_addrecipient($id, "usuario@dominio.com.br");

    return $rc;

}

function changeSpamScore($id) {

    $rc = wc_ms_setspamscore($id, 100);

    return $rc;

}

function OnDispatch($id) {

    $rc = addRecipiente($id);

    if($rc != 0)

        wc_ms_log($id, 2, "Erro adicionando recipiente");

    $rc = changeSpamScore($id);

    if($rc != 0)

        wc_ms_log($id, 2, "Erro alterando spam score");

    return 0;

}

Analisaremos agora o “toolset” de funções: 

a) Mail Utility

  • wc_ms_getmessagefile($id) – obtém o nome do arquivo da mensagem.
  • wc_ms_discard($id) – descarta a mensagem.
  • wc_ms_log($id, $severity, $message) – grava mensagem no log.

$severity: 0 – informação (mensagem azul no log);

1 – aviso (mensagem dourada no log);

2 – erro (mensagem vermelha no log);

  • wc_ms_skipstdrouting($id) – aponta a mensagem para não passar pelos filtros do programa. 

b) SPAM Score

  • wc_ms_getspamscore($id) – obtém o spam score da mensagem.
  • wc_ms_setspamscore($id, $score) – modifica o spam score da mensagem. 

c) Gerenciamento de Recipientes

  • wc_ms_getnumrecipients($id) – obtém o número de recipientes da mensagem.
  • wc_ms_getorgrecipient($id, $i) – obtém o recipiente original da mensagem.
  • wc_ms_getrecipient($id, $i) – obtém um recipiente específico da mensagem.
  • wc_ms_deleteallrecipients($id) – deleta todos os recipientes da mensagem.
  • wc_ms_addrecipient($id, $recipient) - adiciona recipiente à mensagem. 

d) Gerenciamento de Header:

  • wc_ms_getheader($id, $headerKey) – obtém determinado header.

Por exemplo: wc_ms_getheader($id, "subject");

  • wc_ms_setheader($id, $headerKey, $headerValue) – altera determinado header

Por exemplo: wc_ms_setheader($id, "subject", “SPAM”);

  • wc_ms_addheader($id, $headerKey, $headerValue) – adiciona determinado header

Por exemplo: wc_ms_addheader($id, "from", “usuario@dominio.com.br”); 

e) Criação de E-mail:

  • wc_ms_CreateMessage($from) – inicia criação de e-mail cujo remetente é $from. Retorna um $id que deverá ser usado nas funções abaixo.
  • wc_ms_AddLineToMessage($id, $line) – adiciona linha ao e-mail que está sendo criado.

Por exemplo: “Subject: Teste”

  • wc_ms_AddRecipientToMessage($id, $recipient) – adiciona recipiente ao e-mail que está sendo criado.
  • wc_ms_SubmitMessage($id) – envia o e-mail que foi criado.
  • wc_ms_DiscardMessage($id) – descarta o e-mail que foi criado 

Exemplo de programa

Para exemplificar a criação de um script PHP para ser utilizado na interface onDispatch, elaboramos um exemplo cuja função é descartar a mensagem se o spam score for maior que 80 e gravar uma mensagem no log do programa.

Segue o exemplo a seguir:

<?

function OnDispatch($id)

{

    $score = wc_ms_getspamscore($id); // obtém spam score da mensagem

    if ($score > 80) {

        wc_ms_log($id, 1, "Descartando a mensagem"); // grava mensagem no log

        $rc = wc_ms_discard($id); // descarta a mensagem

    }

    return 0;

}

?>

A função acima é um exemplo muito simples da utilização do 'toolset' de funções do Winconnection X

Top