Envío de SMS en JavaScript (Node.js): biblioteca twilio
En el desarrollo web moderno, a menudo es necesario enviar notificaciones por SMS a los usuarios: confirmación de registro, códigos de autenticación de dos factores, alertas sobre el estado del pedido y mucho más. En el ecosistema de Node.js, una de las bibliotecas más populares y confiables para esta tarea es twilio. Este es el SDK oficial de la empresa Twilio, que proporciona una API simple y potente para el envío programático de SMS, llamadas de voz y trabajo con otros servicios de telecomunicaciones.
En este artículo, analizaremos en detalle cómo instalar, configurar y usar la biblioteca twilio para enviar SMS desde su aplicación Node.js. Aprenderá los métodos principales, cómo manejar errores y verá varios ejemplos prácticos.
Instalación y configuración
Para comenzar, necesitará una cuenta en Twilio. Después del registro, obtendrá:
- Account SID — un identificador único de su cuenta.
- Auth Token — una clave secreta para autenticar solicitudes.
- Twilio phone number — un número de teléfono desde el cual se enviarán los SMS (se proporciona gratuitamente para pruebas).
Instale la biblioteca a través de npm:
npm install twilioDespués de la instalación, cree un archivo send-sms.js e importe la biblioteca, pasando sus credenciales:
const twilio = require('twilio');
const accountSid = 'YOUR_ACCOUNT_SID';const authToken = 'YOUR_AUTH_TOKEN';const client = twilio(accountSid, authToken);Envío básico de SMS
Para enviar un mensaje, use el método client.messages.create(). Este acepta un objeto con tres campos obligatorios:
body— el texto del mensaje (hasta 1600 caracteres para un solo SMS).from— su número de Twilio (en formato+1234567890).to— el número del destinatario (también en formato internacional).
Ejemplo de envío de un SMS simple:
client.messages .create({ body: '¡Hola! Este es un mensaje de prueba con Twilio.', from: '+1234567890', to: '+59876543210' }) .then(message => console.log('Mensaje enviado. SID:', message.sid)) .catch(error => console.error('Error:', error));Después de un envío exitoso, recibirá un objeto message que contiene un sid único (identificador del mensaje), estado de entrega y otra información.
Envío asíncrono con async/await
Para un enfoque más moderno, use la sintaxis async/await. Envuelva la llamada en un bloque try...catch para manejar errores:
const sendSMS = async (to, body) => { try { const message = await client.messages.create({ body: body, from: '+1234567890', to: to }); console.log(`SMS enviado a ${to}. SID: ${message.sid}`); return message; } catch (error) { console.error('No se pudo enviar el SMS:', error.message); throw error; }};
// UsosendSMS('+59876543210', 'Su código de confirmación: 1234');Parámetros adicionales
La biblioteca admite muchos parámetros opcionales. Aquí hay algunos de ellos:
mediaUrl— URL de una imagen u otro archivo multimedia (para MMS).statusCallback— URL para recibir notificaciones sobre el estado de entrega (webhook).applicationSid— SID de la aplicación Twilio para configuración adicional.
Ejemplo de envío de MMS con una imagen:
client.messages .create({ from: '+1234567890', to: '+59876543210', body: 'Mira esta f