https://d226lax1qjow5r.cloudfront.net/blog/blogposts/send-and-receive-sms-messages-with-node-js-and-express/node-js_express_sms.png

Cómo enviar y recibir mensajes SMS con Node.js

Publicado el October 4, 2023

Tiempo de lectura: 9 minutos

Este artículo ha sido actualizado en junio de 2025.

Introducción

El Mensajes API de Vonage te permite enviar y recibir mensajes por SMS, MMS, Facebook Messenger, Viber, WhatsApp, ¡y ahora incluso RCS! Para que puedas comunicarte con tus clientes en el canal que más les guste.

En este artículo, nos centraremos en cómo enviar y recibir mensajes SMS con Node.js y Express.

Para empezar, realizaremos la implementación más sencilla de la API y enviaremos un mensaje SMS con Node.js y la API de Messages de Vonage.

A continuación, vamos a construir un Webhook que puede recibir mensajes SMS desde su teléfono utilizando Express y realizar una acción una vez que el mensaje de texto ha sido recibido.

Por último, concluiremos con un par de pasos que puedes dar para ampliar la aplicación.

Puede consultar la documentación para más detalles.

Requisitos previos

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

  • A Cuenta API de Vonage

    Abra su Página de configuración de API para acceder a tu clave y secreto de API de Vonage, que aparecen como se muestra en la captura de pantalla a continuación. La clave de API se encuentra en la parte superior de la página, y para acceder a tu secreto de API, consulta la subsección "Secreto de Account".

    Nota: En caso de que no recuerde su secreto de API creado anteriormente, haga clic en "+ Crear nuevo secreto" y guárdelo de forma segura.

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

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

  • CLI de Vonage - Una vez instalado Node.js, puedes usar npm install -g @vonage/cli para instalarlo. Esta herramienta te permite crear y administrar tus aplicaciones de Vonage.

Cómo enviar un SMS con Node.js

Para la primera parte de este tutorial, cubriremos cómo enviar mensajes de texto con Node.js. Utilizaremos la API de Messages de Vonage para trabajar con Node.js y manejar mensajes SMS. Para enviar un SMS con Node.js y la API de Messages API de Vonage, sigue estos pasos:

  1. Instala el SDK de Vonage Node.js

  2. Ejecutar ngrok

  3. Crear una aplicación habilitada para SMS

  4. Enviar el mensaje SMS

1. Instala el SDK de Vonage Node.js

Con la Messages API, es fácil enviar un SMS con Node.js. Para utilizarla, necesitaremos instalar el Vonage Node.js SDK.

npm install @vonage/server-sdk

Si bien Vonage tiene dos API diferentes capaces de enviar y recibir SMS, sólo puedes usar una a la vez porque cambiará el formato de los webhooks que recibas.

Asegúrese de que la API Messages API está configurada por defecto en Claves APIy, a continuación Configuración de SMS de su Account.

Set Messages API as the default API for sending SMS messagesSet Messages API as the default API for sending SMS messages Cambie la configuración a Messages APIy pulse Guardar cambios.

2. Ejecutar ngrok

Una vez instalada la Messages API, el siguiente paso es ejecutar ngrok.

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 servicio a Internet. Si usted no ha utilizado ngrok antes, hay un entrada de blog que lo explica con más detalle. Una vez que tengas ngrok configurado y hayas iniciado sesión (de nuevo, la cuenta gratuita es aceptable), ejecuta el siguiente comando:

ngrok http 3000

Después de que ngrok se ejecute, te dará un Reenvío que utilizaremos como base para nuestros Webhooks más adelante en el artículo.

3. Crear una aplicación habilitada para SMS

Para interactuar con Messages API, necesitaremos crear una aplicación API de Vonage para autenticar nuestras solicitudes.

Piensa en las aplicaciones más como contenedores y metadatos para agrupar todos tus datos en la plataforma de Vonage. Crearemos crearemos uno usando el panel de la API de Vonage.

Introduzca un nombre (por ejemplo, "Enviar y recibir mensajes SMS") y haga clic en Generar clave pública y privada. Se te pedirá que guardes un archivo de claves en el disco: la clave privada. Suele ser una buena idea guardarla en la carpeta del proyecto, ya que la necesitarás más adelante. Las aplicaciones funcionan con un sistema de clave pública/privada, de modo que cuando creas una aplicación, se genera una clave pública que Vonage conserva, y se genera una clave privada que Vonage no conserva y que se te devuelve a través de la creación de la aplicación. Utilizaremos la clave privada para autenticar nuestras llamadas a la biblioteca más adelante.

A continuación, debe activar la función Mensajes y proporcionar una URL de entrada y una URL de estado.

Utilice la URL de ngrok que obtuvo en el paso anterior y rellene cada campo, añadiendo /webhooks/inbound y /webhooks/statuspara la URL de entrada y URL de estado.

Cuando un mensaje llega a la Messages APIlos datos sobre el mismo se envían a la URL de entrada. Cuando se envía un mensaje a través de la API, los datos sobre el estado del mensaje se envían a la dirección URL de estado.

Por último, vincule uno o varios de sus números virtuales a esta aplicación. Todos los mensajes recibidos en estos Numbers se transmitirán a su URL de entrada.

Create Messages enabled Vonage ApplicationCreate Messages enabled Vonage Application

4. Enviar el mensaje SMS

Por último, crearemos el código en Node.js para enviar mensajes SMS.

Crea una nueva carpeta donde quieras almacenar el código fuente de la aplicación que estamos creando. Una vez completado, escribe npm init para inicializar una nueva aplicación Node.js. Por último, crea un archivo index.js e inicializa la librería node de Vonage instalada anteriormente.

const { Vonage } = require('@vonage/server-sdk');

