https://d226lax1qjow5r.cloudfront.net/blog/blogposts/how-to-receive-an-sms-delivery-receipt-with-node-js/delievery-sms_node-js.png

Cómo recibir un recibo de entrega de SMS con Node.js

Publicado el March 28, 2023

Tiempo de lectura: 4 minutos

Introducción

Cuando envías un mensaje de texto a un número de teléfono con las API de Vonage, la respuesta HTTP de la API puede indicarte si el mensaje se ha enviado con éxito. Sin embargo, no te dice si el mensaje fue entregado al destinatario. Afortunadamente, existe un campo en tu Portal para desarrolladores de Vonage que te permite ver cuándo cambia el estado de la entrega en forma de webhook.

En este tutorial, aprenderás a averiguar si los mensajes SMS enviados desde tu número virtual han sido entregados utilizando Node.js.

Si quieres saltarte el proceso y simplemente ejecutar la aplicación, puedes encontrar una versión completamente funcional en GitHub.

Requisitos previos

Antes de empezar, asegúrate de tener lo siguiente:

  • Node.js instalado. Node.js es un entorno de ejecución JavaScript multiplataforma de código abierto.

  • ngrok - Se requiere una Account gratuita. Esta herramienta permite a los desarrolladores exponer a Internet un servidor de desarrollo local.

Uso de ngrok para configurar un túnel local

ngrok es una aplicación multiplataforma que permite a los desarrolladores exponer un servidor de desarrollo local a Internet con un esfuerzo mínimo. Lo utilizaremos para exponer nuestro webhook (creado en breve) a la Internet pública.

Cuando se entrega un mensaje, el operador de telefonía móvil suele devolver un recibo de entrega (DLR) a Vonage, explicando el estado de entrega de tu mensaje. Si has configurado un punto final de webhook, Vonage reenvía este recibo de entrega a tu punto final.

Necesitamos configurar ngrok para crear un túnel local para que podamos ejecutar nuestro código Node.js más tarde.

Una vez que haya configurado ngrok y haya iniciado sesión (de nuevo, la cuenta gratuita es aceptable), ejecute el siguiente comando:

ngrok http 5000

Después de que ngrok se ejecute, te dará un Reenvío que usaremos como base para nuestro Webhook más adelante en el artículo. La mía se parece a la siguiente:

ngrok running successfullyngrok.png

Anote la URL de reenvío, ya que la utilizaremos en el siguiente paso.

Cómo activar los recibos de entrega (DLR) dentro del panel para desarrolladores de Vonage

Para utilizar esta función, debes crear una cuenta de desarrollador de Vonage desde el portal para desarrolladores. Si no tienes una Account, sigue adelante y crea una, ya que proporcionamos créditos para comenzar. No se requiere tarjeta de crédito.

Inicia sesión en tu Account de Vonage y ve a Configuración. Desplázate hacia abajo hasta Configuración de SMSy completa los recibos de entrega (DLR) webhooks con la URL de reenvío ngrok y añada /reciboy pulse Guardar.

SMS Settingssmssettings.png

Cada vez que envíes un mensaje desde tu número virtual, la llamada al webhook de recepción de entrega se hará a esa URL que ejecutará el código en tu máquina local. ¡Escribamos algo de código con Node.js y Express para manejarlo!

Configuración del proyecto Node.js

Ahora que hemos configurado ngrok y añadido un webhook de recibo de entrega veamos cómo debemos configurar nuestra aplicación Node.js.

Comience por ir a un símbolo del sistema / terminal, la creación de un directorio de trabajo, y la inicialización de un proyecto Node.js.

npm init -y

Gestionaremos las solicitudes con Express y utilizaremos analizador de cuerpos para analizar los cuerpos de las peticiones entrantes. Instala ambos con lo siguiente:

npm install express body-parser --save

Creamos un index.js file, instanciar express, y escuchar al servidor en el puerto 5000, ya que hemos configurado ngrok en ese puerto.

const app = require('express')();
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

Definamos el endpoint para la URL de recepción como /receipt.

app
  .route('/receipt')
  .get(handleDeliveryReceipt)
  .post(handleDeliveryReceipt)

A continuación, defina la directiva handleDeliveryReceipt como sigue:

function handleDeliveryReceipt(request, response) {
  const params = Object.assign(request.query, request.body)
  console.log(params)
  response.status(204).send()
}

app.listen(process.env.PORT || 5000)

A continuación, la aplicación registrará el recibo en la ventana de la consola.

Ejecutar la aplicación

Escriba lo siguiente en el símbolo del sistema/terminal para ejecutar la aplicación:

node index.js

Intenta enviar mensajes de texto desde tu número virtual de Vonage a tu número de teléfono móvil para probar.

Si su mensaje se ha enviado correctamente a su teléfono móvil, debería recibir un recibo con la información, incluyendo estado, messageId, código de redetc. Esta información se muestra a través del terminal o símbolo del sistema.

A continuación se muestra una muestra de cómo es el mío:

{
  msisdn: '14259999999',
  to: '18339999999',
  'network-code': '310260',
  messageId: 'c0f9b0a4-f62a-481e-8698-d52231de9047',
  price: '0.00869000',
  status: 'delivered',
  scts: '9992241831',
  'err-code': '0',
  'api-key': '99999999',
  'message-timestamp': '2023-02-24 18:31:15'
}

Nota: No todas las redes y países admiten recibos de entrega. Consulte la documentación para más información.

Resumen

Ahora que ha aprendido a averiguar si los mensajes SMS enviados desde su número virtual han sido entregados utilizando Node.js, podría ampliar este proyecto para guardar la respuesta en una base de datos en la nube o probar nuestra API de mensajería. Además, prueba a enviar un mensaje de texto cuando tu teléfono esté apagado para ver los distintos estados del indicador de estado del campo.

Si tienes preguntas o comentarios, únete a nosotros en el Slack para desarrolladores de Vonage o envíame un Tweet a Twittery te responderé. Gracias de nuevo por leer, ¡y te espero en el próximo!

Compartir:

https://a.storyblok.com/f/270183/400x400/7cdff37c0e/michael-crump.png
Michael CrumpDirector de Experiencias de los Desarrolladores

Michael Crump trabaja en Vonage en el equipo de experiencias para desarrolladores y es programador, YouTuber y conferenciante habitual sobre diversos temas de desarrollo de .NET, la nube y las comunicaciones. Le apasiona ayudar a los desarrolladores a comprender las ventajas de cada uno de ellos de una forma sencilla.