SMS-Versand mit TypeScript: Überblick über APIs und Bibliotheken
Moderne Webanwendungen und Dienste benötigen oft eine Integration mit SMS-Gateways, um Benachrichtigungen, Bestätigungen oder Marketingnachrichten zu versenden. TypeScript, als Erweiterung von JavaScript, bietet eine strenge Typisierung, die besonders bei der Arbeit mit externen APIs nützlich ist. In diesem Artikel betrachten wir, wie der SMS-Versand aus einer TypeScript-Anwendung mit gängigen Bibliotheken und Diensten organisiert werden kann.
Warum TypeScript für die Arbeit mit SMS-APIs?
TypeScript fügt statische Typisierung hinzu, was die Anzahl der Laufzeitfehler reduziert. Bei der Arbeit mit SMS-Anbietern ist dies kritisch, da API-Anfragen oft komplexe Datenstrukturen enthalten (Telefonnummern, Text, Versandparameter). Typen helfen, Tippfehler in Feldnamen zu vermeiden und gewährleisten eine korrekte Datenübertragung.
Wichtige Bibliotheken für den SMS-Versand
Auf dem Markt gibt es mehrere beliebte Dienste, die HTTP-APIs zum Versenden von SMS bereitstellen. Wir betrachten zwei der gängigsten Optionen für TypeScript.
1. Twilio (offizielles SDK)
Twilio ist einer der Marktführer im Bereich Cloud-Kommunikation. Das offizielle SDK für Node.js ist vollständig mit TypeScript kompatibel und wird mit vorgefertigten Typen ausgeliefert.
Installation:
npm install twilionpm install @types/twilio --save-dev // Typen sind bereits enthalten, aber für ältere VersionenBeispiel für den SMS-Versand:
import { Twilio } from 'twilio';
const accountSid = 'IHRE_ACCOUNT_SID';const authToken = 'IHR_AUTH_TOKEN';const client = new Twilio(accountSid, authToken);
interface SmsParams { to: string; // Empfängernummer im Format +71234567890 from: string; // Absendernummer (bei Twilio gekauft) body: string; // Nachrichtentext}
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 gesendet. SID: ${message.sid}`); } catch (error) { console.error('Fehler beim Senden:', error); }}
// VerwendungsendSms({ to: '+79001234567', from: '+15005550006', body: 'Hallo! Dies ist eine Testnachricht aus TypeScript.',});2. SMS Aero (REST API via fetch/axios)
SMS Aero ist ein russischer Dienst, der für lokale Projekte beliebt ist. Es gibt kein offizielles SDK für TypeScript, aber es können typisierte Wrapper um fetch oder axios verwendet werden.
Installation:
npm install axiosBeispiel mit typisierter Anfrage:
import axios, { AxiosResponse } from 'axios';
interface SmsAeroResponse { status: 'success' | 'error'; id?: number; message?: string;}
interface SmsAeroParams { to: string; from?: string; text: string; sign?: string; // Absendersignatur}
const API_URL = 'https://gate.smsaero.ru/v2/sms/send';const EMAIL = 'ihre_email@example.com';const API_KEY = 'ihr_schlüssel';
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;}
// VerwendungsendSmsAero({ to: '79001234567', text: 'Ihr Bestätigungscode: 1234', sign: 'MyApp',}).then(res => console.log(res));Erstellung einer universellen TypeScript-Wrapper-Klasse
Für Projekte, bei denen ein Anbieterwechsel erforderlich sein könnte, ist es praktisch, eine abstrakte Schnittstelle zu erstellen.
Auch in der Bibliothek
migrate für Go: Vollständige Anleitung mit Beispielen
Event Bus und das Observer-Pattern in Java: Implementierung einer lose gekoppelten Architektur
Arbeiten mit CSV in Go (Golang): vollständige Anleitung zu encoding/csv
E-Mail-Versand in Java: Bibliotheken JavaMail und Simple Java Mail