https://a.storyblok.com/f/270183/31172/35c41e0e39/message-scheduler.png

Crie um agendador de mensagens com Node e Vonage

Publicado em March 15, 2022

Tempo de leitura: 3 minutos

Aqui na Vonage, já escrevemos muitos artigos sobre como enviar uma mensagem SMS. No entanto, às vezes você não quer enviar uma mensagem SMS neste exato momento: você quer enviá-la no futuro. Neste tutorial, você aprenderá como agendar o envio de uma mensagem SMS para o futuro usando a Messages API do Vonage e o Node.

Você está pronto para começar?

Vamos montar isso!

Pré-requisitos

Para acompanhar este tutorial, você precisa de um Account na Vonage. Você também precisa do Node, que pode ser baixar aqui.

Configuração inicial

Para começar, a primeira coisa que você precisa fazer é instalar os seguintes módulos:

node install express @vonage/server-sdk node-cron @vonage/cli -g

O Express é o framework web que usaremos para desenvolver nosso aplicativo. Usaremos a biblioteca Vonage para enviar nossa mensagem SMS, o node-cron para criar uma tarefa cron para enviá-la no futuro e a CLI da Vonage para criar um aplicativo Vonage.

Use a CLI da Vonage para inserir o comando a seguir com sua chave e seu segredo da API da Vonage. Você pode encontrar essas informações no Painel do Desenvolvedor.

vonage config:set --apiKey=VONAGE_API_KEY --apiSecret=VONAGE_API_SECRET

Em seguida, crie um novo diretório para o seu projeto e acesse-o com o comando `cd`:

mkdir my_project
CD my_project

Agora, use a CLI para criar um aplicativo da Vonage.

vonage apps:create
✔ Application Name ... new_app
✔ Select App Capabilities > Messages
✔ Create messages webhooks? ... No
✔ Allow use of data for AI training? Read data collection disclosure  ... yes

Application created: 34abcd12-ef12-40e3-9c6c-4274b3633761

É bom você anotar o ID do aplicativo: você vai precisar dele mais tarde.

Agora você precisa de um número para poder receber chamadas. Você pode alugar um usando o comando a seguir (substituindo o código do país pelo seu). Por exemplo, se você estiver na Grã-Bretanha, substitua US por GB:

vonage numbers:search US
vonage numbers:buy [NUMBER] [COUNTRYCODE]

Agora, vincule o número ao seu aplicativo:

vonage apps:link --number=VONAGE_NUMBER APP_ID

Criação do back-end

Agora, estamos prontos para começar a escrever o código do nosso aplicativo.

Navegue até o diretório em que você instalou o aplicativo Vonage e crie um .env arquivo.

Adicione as seguintes informações:

FROM=<your_vonage_number>
API_KEY=<your_vonage_API_key>
API_SECRET=<your_vonage_API_secret>
APPLICATION_ID=<your_vonage_application_ID>
PRIVATE_KEY=<your_vonage_private_key_file_name>

Em seguida, crie um novo arquivo JavaScript e importe as bibliotecas necessárias para este projeto.

express = require('express')
const Vonage = require('@vonage/server-sdk')
cron = require('node-cron')
const bodyParser = require('body-parser')
const path = require('path');

Crie um aplicativo Express da seguinte maneira:

app = express()

Agora, adicione o middleware de que seu aplicativo precisa para processar solicitações POST:

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
    extended: true
}))
app.use(express.static('public'))

Adicione este código para configurar a Messages API do Vonage:

const vonage = new Vonage({
    apiKey: process.env.API_KEY,
    apiSecret: process.env.API_SECRET,
    applicationId: process.env.APPLICATION_ID,
    privateKey: process.env.PRIVATE_KEY
})

Em seguida, defina uma função para exibir o arquivo index.html quando você acessar a página inicial do seu aplicativo web.

app.get('/', (req, res) => {
    res.sendFile(path.join(__dirname, '/index.html'))
})

Agora, precisamos de um endpoint para enviar nossas mensagens SMS.

