SMS-Versand mit Kotlin: API-Bibliothek smslib4k

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

Versand von SMS mit Kotlin mittels der Bibliothek smslib4k



In der modernen Webentwicklung bleibt die Integration von SMS-Benachrichtigungen eine gefragte Aufgabe: Zwei-Faktor-Authentifizierung, Benachrichtigungen über den Bestellstatus, Erinnerungen. Für die Sprache Kotlin gibt es die praktische Bibliothek smslib4k, die eine einheitliche Schnittstelle für die Arbeit mit gängigen SMS-Anbietern über REST API bietet.



Die Bibliothek ist in reinem Kotlin unter Verwendung von Koroutinen (kotlinx.coroutines) geschrieben und unterstützt den asynchronen Versand von Nachrichten. Sie abstrahiert die Unterschiede zwischen den Anbietern (Twilio, Vonage, SMS-Центр, СМС-Рай u.a.), sodass sich der Entwickler auf die Geschäftslogik konzentrieren kann.



Installation und Einbindung



Fügen Sie zur Verwendung von smslib4k die Abhängigkeit in build.gradle.kts hinzu:



repositories {    mavenCentral()}

dependencies { implementation("io.github.smslib4k:smslib4k-core:2.1.0") // Für einen bestimmten Anbieter, z.B. Twilio: implementation("io.github.smslib4k:smslib4k-twilio:2.1.0")}


Nach der Gradle-Synchronisation ist die Bibliothek einsatzbereit.



Basis-Initialisierung des Clients



Jeder Anbieter erfordert seine eigenen Zugangsdaten. Betrachten wir die Konfiguration für den Dienst SMS-Центр (ein beliebter russischer Anbieter):



import io.github.smslib4k.core.SmsClientimport io.github.smslib4k.providers.smscenter.SmsCenterProvider

fun main() { val client = SmsClient( provider = SmsCenterProvider( login = "your_login", password = "your_password" ) ) println("SMS-Client initialisiert")}


Für Twilio ist die Konstruktion ähnlich, erfordert jedoch accountSid und authToken.



Versand einer einzelnen SMS



Die Bibliothek unterstützt sowohl den synchronen als auch den asynchronen Versand. Es wird empfohlen, Koroutinen zu verwenden:



import kotlinx.coroutines.runBlockingimport io.github.smslib4k.core.model.SmsMessage

fun main() = runBlocking { val client = createClient() // Funktion aus dem vorherigen Beispiel

val message = SmsMessage( to = "+79161234567", text = "Hallo! Dies ist eine Testnachricht aus Kotlin." )

val result = client.send(message) println("Status: ${result.status}") println("Nachrichten-ID: ${result.messageId}")}


Die Methode send gibt ein Objekt SmsResult zurück, das den Status (SUCCESS, FAILED, PENDING) und eine eindeutige ID vom Anbieter enthält.



Massenversand



Verwenden Sie zum Senden eines Textes an mehrere Nummern sendBatch:



val recipients = listOf(    "+79161234567",    "+79261234568",    "+79361234569")

val batchResult = client.sendBatch( to = recipients, text = "Aktion! 20% Rabatt auf alle Artikel bis zum Wochenende.")

batchResult.forEach { (phone, result) -> println("$phone: ${result.status}")}


Die Bibliothek verarbeitet automatisch die Limits des Anbieters für die Anzahl der Anfragen pro Sekunde, indem sie einen integrierten Rate-Limiter verwendet.



Konfiguration zusätzlicher Parameter



Viele Anbieter unterstützen erweiterte Optionen: Absendername (Alpha-Name), Transaktionsflag, Nachrichtenlebensdauer. In smslib4k wird dies über einen Builder realisiert:



val message = SmsMessageBuilder()    .to("+79161234567")    .text("Ihr Bestätigungscode: 1234")    .sender("MyApp")          // Alpha-Name (falls vom Anbieter erlaubt)    .ttl(300)                 // Lebensdauer in Sekunden    .isTransactional(true)    // Prioritätszustellung    .build()

client.send(message)


Fehlerbehandlung



Die Bibliothek wirft Ausnahmen bei Netzwerkproblemen oder ungültigen Zugangsdaten. Es wird empfohlen, Aufrufe in try-catch zu kapseln:



t                    

Empfehlungen