Programação e Extensibilidade
Data de criação: 21/01/2013
Última alteração: 22/11/2016
O 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).
A 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.