Adicione o código a seguir ao seu aplicativo:

app.post('/api/sms', (req, res) => {
    res.send(200)
    const triggerTime = new Date(req.body['meeting-time'])
    let task = cron.schedule('* * * * * *', () => {
        if (new Date() > triggerTime) {
            vonage.message.sendSms(process.env.FROM, req.body['number'], req.body['message'], (err, responseData) => {
                if (err) {
                    console.log(err);
                } else {
                    if (responseData.messages[0] === "0") {
                        console.log("Message sent successfully.");
                    } else {
                        console.log(`Message failed with error: ${responseData.messages[0]['error-text']}`);
                    }
                }
            })
            task.stop()
        }
    });
})

Este código aceita uma solicitação POST com uma hora (quando enviar a mensagem SMS), o número para o qual enviar a mensagem e o conteúdo da mensagem, e a envia ao destinatário na hora programada usando node-cron para agendar a mensagem.

O Node-chron aceita dois parâmetros: o tempo para realizar uma ação e uma função que contém o código do que deve ser feito.

O código acima envia uma mensagem SMS usando a API de mensagens da Vonage e os dados da solicitação POST.

Por fim, adicione esta linha de código ao final do seu arquivo para que o servidor fique à escuta na porta 5000.

app.listen('5000')

Agora você pode executar seu servidor executando o código contido neste arquivo.

No entanto, ainda não acontece nada, pois precisamos criar nossa interface do usuário.

Criação do front-end

Crie um novo arquivo chamado index.html e insira o seguinte:

<meta charset="UTF-8">
    <title>Message Scheduler</title>
    <link rel="stylesheet" href="style.css">
  
  
    <h1>Message Scheduler </h1>
    <form action="/api/sms" method="POST">
      <label for="time">Start date:</label>
      <br>
      <input type="datetime-local" id="time" name="meeting-time" value="2022-03-03sT00:00" min="2022-03-03sT00:00" max="2023-06-14T00:00">
      <br>
      <label for="number">Number:</label>
      <br>
      <input id="number" name="number">
      <br>
      <label for="message">Message:</label>
      <br>
      <input id="message" name="message">
      <br>
      <input type="submit" value="Submit" id="submit">
    </form>

No início do seu arquivo HTML, você importa o arquivo style.css, que contém o CSS para melhorar a aparência desta página.

<link rel="stylesheet" href="style.css">

O restante deste código HTML cria um formulário que coleta a data e a hora (quando enviar sua mensagem de texto), um número de telefone (para quem enviá-la) e uma mensagem (o conteúdo a ser enviado).

Esse código é simples porque aproveitamos o calendário embutido do JavaScript.

Quando você envia o formulário, ele transmite todas as informações coletadas do usuário para o back-end, que programa o envio da mensagem de texto.

Ao executar o arquivo JavaScript que você criou anteriormente e acessar seu servidor local pelo endereço http://127.0.0.1:5000, você deverá ver o formulário que criamos.

Ao preencher o formulário e clicar em “Enviar”, sua mensagem de texto deverá ser enviada no horário programado.

Considerações finais

Espero que este tutorial tenha ajudado você a aprender mais sobre a Messages API do Vonage e sobre como agendar mensagens SMS.

Não deixe de nos seguir no Twitter e participar do nosso canal no Slack para obter mais informações.

Obrigado pela leitura!

Compartilhar:

https://a.storyblok.com/f/270183/400x394/540f26da70/cory-althoff.png
Cory AlthoffEx-funcionário da Vonage

Cory Althoff é defensor de desenvolvedores na Vonage e autor de dois livros: “The Self-Taught Programmer” e “The Self-Taught Computer Scientist”. O site Book Authority considerou “The Self-Taught Programmer” um dos melhores livros de programação de todos os tempos, e o The Next Web o listou como um dos dez livros que ajudarão você a se tornar um engenheiro de software melhor. Cory mora na Região da Baía com sua esposa e filha.