
Compartilhar:
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.
Crie um agendador de mensagens com Node e Vonage
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 -gO 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_SECRETEm seguida, crie um novo diretório para o seu projeto e acesse-o com o comando `cd`:
mkdir my_project
CD my_projectAgora, 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:
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.