https://d226lax1qjow5r.cloudfront.net/blog/blogposts/receive-sms-messages-with-node-js-express-and-the-vonage-sms-api/recieve-sms_node-js.png

Recibir mensajes SMS con Node.js, Express y la API de SMS de Vonage

Publicado el September 7, 2021

Tiempo de lectura: 4 minutos

Hemos creado este tutorial utilizando la API de SMS de Vonage, Node.js y Express.

En el artículo anterior, configuraste tu Account de Vonage y aprendiste cómo enviar mensajes SMS con Node.js. En esta publicación del blog, aprenderás a recibir un SMS entrante implementando un punto final de webhook en Node.js usando Express.

Ver el código fuente en GitHub

Definición de un punto final Webhook

Para recibir un mensaje SMS de Vonage, debes asociar un punto final de webhook (URL) con un número virtual que hayas alquilado a Vonage. Los mensajes entrantes a ese número se envían a tu punto final de webhook.

Durante el desarrollo del punto final webhook, es un dolor de mantener el despliegue de su trabajo en curso. Para hacer su vida más fácil, vamos a utilizar ngrok para exponer tu webhook endpoint en tu máquina local como una URL pública.

Uso de ngrok

En primer lugar, descargue ngrok de https://ngrok.com. Una vez instalado, ejecute ngrok en el terminal:

ngrok http 3000

running ngrokrunning ngrok

Su servidor local (localhost:3000) tiene ahora una URL ngrok como https://71f03962.ngrok.io que puede utilizarse como punto final de webhook durante el desarrollo. Además, fíjese en la URL de la Interfaz Web: aquí puede inspeccionar, modificar y reproducir sus solicitudes.

Cómo configurar el punto final de Webhook con Vonage

Inicia sesión en tu Account de Vonage, ve a Configuracióny busca Configuración de SMS de SMS.

Vonage tiene dos API diferentes capaces de enviar y recibir mensajes SMS. Sólo puedes usar una a la vez porque cambiará el formato de los webhooks que recibas. Esta vez, usaremos la API SMS APIasí que asegúrate de que esté seleccionada.

A continuación, rellene los webhooks SMS entrantes utilizando la URL ngrok con una ruta, llamémosla "entrante". Introduce https://YOUR_NGROK_URL/inboundestablezca el Método HTTP a POST y haga clic en Guardar cambios.

setting your webhook endpointsetting your webhook endpoint

Ahora todos tus mensajes entrantes irán a la URL del webhook (callback), ¡así que vamos a escribir algo de código con Node.js y Express!

Nota: Arriba, estamos configurando el punto final del webhook para SMS a nivel de Account. También puedes configurar puntos finales de webhook únicos para cada número virtual haciendo clic en Gestionar junto a uno de tus números virtuales en el panel de Vonage.

Escribir puntos finales Webhook con Express

A continuación, gestionará las POST solicitudes con Expressasí que instálalo.

npm install express

Añada "type": "module" a su package.json para permitir importar declaraciones.

Cree un archivo .js instancie Express y escuche en el puerto 3000. Como has configurado tu ngrok para exponer localhost:3000debes mantener el mismo puerto.

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}`);
});

A continuación, cree una ruta HTTP POST para gestionar las solicitudes:

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

A continuación, defina la handleParams función

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();
}

Ejecuta el código del nodo e intenta enviar algunos mensajes desde tu teléfono a tu 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

Si está tunelizando su aplicación local con ngrok, también puede inspeccionar la solicitud en http://127.0.0.1:4040/ en tu navegador:

ngrok inspectorngrok inspector

Voilà, ahora puedes ver que tu mensaje SMS ha sido enviado. Vonage recibió el mensaje y lo transmitió a tu aplicación Express a través de un Webhook.

Espero que le haya resultado útil. Háganoslo saber @VonageDev en Twitter.

Referencias

Compartir:

https://a.storyblok.com/f/270183/150x150/a3d03a85fd/placeholder.svg
Tomomi ImuraAntiguos alumnos de Vonage

Web abierta y tecnología ? HTML5, JavaScript, Node.js. Cat hacks ?, e Internet of Blings ✨ (que poco más que LED parpadea ?). Ex Developer Advocate en Vonage, San Francisco.