Como enviar mensagens de WhatsApp em Node.js via Twilio

Node.js

Como enviar mensagens de WhatsApp em Node.js via Twilio

Luiz Duarte
Escrito por Luiz Duarte em 12/08/2021
Junte-se a mais de 34 mil devs

Entre para minha lista e receba conteúdos exclusivos e com prioridade

No tutorial de hoje eu vou lhe ensinar como enviar mensagens de WhatsApp usando a API da Twilio, uma empresa global de serviços de telefonia. Eles são gigantescos mas não é por isso que escolhi eles para usar, mas porque são uma das poucas empresas deste tipo que lhe permite criar uma conta gratuita para sair usando sem ter de colocar um cartão de crédito ou ter de falar com algum consultor antes. Totalmente self-service.

Esta conta de teste pode ser usada mas ela é cheia de restrições então tenha em mente que é o suficiente para fazer este tutorial e ver o funcionamento na prática, mas que sim, para envio de mensagens de WhatsApp  você terá de abrir a carteira!

Além disso, vale salientar que existem políticas bem rígidas de uso por parte do WhatsApp/Facebook e seus parceiros para o envio de mensagens, como por exemplo o não-uso para marketing, mas somente para mensagens transacionais (avisos sistêmicos) e conversação automatizada (bots).

Para que possa fazer este tutorial, você já precisa estar familiarizado com Node.js, podendo ser até por algum tutorial iniciante aqui do blog como os vários presentes em meus guias de estudo.

Vamos ver neste tutorial:

  1. Setup da Conta
  2. Setup do Projeto
  3. Programando o Envio

Vamos lá!

Curso Node.js e MongoDB

#1 – Setup da Conta

Antes de começar a programar, é necessário que você acesse Twilio.com e crie uma conta gratuitamente para você. Certifique-se de finalizar todo processo de abertura de conta, o que inclui confirmar o seu email e o seu telefone celular através de mensagens enviadas por eles.

Após todo este processo, você deverá estar em uma tela parecida com essa:

Repare que eu tenho $15,50 nesta conta, que é a quantia que eles lhe fornecem para testar a plataforma. Além disso, repare ali no centro o Account SID e logo abaixo o Auth Token (ocultos). Você precisa destas duas informações para conseguir usar as APIs deles no Node.js, então anote esses dados.

Agora, acesse o menu lateral Messaging > Try it out > Send a WhatsApp Message. A primeira vez que fizer este acesso, irá saltar um popup para ativação da sandbox do WhatsApp, o ambiente de desenvolvimento e testes. Para ativá-lo, você precisará aceitar os termos de uso.

Na sequência, você já entenderá o quão rígidas são as regras do WhatsApp: para que você possa enviar uma mensagem para alguém, esta pessoa deve ter iniciado uma sessão/conversa com você antes. Em modo sandbox, basta você mandar uma mensagem do seu WhatsApp real para o número que o Twilio vai lhe fornecer e uma sessão de testes será iniciada.

Assim que enviar essa mensagem inicial para o número da Twilio (pode ser pelo WhatsApp Web inclusive), uma sessão de 3 dias irá se iniciar e pelos próximos 3 dias poderá fazer testes de desenvolvimento nesta conta. Mais tarde, para uso em produção, você precisará autorizar o número do seu WhatsApp de verdade.

Outra exigência é que o template da sua mensagem seja aprovado junto ao WhatsApp antes de ir para produção. Mas para fins de teste, a Twilio disponibiliza alguns templates já aprovados, que você pode escolher na tela abaixo.

Ao escolher um template, você terá acesso aos números de telefone que irão interagir (o seu aprovado na criação de conta e o de teste da Twilio). Anote o número ‘from’, inclusive o prefixo whatsapp: que é importante para uso logo a seguir.

Para fazer um primeiro teste inicial, você pode inclusive digitar uma mensagem manualmente em um campo que tem nesta tela e clicar no botão “Make a Request”. Mas a graça mesmo está em fazer isso dinamicamente, que é o que faremos mais abaixo.

Curso FullStack

#2 – Setup do Projeto

Agora que tem a sua conta Twilio criada e configurada, vamos criar o projeto Node.js.

Comece criando uma pasta para o mesmo e rodando o comando abaixo para configuração do package.json

Agora, instale as seguintes dependências que vamos usar

O pacote DotEnv é para as configurações de ambiente, já o pacote Twilio é o SDK da empresa para Node.js.

Agora crie na raiz do projeto um arquivo .env com as suas configurações da Twilio, como segue (mude para os seus valores, não esquecendo do número telefônico de whatsapp obtido nos testes do Twilio, ele começa com whatsapp:):

E agora vá no seu package.json e ajuste o script de start para inicializar a aplicação carregando o dotenv.

Repare que este script de inicialização está apontando para um arquivo index, que ainda não existe, vamos criá-lo como última etapa de setup do projeto.

Pronto, agora você tem uma aplicação Node.js rodando e carregando as variáveis de ambiente que vamos precisar.

Livro Node.js

#3 – Programando o Envio

Agora vamos programar o envio de mensagem transacional de WhatsApp através da nossa aplicação. Para isso, escreva a seguinte função no seu index.js, no lugar do console.log.

Repare que você deve informar o número telefônico de destino na propriedade ‘to’ e ele deve estar completo, incluindo DDI (+55 no caso de números brasileiros) e seguido do seu DDD. Em ambiente de testes, este número tem de ser o mesmo que usou na criação da sua conta. E na propriedade ‘from’ deve ter o número obtido na Twilio gratuitamente, lá no passo 1, lembra? Ele também deve estar completo, incluindo DDI e DDD e o prefixo whatsapp: na frente.

Também certifique-se de respeitar no body o template fornecido pela Twilio. Você somente está autorizado a enviar mensagens diferentes do template fornecido depois que o usuário responder à sua mensagem transacional, aí inicia-se uma janela de conversa livre por 24h e você pode mandar quaisquer mensagens automatizadas a ele.

Depois de ajustado o código acima, execute-o com npm start e você deve receber a mensagem enviada no telefone de destino.

E caso você obtenha uma mensagem de sucesso como retorno, indica que sua mensagem foi enviada bem como todos os detalhes do envio, em questão de instantes ele deve chegar no aparelho de destino que você informou, como no exemplo abaixo que chegou no meu próprio smartphone.

E com isso agora você tem um pequeno projeto perfeitamente funcional para envio de mensagens transacionais de WhatsApp em Node.js!

Mais do que isso, finalizando a configuração no painel da Twilio, a mesma que começamos no passo 1 deste tutorial, você pode configurar a sandbox para que toda vez que você receber uma mensagem do usuário no ambiente de testes, sua aplicação seja notificada.

Espero que tenha gostado do tutorial!

Outra alternativa, gratuita porém “paralela”, é usando a biblioteca Venom.

Twilio também envia SMS, descubra como!

Quer enviar mensagens via Telegram? Aqui tem tutorial também!

Curso Beholder
Curso React Native

TAGS:

Olá, tudo bem?

O que você achou deste conteúdo? Conte nos comentários.

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

2 Replies to “Como enviar mensagens de WhatsApp em Node.js via Twilio”

Mauricio Lopes

Olá Luiz, boa tarde.
Acabei de descobrir que você pode ser a pessoa certa para me ajudar a resolver um problema que estou tendo, isto é, criar um projeto Node.js para o qual eu faço a troca de mensagens via WhatsApp API usando o Twilio.
Luiz, eu não sou desenvolver, entretanto após fazer pesquisas e estudar (autodidata) eu construí um projeto, mas eu não estou conseguindo implementa-lo via Twilio para fazer os testes e posteriormente coloca-lo em produção.
Gostaria de contatar-te para que possamos negociar seus serviços a fim de que você possa me fazer uma mentoria e/ou consultoria. Acho que falta pouco para concluir, mas com seu suporte com certeza poderia concluir esse trabalho. Meu telefone é: (11) 99911-1774 e meu contato via email segue abaixo. Aguardo seu contato.

Luiz Duarte

Infelizmente não desenvolvo mais para terceiros tem alguns anos, apenas meus próprios projetos e ensino outros a programar. Vou verificar se algum dos meus alunos pode te ajudar, se eu encontrar alguém, entrará em contato pelos canais que passou.