Envoi de SMS en TypeScript : aperçu des API et bibliothèques
Les applications web et services modernes nécessitent souvent une intégration avec des passerelles SMS pour envoyer des notifications, des confirmations ou des messages marketing. TypeScript, en tant que surcouche de JavaScript, offre un typage strict, ce qui est particulièrement utile lors du travail avec des API externes. Dans cet article, nous verrons comment organiser l'envoi de SMS depuis une application TypeScript en utilisant des bibliothèques et services populaires.
Pourquoi TypeScript pour travailler avec une API SMS ?
TypeScript ajoute un typage statique, ce qui réduit le nombre d'erreurs à l'exécution. Lors du travail avec des fournisseurs de SMS, c'est crucial car les requêtes vers l'API contiennent souvent des structures de données complexes (numéros de téléphone, texte, paramètres d'envoi). Les types aident à éviter les fautes de frappe dans les noms de champs et garantissent une transmission correcte des données.
Bibliothèques principales pour l'envoi de SMS
Il existe plusieurs services populaires sur le marché qui fournissent une API HTTP pour l'envoi de SMS. Examinons deux des options les plus courantes pour TypeScript.
1. Twilio (SDK officiel)
Twilio est l'un des leaders du marché des communications cloud. Le SDK officiel pour Node.js est entièrement compatible avec TypeScript et est livré avec des types prêts à l'emploi.
Installation :
npm install twilionpm install @types/twilio --save-dev // les types sont déjà inclus, mais pour les anciennes versionsExemple d'envoi de SMS :
import { Twilio } from 'twilio';
const accountSid = 'VOTRE_ACCOUNT_SID';const authToken = 'VOTRE_AUTH_TOKEN';const client = new Twilio(accountSid, authToken);
interface SmsParams { to: string; // numéro du destinataire au format +71234567890 from: string; // numéro de l'expéditeur (acheté chez Twilio) body: string; // texte du message}
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 envoyé. SID : ${message.sid}`); } catch (error) { console.error('Erreur d\'envoi :', error); }}
// UtilisationsendSms({ to: '+79001234567', from: '+15005550006', body: 'Bonjour ! Ceci est un message de test depuis TypeScript.',});2. SMS Aero (API REST via fetch/axios)
SMS Aero est un service russe, populaire pour les projets locaux. Il n'existe pas de SDK officiel pour TypeScript, mais on peut utiliser des wrappers typés autour de fetch ou axios.
Installation :
npm install axiosExemple avec une requête typée :
import axios, { AxiosResponse } from 'axios';
interface SmsAeroResponse { status: 'success' | 'error'; id?: number; message?: string;}
interface SmsAeroParams { to: string; from?: string; text: string; sign?: string; // signature de l'expéditeur}
const API_URL = 'https://gate.smsaero.ru/v2/sms/send';const EMAIL = 'votre_email@example.com';const API_KEY = 'votre_clé';
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;}
// UtilisationsendSmsAero({ to: '79001234567', text: 'Votre code de confirmation : 1234', sign: 'MyApp',}).then(res => console.log(res));Création d'un wrapper TypeScript universel
Pour les projets où un changement de fournisseur peut être nécessaire, il est pratique de créer une interface abstraite
Aussi dans la bibliothèque
MetricsKit — surveillance des applications Swift (iOS/macOS)
Traitement d'images en C# : redimensionnement et recadrage avec la bibliothèque ImageSharp
Guide complet Glide/Coil Kotlin : méthodes et exemples
Traitement d'images en C# : redimensionnement et recadrage (resize, crop)
Travailler avec Apache Kafka en Java : guide complet pour développeur