const vonage = new Vonage({
  applicationId: VONAGE_APPLICATION_ID,
  privateKey: VONAGE_APPLICATION_PRIVATE_KEY_PATH
});

Como buena práctica, debería utilizar variables de entorno cuando incluyas los siguientes valores en tu código.

Sustituya el campo VONAGE_APPLICATION_ID por el ID de aplicación provisto para la aplicación de Vonage que creaste. Reemplaza VONAGE_APPLICATION_PRIVATE_KEY_PATH con la ruta a la clave privada que se descargó automáticamente para ti. Nota: copié mi archivo private.key en la raíz de mi aplicación y puedo acceder a él especificando que el archivo privateKey sea igual a './private.key'

Para enviar un mensaje SMS con la Messages API, usaremos el método vonage.messages.send de la biblioteca Vonage Node.js. Este método acepta objetos como parámetros, con información sobre el destinatario, el remitente y el contenido. Varían para los distintos canales, por lo que tendrás que consultar la documentación de la API para los otros canales mencionados.

Para los SMS, tendremos que especificar un destinatario y un remitente. Por último, el objeto content acepta un objeto type de text y un mensaje de texto. La llamada de retorno devuelve un objeto de error y respuesta, y registraremos mensajes sobre el éxito o el fracaso de la operación.

const text = "👋Hello from Vonage";

vonage.messages
  .send({
    text: text,
    message_type: "text",
    to: TO_NUMBER,
    from: FROM_NUMBER,
    channel: "sms",
  })
  .then((resp) => console.log(resp.message_uuid))
  .catch((err) => console.error(err));

Sustituya TO_NUMBER por el número de teléfono de destino como cadena y añada el número de teléfono asignado al campo FROM_NUMBER y ejecute el código con

node index.js

Eso es todo; ¡acabas de enviar un SMS usando Node.js y la API Messages API de Vonage!

Puedes notar que Messages API es un poco más prolija, pero aún así sólo necesita un método para verificar si el mensaje entrante proviene de Vonage. Incluye lo siguiente:

const verifyJWT = (req) => {
// Verify if the incoming message came from Vonage
const jwtToken = req.headers.authorization.split(" ")[1];
if(!verifySignature(jwtToken, process.env.VONAGE_API_SIGNATURE_SECRET)) {
console.error("Unauthorized request");
throw new Error('Not a messages API request');
}

console.log('JWT verified');
}

Cómo recibir mensajes SMS con Node.js

Cuando un número de Vonage reciba un mensaje SMS, Vonage pasará ese mensaje a un Webhook predeterminado. Ya has configurado la URL del webhook cuando creaste la aplicación de Vonage habilitada para mensajes: YOUR_NGROK_URL/webhooks/inbound

Para recibir mensajes SMS con Node.js, sigue estos pasos:

  1. Crear un servidor web

  2. Crear un Webhook para la URL de entrada

  3. Enviar y recibir un mensaje de prueba

1. Crear un servidor web

Crearemos nuestro servidor web utilizando Express porque es uno de los frameworks de Node.js más populares y fáciles de usar para este propósito. También vamos a ver los cuerpos de las peticiones para la URL de entrada, así que necesitaremos instalar express desde npm.

npm install express --save

Creemos un nuevo archivo para esto y llamémoslo server.js. Esto puede vivir en la misma carpeta que hemos creado anteriormente.

Crearemos una aplicación express básica que utiliza el analizador JSON de express y establezca la opción urlencoded a la opción true. Rellenemos el archivo server.js que hemos creado. Usaremos el puerto 3000 para que el servidor escuche, y ya tenemos ngrok corriendo en el puerto 3000.

const express = require("express");

const { json, urlencoded } = express;

const app = express();

app.use(json());

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

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

2. Crear un Webhook para la URL de entrada

Crearemos un manejador de peticiones POST para /webhooks/inbound para la URL entrante, y registraremos el cuerpo de la solicitud en la consola. Como Vonage tiene un mecanismo de reintento, seguirá reenviando el mensaje si la URL no responde con 200 OKpor lo que devolveremos un estado 200 estado.

app.post("/webhooks/inbound", (req, res) => {
  console.log(req.body);

  res.status(200).end();
});

Puedes ejecutar el código con lo siguiente:

node server.js

3. Enviar y recibir un mensaje de prueba

Ahora envía un mensaje SMS desde tu teléfono a tu número de Vonage. Verifica tu terminal: deberías ver algo como esto si todo está funcionando:

{ to: '447700900000', from: '447700900001', channel: 'sms', message_uuid: 'a580f869-e995-4d76-9b80-a7befe3186a4', timestamp: '2025-06-06T23:02:31Z', usage: { price: '0.0057', currency: 'EUR' }, message_type: 'text', text: "Hello from my personal phone!", sms: { num_messages: '1' } }

Resumen

Y así de fácil, ¡has enviado tu primer SMS! Ahora que has aprendido a enviar y recibir mensajes SMS con la API Messages API de Vonage y Node.js, podrías ampliar este proyecto para responder a mensajes SMS entrantes o incluir elementos interactivos más complejos para tus necesidades de SMS actuales o futuras.

¿Tienes alguna pregunta o algo que compartir? Únete a la conversación en Slack de la comunidad de Vonagey mantente actualizado con el Boletín para desarrolladoressíguenos en X (antes Twitter)suscríbete a nuestro canal de YouTube para ver tutoriales en video, y sigue la página de página para desarrolladores de Vonage en LinkedInun espacio para que los desarrolladores aprendan y se conecten con la comunidad. Mantente conectado, comparte tu progreso y entérate de las últimas noticias, consejos y eventos para desarrolladores.

Gracias de nuevo por leer, ¡y os espero en la próxima!

Lecturas complementarias

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.