Como Enviar Mensagem no WhatsApp via Node.js com Express.js

Como Enviar Mensagem no WhatsApp via Node.js com Express.js

Enviar mensagens no WhatsApp diretamente de uma aplicação Node.js pode ser uma necessidade em muitos casos, seja para automação de notificações ou interações programáticas. Neste artigo, exploraremos como realizar esse processo utilizando Node.js e Express.js, sem depender de serviços como Twilio.

Pré-requisitos

Antes de começarmos, é essencial ter os seguintes pré-requisitos:

  • Conhecimento básico de Node.js e Express.js.
  • Uma conta de desenvolvedor do WhatsApp Business API ou acesso a uma ferramenta que permita o envio de mensagens via WhatsApp de forma programática.
  • Um número de telefone autorizado para enviar mensagens via WhatsApp.

Passo a Passo para Enviar Mensagem no WhatsApp com Node.js

1. Configuração Inicial

Antes de começar, certifique-se de ter o Node.js e o Express.js instalados em seu ambiente de desenvolvimento. Crie um novo projeto Node.js e instale as dependências necessárias.

mkdir whatsapp-nodejs
cd whatsapp-nodejs
npm init -y
npm install express axios body-parser

2. Obtenha as Credenciais do WhatsApp Business API

Você precisará das credenciais do WhatsApp Business API para autenticar e enviar mensagen. Estas credenciais incluem o número de telefone autorizado, o token de autenticação e outras informações específicas da API que você está utilizando.

3. Implemente o Roteamento no Express.js

Crie um arquivo app.js ou server.js e configure o Express.js para lidar com as rotas e requisições.

const express = require('express');
const bodyParser = require('body-parser');
const axios = require('axios');

const app = express();
const port = 3000;

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

// Rota para enviar mensagem via WhatsApp
app.post('/enviar-mensagem', async (req, res) => {
  try {
    const { numero, mensagem } = req.body;

    // Lógica para enviar a mensagem via WhatsApp
    const resposta = await enviarMensagemWhatsApp(numero, mensagem);

    res.status(200).json({ status: 'success', mensagem: 'Mensagem enviada com sucesso!' });
  } catch (error) {
    console.error('Erro ao enviar mensagem:', error);
    res.status(500).json({ status: 'error', mensagem: 'Erro ao enviar mensagem' });
  }
});

// Função para enviar mensagem via WhatsApp
async function enviarMensagemWhatsApp(numero, mensagem) {
  const API_URL = 'https://api.whatsapp.com/send';

  // Montar o URL com os parâmetros necessários
  const url = `${API_URL}?phone=${encodeURIComponent(numero)}&text=${encodeURIComponent(mensagem)}`;

  // Enviar a requisição GET para o WhatsApp
  const response = await axios.get(url);

  return response.data;
}

app.listen(port, () => {
  console.log(`Servidor rodando em http://localhost:${port}`);
});

4. Exemplo de Utilização

Para utilizar o endpoint criado, envie uma requisição POST para /enviar-mensagem com os parâmetros numero (número de telefone no formato internacional) e mensagem (texto da mensagem a ser enviada).

curl -X POST http://localhost:3000/enviar-mensagem \
-H "Content-Type: application/json" \
-d '{"numero": "+5511999999999", "mensagem": "Olá! Esta é uma mensagem de teste."}'

Conclusão

Enviar mensagens no WhatsApp via Node.js e Express.js é uma tarefa acessível, mesmo sem utilizar serviços como Twilio. Com as práticas e o código apresentados neste artigo, você pode integrar facilmente a funcionalidade de envio de mensagens via WhatsApp em sua aplicação. Lembre-se de manter as credenciais e a segurança dos dados, além de respeitar os termos de uso da API do WhatsApp Business ou da ferramenta utilizada.

Implementar essa funcionalidade não apenas adiciona valor à sua aplicação, mas também melhora a interatividade e o engajamento com os usuários através de um canal popular como o WhatsApp.


Espero que este guia seja útil para você implementar o envio de mensagens no WhatsApp via Node.js. Se precisar de mais assistência ou tiver alguma dúvida, não hesite em entrar em contato.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *