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!
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