SMS-Versand mit TypeScript: API-Bibliothek sms-client-ts

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Bibliothek sms-client-ts: SMS-Versand über TypeScript

\n

In der modernen Webentwicklung bleibt der Versand von SMS-Nachrichten eine gefragte Funktion – von der Zwei-Faktor-Authentifizierung bis zu Benachrichtigungen über den Bestellstatus. Für das TypeScript-Ökosystem gibt es die praktische Bibliothek sms-client-ts, die eine typsichere Schnittstelle für die Arbeit mit gängigen SMS-Anbietern bietet. In diesem Artikel analysieren wir ihre API, Einrichtung und typische Anwendungsszenarien.

\n\n

Installation und Einbindung

\n

Die Bibliothek wird über npm verbreitet. Installieren Sie sie mit folgendem Befehl in Ihrem Projekt:

\n
npm install sms-client-ts
\n

Nach der Installation importieren Sie die Hauptklasse SmsClient:

\n
import { SmsClient } from 'sms-client-ts';
\n\n

Client-Konfiguration

\n

Für die Arbeit mit einem beliebigen Anbieter muss ein Konfigurationsobjekt übergeben werden. Die Bibliothek unterstützt mehrere Dienste: Twilio, Vonage (Nexmo), SMSC.ru und andere. Beispiel für die Einrichtung mit Twilio:

\n
const client = new SmsClient({\n  provider: 'twilio',\n  credentials: {\n    accountSid: process.env.TWILIO_ACCOUNT_SID,\n    authToken: process.env.TWILIO_AUTH_TOKEN,\n    from: '+1234567890' // Absendernummer\n  }\n});
\n

Für den russischen Anbieter SMSC.ru sieht die Konfiguration anders aus:

\n
const clientSMSC = new SmsClient({\n  provider: 'smscru',\n  credentials: {\n    login: 'your_login',\n    password: 'your_password',\n    sender: 'MyBrand' // Absendername\n  }\n});
\n\n

Wichtige API-Methoden

\n

Die Bibliothek bietet drei Schlüsselmethoden für die Arbeit mit SMS. Betrachten wir jede davon.

\n\n

1. Senden einer einzelnen Nachricht

\n

Die Methode sendSingle nimmt die Empfängernummer und den Nachrichtentext entgegen. Sie gibt ein Promise mit einem Ergebnisobjekt zurück.

\n
async function sendWelcomeSms(phone: string, name: string) {\n  try {\n    const result = await client.sendSingle({\n      to: phone,\n      text: `Hallo, ${name}! Willkommen in unserem Service.`\n    });\n    console.log('SMS gesendet:', result.messageId);\n  } catch (error) {\n    console.error('Fehler beim Senden:', error);\n  }\n}\n\nsendWelcomeSms('+49123456789', 'Ivan');
\n\n

2. Massenversand

\n

Um dieselbe Nachricht an mehrere Empfänger zu senden, verwenden Sie die Methode sendBulk. Sie nimmt ein Array von Nummern entgegen.

\n
async function sendPromoSms(phones: string[]) {\n  const result = await client.sendBulk({\n    to: phones,\n    text: 'Sonderangebot nur heute! 20% Rabatt auf alle Artikel.'\n  });\n  \n  console.log(`Erfolgreich gesendet: ${result.successCount}`);\n  console.log(`Fehler: ${result.failCount}`);\n  if (result.errors.length > 0) {\n    result.errors.forEach(err => {\n      console.error(`Fehler für ${err.phone}: ${err.message}`);\n    });\n  }\n}\n\nsendPromoSms(['+49123456789', '+49198765432']);
\n\n

3. Überprüfung des Lieferstatus

\n

Nach dem Senden können Sie den Status einer Nachricht anhand ihrer ID überprüfen. Die Methode getStatus gibt den aktuellen Zustand zurück.

\n
async function checkDelivery(messageId: string) {\n  const status = await client.getStatus(messageId);\n  console.log(`Status der Nachricht ${messageId}: ${status.state}`);\n  // Mögliche Werte: 'pending', 'delivered', 'failed', 'unknown'\n  \n  if (status.state === 'failed') {\n    console.log('Fehlergrund:', status.errorMessage);\n  }\n}\n\ncheckDelivery('SM123456789');
\n\n

Fehlerbehandlung und Typisierung

\n

Die Bibliothek bietet eigene Fehlertypen, was für TypeScript-Entwickler praktisch ist. Alle Ausnahmen erben von der Basisklasse SmsError.

\n
import { SmsError, ValidationError, AuthError, ProviderError } from 'sms-client-ts';\n\nasync function safeSend(phone: string, text: string) {\n  try {\n    return await client.sendSingle({ to: phone, text });\n  } catch                    

Empfehlungen