Criando um backend em Node.js com Typescript e Puppeteer

Criando um backend em Node.js com Typescript e Puppeteer

A indústria 4.0 trouxe para nossa realidade inovações tecnológicas principalmente no campo da automação, mas já pensou como é difícil para pequenas empresas com pouco capital de investimento adquirir tecnologias competitivas no mercado atual?

Neste artigo vamos desenvolver uma ferramenta para auxiliar pequenas empresas a realizarem cobranças de forma automatizada e sem o custo de adquirir um serviço pago.


Passo 0 - Instalando o Node

Para instalar o Node.js (npm) é muito simples. Você pode encontrar o instalador no site. A partir do Visual Studio 2017 e a atualização 3 do Visual Studio 2015 incluem suporte à linguagem TypeScript por padrão, mas o processo é outro, neste artigo vamos seguir o passo a passo usando o npm. Em seu terminal execute o comando:

Com isso você consegue executar qualquer arquivo TypeScript. Exemplo em projeto crie um arquivo chamado greeter.ts:

Para executar o arquivo, em seu terminal no mesmo diretório do projeto execute:


Passo 1 - Criando o projeto e instalando dependências


Dentro da pasta que você deseja criar o projeto, abra o terminal e execute o comando:


Eu gosto de sempre que iniciar um projeto, já iniciar o repositório no GitHub. Vou pular o passo a passo de configuração, mas tenho uma dica para facilitar o .gitignore, você pode executar o comando:


Execute o comando para instalar o TypeScript no projeto:


Este é equivalente a npm install --save-dev typescript. Vamos usar o framework Express. Instale:


Caso não tenha criado um arquivo na raiz do projeto chamado tsconfig.json execute o comando:


É uma boa prática no arquivo tsconfig.json na linha do outDir colocar: outDir: “./dist”.


Instale as bibliotecas que vamos utilizar com o seguinte comando:


Instale as bibliotecas de desenvolvimento:


Para facilitar a execução da aplicação no arquivo package.json, em scripts coloque:

Padrão do projeto


O primeiro passo é configurar o service do Puppeteer, que vai ser responsável por enviar mensagens. Na pasta services crie um arquivo chamado whatsapp.services.ts nele crie uma classe com duas propriedades:


Fazer dessa forma faz com que o TypeScript reconheça as funções internas das classes facilitando o desenvolvimento.

Crie uma função para iniciar o serviço chamei de online:


Perceba que o this. é chamado para instanciar as propriedades antes definidas, assim você vai poder manipular as propriedades nas próximas funções.


Essa função é importante ser definida para trazer uma compatibilidade na próxima função:


Perceba que nessa função se recebe um ID. É feita uma requisição para o banco de dados que retorna um objeto cliente, com isso você pode manipular um texto para enviar para seu cliente.

A função this.page.goto(url) faz o navegador entrar no link customizado.

A função this.page.waitForSelector(‘’) espera aparecer na página no caso do botão de enviar.

A função this.sleep(1000) é o tempo de animação para as coisas realmente aparecerem na tela.

A função this.page.click(") é disparar o evento de clicar no botão de enviar mensagem da conversa do WhatsApp.

Agora vamos para a parte das rotas. Na pasta routers crie um arquivo whatsapp.router.ts.


Perceba que instânciamos o whatsAppServices e iniciamos a função online. Fazendo dessa forma o navegador iniciará automaticamente. Em seguida iniciamos uma rota post com o corpo da requisição com o id do cliente.

Agora na mesma pasta routers vamos criar o arquivo index.ts.


O objeto routers recebe o caminho /whatsapp e a rota anteriormente criada whatsappRouter, posteriormente exportamos routers.

Como neste exemplo estamos usando um banco de dados para cadastrar os clientes o diretório config, crie um arquivo chamado database.ts coloque as seguintes informações:


Se você tiver o mongoDB compass instalado, você conseguirá visualizar todas as informações por lá, pelo mongoose é possível modelar na aplicação todos os objetos do banco de dados.

Agora no scr/, caso não tenha o arquivo app.ts, crie ele e adicione as seguintes informações:


Inicie uma variável que recebe Express, configure ela com o cors(). O express.json() indica que o meio de receber e enviar requisição será o json. O routers informa para o Express quais rotas usar. O connection inicia um laço comunicação entre o banco de dados e o servidor.

Essa aplicação é ótima para atender pequenas demandas e com o programador certo, você pode integrar com uma inteligência artificial para responder os clientes ou com um sistema de pagamentos. Assim, você economiza tempo diminuindo a demanda do atendimento humanizado para uma situação de cobrança.

Ponto importante: cada envio de mensagem demora em média 30s para ser enviado, por isso que realizar o envio de mensagem via Puppeteer, usando essa estratégia é recomendado apenas para pequenas empresas.


Espero que este artigo tenha sido útil para você e que agora você possa desenvolver projetos com Node.js, TypeScript e Puppeteer.

Em conteúdos futuros abordarei outros detalhes interessantes do mundo tecnológico.

Obrigado por me ler! Até logo!

💡
As opiniões e comentários expressos neste artigo são de propriedade exclusiva de seu autor e não representam necessariamente o ponto de vista da Revelo.

A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.Jueves, 5 de enero