Envío de SMS en JavaScript (Node.js): API, bibliotecas y ejemplos de código

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Envío de SMS en JavaScript (Node.js): API, bibliotecas y ejemplos prácticos



En el mundo moderno, las notificaciones por SMS siguen siendo una de las formas más confiables de comunicarse con los usuarios. Ya sea para confirmación de registro, código de autenticación de dos factores o campañas de marketing, la capacidad de enviar mensajes SMS programáticamente es fundamental para muchas aplicaciones web. En este artículo, veremos cómo implementar el envío de SMS en JavaScript (Node.js) utilizando varias API y bibliotecas.



Elección del proveedor de SMS y obtención de la clave API



El primer paso es elegir un servicio para enviar SMS. Existen muchos proveedores, como Twilio, Nexmo (Vonage), Amazon SNS, ClickSend y otros. Para comenzar, necesitará:

  • Registrarse en el servicio seleccionado.
  • Recargar saldo o conectar una cuenta de prueba.
  • Obtener la clave API, SID y token de acceso (cada proveedor tiene su propia terminología).
  • Configurar el remitente (Sender ID): un número de teléfono o un nombre alfabético.


Instalación de las bibliotecas necesarias



Para trabajar con las API de los proveedores de SMS en Node.js, se utilizan con mayor frecuencia los SDK oficiales. Veamos la instalación usando como ejemplo el popular servicio Twilio y la biblioteca universal axios para solicitudes HTTP.



# Instalación de la biblioteca Twilionpm install twilio

# Instalación de axios para solicitudes REST APInpm install axios


Ejemplo 1: Envío de SMS a través del SDK de Twilio



Twilio proporciona un SDK conveniente para Node.js. Después de la instalación, cree un archivo send-sms.js y agregue el siguiente código:



const twilio = require('twilio');

// Sus credenciales de la consola de Twilioconst accountSid = process.env.TWILIO_ACCOUNT_SID;const authToken = process.env.TWILIO_AUTH_TOKEN;

const client = new twilio(accountSid, authToken);

async function sendSMS() { try { const message = await client.messages.create({ body: '¡Hola! Este es un SMS de prueba desde una aplicación Node.js.', from: '+1234567890', // Número obtenido de Twilio to: '+79001234567' // Número del destinatario }); console.log('SMS enviado. SID:', message.sid); } catch (error) { console.error('Error al enviar SMS:', error); }}

sendSMS();


Importante: Nunca almacene las claves directamente en el código. Utilice variables de entorno (archivo .env o configuración del sistema).



Ejemplo 2: Envío de SMS a través de una API REST universal



Si su proveedor no tiene un SDK oficial, puede usar axios para enviar una solicitud POST. Veamos un ejemplo con una puerta de enlace SMS abstracta:



const axios = require('axios');

const API_URL = 'https://api.sms-provider.com/v1/send';const API_KEY = process.env.SMS_API_KEY;

async function sendSMSViaREST(phone, message) { try { const response = await axios.post(API_URL, { apiKey: API_KEY, phone: phone, text: message, sender: 'MyApp' // Nombre del remitente }, { headers: { 'Content-Type': 'application/json' } }); console.log('Respuesta del servidor:', response.data); } catch (error) { console.error('Error:', error.response ? error.response.data : error.message); }}

// UsosendSMSViaREST('+79001234567', 'Su código de confirmación: 1234');


Manejo de errores y estados de entrega



Al trabajar con SMS, es importante tener en cuenta los posibles errores:

  • Número incorrecto — verifique el formato del teléfono (formato internacional con +).
  • Saldo insuficiente — controle el saldo de la cuenta.
  • Restricciones del proveedor — algunos operadores bloquean los envíos masivos.
  • Tiempos de espera — utilice ma

Recommendations