https://a.storyblok.com/f/270183/30348/1b308826aa/recieve-sms_node-js.png

Receba mensagens SMS com Node.js, Express e a SMS API da Vonage

Publicado em September 7, 2021

Tempo de leitura: 5 minutos

Observação: algumas das ferramentas ou métodos descritos neste artigo podem não ter mais suporte ou estar desatualizados. Para obter conteúdo atualizado ou suporte, consulte nossas postagens mais recentes ou nossa Documentação

No artigo anterior, você configurou sua Account da Vonage e aprendeu como enviar mensagens SMS com o Node.js. Nesta postagem do blog, você aprenderá a receber uma mensagem SMS de entrada implementando um endpoint de webhook no Node.js usando Express.

Visualizar o código-fonte no GitHub

Definindo um ponto de extremidade de webhook

Para receber uma mensagem SMS da Vonage, você precisa associar um endpoint de webhook (URL) a um número virtual que você tenha alugado da Vonage. As mensagens recebidas para esse número são, então, enviadas para o seu endpoint de webhook.

Ao desenvolver o endpoint do webhook, é um saco ficar implantando constantemente o seu trabalho em andamento. Para facilitar a sua vida, vamos usar o o ngrok para expor seu endpoint de webhook na sua máquina local como uma URL pública!

Usando o ngrok

Primeiro, baixe o ngrok em https://ngrok.com. Após a instalação, execute o ngrok no terminal:

ngrok http 3000

running ngrokrunning ngrok

Seu servidor local (localhost:3000) agora possui uma URL do ngrok como https://71f03962.ngrok.io que pode ser usada como seu endpoint de webhook durante o desenvolvimento. Além disso, observe a URL da interface web — você pode inspecionar, modificar e reproduzir suas solicitações aqui — falaremos mais sobre isso depois!

Configurando o endpoint do webhook com a Vonage

Faça login no seu Account da Vonage e acesse Configuraçõese localize as seção “Configurações de SMS” .

A Vonage possui duas APIs diferentes capazes de enviar e receber mensagens SMS. Você só pode usar uma de cada vez, pois isso alterará o formato dos webhooks que você recebe. Desta vez, vamos usar a SMS API, portanto, certifique-se de que ela esteja selecionada.

Em seguida, preencha os campo “Webhooks de SMS de entrada” usando a URL do ngrok com uma rota — vamos chamá-la de “inbound”. Digite https://YOUR_NGROK_URL/inbound, defina o método HTTP para POST e clique em Salvar alterações.

setting your webhook endpointsetting your webhook endpoint

Agora, todas as suas mensagens recebidas serão encaminhadas para a URL do webhook (callback); então, vamos escrever um código usando o Node.js e o Express!

Observação: Acima, estamos configurando o endpoint do webhook para SMS no nível da conta. Como alternativa, você também pode configurar endpoints de webhook exclusivos para cada número virtual clicando em Gerenciar ao lado de um de seus números virtuais no painel da Vonage.

Criação de endpoints de webhook com o Express

Em seguida, você tratará das POST solicitações com Express; portanto, instale-o.

npm install express

Adicione "type": "module" ao seu package.json arquivo para habilitar as instruções .

Crie um .js arquivo, instancie o Express e escute na porta 3000. Como você configurou o ngrok para expor localhost:3000, você deve usar a mesma porta.

import express from 'express';

const { json, urlencoded } = express;

const app = express();

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

const PORT = 3000;
app.listen(PORT, () => {
    console.log(`Server listening at http://localhost:${PORT}`);
});

Em seguida, crie uma rota HTTP POST para processar as solicitações:

app.post('/inbound', (req, res) => {
  handleParams(req.body, res);
});

Em seguida, defina a handleParams função:

function handleParams(params, res) {
  if (!params.to || !params.msisdn) {
    console.log('This is not a valid inbound SMS message!');
  } else {
    let incomingData = {
      messageId: params.messageId,
      from: params.msisdn,
      text: params.text,
      type: params.type,
      timestamp: params['message-timestamp']
    };
    console.log('Success', incomingData);
  }
  res.status(200).end();
}

Execute o código do Node.js e tente enviar algumas mensagens do seu celular para o seu número virtual!

screenshot of a user sending an SMS message from an Android phonescreenshot of a user sending an sms message from an Android phone

Ao criar um túnel para seu aplicativo local com o ngrok, você também pode inspecionar a solicitação em http://127.0.0.1:4040/ no seu navegador:

ngrok inspectorngrok inspector

Pronto, agora você pode ver que sua mensagem SMS foi enviada. A Vonage recebeu a mensagem e a encaminhou para o seu aplicativo Express por meio de um Webhook!

Espero que isso tenha sido útil para você. Entre em contato conosco @VonageDev no Twitter.

Referências

Compartilhar:

https://a.storyblok.com/f/270183/150x150/a3d03a85fd/placeholder.svg
Tomomi ImuraEx-funcionários da Vonage

Tomomi é uma ex-integrante da equipe da Vonage