Envío de SMS en TypeScript: Bibliotecas API e Integración

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 TypeScript: Resumen de API y Bibliotecas

Las aplicaciones web y servicios modernos a menudo requieren integración con pasarelas SMS para enviar notificaciones, confirmaciones o mensajes de marketing. TypeScript, como superconjunto de JavaScript, proporciona un tipado estricto, lo cual es especialmente útil al trabajar con API externas. En este artículo, veremos cómo organizar el envío de SMS desde una aplicación TypeScript utilizando bibliotecas y servicios populares.



¿Por qué TypeScript para trabajar con API SMS?

TypeScript añade tipado estático, lo que reduce la cantidad de errores en tiempo de ejecución. Al trabajar con proveedores de SMS, esto es crítico, ya que las solicitudes a la API a menudo contienen estructuras de datos complejas (números de teléfono, texto, parámetros de envío). Los tipos ayudan a evitar errores tipográficos en los nombres de los campos y garantizan una transmisión de datos correcta.



Bibliotecas principales para enviar SMS

En el mercado existen varios servicios populares que proporcionan API HTTP para enviar SMS. Veamos dos de las opciones más comunes para TypeScript.



1. Twilio (SDK oficial)

Twilio es uno de los líderes del mercado de comunicaciones en la nube. El SDK oficial para Node.js es totalmente compatible con TypeScript y viene con tipos predefinidos.

Instalación:

npm install twilionpm install @types/twilio --save-dev  // los tipos ya están incluidos, pero para versiones antiguas

Ejemplo de envío de SMS:

import { Twilio } from 'twilio';

const accountSid = 'TU_ACCOUNT_SID';const authToken = 'TU_AUTH_TOKEN';const client = new Twilio(accountSid, authToken);

interface SmsParams { to: string; // número del destinatario en formato +71234567890 from: string; // número del remitente (comprado en Twilio) body: string; // texto del mensaje}

async function sendSms(params: SmsParams): Promise<void> { try { const message = await client.messages.create({ body: params.body, from: params.from, to: params.to, }); console.log(`SMS enviado. SID: ${message.sid}`); } catch (error) { console.error('Error al enviar:', error); }}

// UsosendSms({ to: '+79001234567', from: '+15005550006', body: '¡Hola! Este es un mensaje de prueba desde TypeScript.',});


2. SMS Aero (API REST mediante fetch/axios)

SMS Aero es un servicio ruso, popular para proyectos locales. No tiene un SDK oficial para TypeScript, pero se pueden usar envoltorios tipados sobre fetch o axios.

Instalación:

npm install axios

Ejemplo con solicitud tipada:

import axios, { AxiosResponse } from 'axios';

interface SmsAeroResponse { status: 'success' | 'error'; id?: number; message?: string;}

interface SmsAeroParams { to: string; from?: string; text: string; sign?: string; // firma del remitente}

const API_URL = 'https://gate.smsaero.ru/v2/sms/send';const EMAIL = 'tu_email@example.com';const API_KEY = 'tu_clave';

async function sendSmsAero(params: SmsAeroParams): Promise<SmsAeroResponse> { const auth = Buffer.from(`${EMAIL}:${API_KEY}`).toString('base64'); const response: AxiosResponse<SmsAeroResponse> = await axios.post( API_URL, { number: params.to, text: params.text, sign: params.sign || 'SMS Aero', }, { headers: { 'Authorization': `Basic ${auth}`, 'Content-Type': 'application/json', }, } ); return response.data;}

// UsosendSmsAero({ to: '79001234567', text: 'Tu código de confirmación: 1234', sign: 'MyApp',}).then(res => console.log(res));


Creación de un envoltorio universal en TypeScript

Para proyectos donde pueda ser necesario cambiar de proveedor, es conveniente crear una interfaz abstracta

Recommendations