Envio de email a partir de arquivo de exportação

Atender as necessidades de nossos clientes é o principal objetivo da plataforma uMov.me. Pensando nisso, e visando aprimorar ainda mais a experiência de uso, foi criado um novo serviço complementar chamado Email Notifier.

Trata-se de um serviço de envio de email contendo os dados obtidos em atividades executadas na plataforma uMov.me. O envio do email está condicionado a regras estabelecidas em um arquivo de configuração responsável por mapear os campos correspondentes no arquivo exportado.

Atenção: esse serviço está disponível através de seu código-fonte no repositório GitHub, na URL https://github.com/umovme/email-notifier e pode ser baixado diretamente neste endereço ou, se preferir, clone o projeto para fazer sua alteração. Para usá-lo você precisa ter um conhecimento básico de Ruby e/ou desenvolvimento de aplicativos em alguma outra linguagem. Não é uma ferramenta com interface de configuração pronta para uso. É necessário configuração de parâmetros e instalação de alguns recursos, conforme detalhamento a seguir que pode também ser encontrado na documentação README do projeto.

O serviço funciona baseado nos arquivos de exportação de execução, aqueles que contém os dados coletados nas atividades do uMov.me. Ele foi desenvolvido utilizando a linguagem de programação Ruby e, por isso, é necessário instalá-la na máquina onde o serviço será executado, juntamente com a biblioteca RubyGens.

Após baixar o serviço, acesse o diretório /email-notifier (caso baixar o zip então o diretório será /email-notifier-master) e execute o comando: ruby setup.rb para configurar a aplicação. Após a execução do comando serão criadas as pastas /file-to-process, onde será armazenado o arquivo de exportação .CSV e a pasta log,  local destinado ao arquivo de log de execução do serviço.

Screen Shot 2015-11-04 at 10.14.39

Figura 1: Configuração do servidor SMTP

Após o download e instalação dos requisitos acima descritos é preciso configurar o serviço, começando pelo arquivo conf/email_options.yml onde devem ser inseridas as credenciais para  configuração do servidor SMTP, responsável pelo envio dos emails, conforme mostrado na Figura 1. Cuidado para não mudar os espaços e quebras de linha para que o arquivo funcione corretamente.

O próximo passo é a configuração do arquivo conf/email_rules.yml que destina-se às regras onde serão mapeados os campos da atividade, conforme mostrado na Figura 2. Cada regra contém como parâmetro um identificador da regra (rule_id) para facilitar na leitura dos logs, os campos do email (to, cc, subject, body) e uma condição que serão mapeados com os campos do arquivo de exportação.

email_yml

Figura 2: Configuração das regras para envio do e-mail

Os parâmetros tosubject são obrigatórios e o email não será enviado caso algum deles esteja vazio ou nulo.

O parâmetro condition também é obrigatório, e nele é atribuída a variável de condição para envio do email. Esta variável é especificada no parâmetro condition_value do arquivo conf/email_options.yml e deve conter o mesmo valor para o campo da atividade destinado a condição do arquivo exportado.

Finalizada a etapa de configuração, insira o arquivo no formato .CSV na pasta /file_to_process e então o serviço está pronto para ser executado. Acesse a pasta raiz do projeto /email-notifier e execute o comando: ruby run.rb, que deve ser repetido sempre que existirem novos aquivos para serem processados.

O Email Notifier irá carregar o arquivo .CSV e as regras descritas no arquivo /conf/email_rules a fim de mapear internamente as regras com os campos do arquivo, para logo após verificar o conteúdo de cada linha e coluna. Quando as condições para envio forem atendidas então o email é enviado.

O arquivo notifier.log é atualizado na pasta /log a cada execução do serviço, e serve para informar basicamente: o número de regras mapeadas, a linha que está sendo processada e se os emails foram enviados ou não.

Informações adicionais, melhorias e correções estão disponíveis publicamente na página do projeto no GitHub.

Ficou alguma dúvida? Faça contato com o nosso time!