在 Kotlin 中发送短信:smslib4k API 库

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Использование библиотеки smslib4k для отправки SMS в Kotlin



В современной веб-разработке интеграция SMS-уведомлений остается востребованной задачей: двухфакторная аутентификация, уведомления о статусе заказа, напоминания и т.д. Для языка Kotlin существует удобная библиотека smslib4k, которая предоставляет единый интерфейс для работы с популярными SMS-провайдерами через REST API.



Библиотека написана на чистом Kotlin и использует корутины (kotlinx.coroutines), что позволяет выполнять асинхронную отправку сообщений. Она абстрагирует различия между разными провайдерами (Twilio, Vonage, SMS-Центр, СМС-Рай и др.), позволяя разработчику сосредоточиться на бизнес-логике.



Установка и настройка



Для использования smslib4k добавьте зависимость в build.gradle.kts:



repositories {    mavenCentral()}

dependencies { implementation("io.github.smslib4k:smslib4k-core:2.1.0") // Для конкретного провайдера, например Twilio: implementation("io.github.smslib4k:smslib4k-twilio:2.1.0")}


После синхронизации Gradle библиотека готова к использованию.



Базовая инициализация клиента



Каждый провайдер требует свои учетные данные. Вот пример настройки для SMS-Центр (популярного российского провайдера):



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-клиент инициализирован")}


Для Twilio структура аналогична, но требует accountSid и authToken.



Отправка одиночного SMS



Библиотека поддерживает как синхронную, так и асинхронную отправку. Рекомендуется использовать корутины:



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

fun main() = runBlocking { val client = createClient() // функция из предыдущего примера

val message = SmsMessage( to = "+79161234567", text = "Привет! Это тестовое сообщение из Kotlin." )

val result = client.send(message) println("Статус: ${result.status}") println("ID сообщения: ${result.messageId}")}


Метод send возвращает объект SmsResult, содержащий статус (SUCCESS, FAILED, PENDING) и уникальный идентификатор от провайдера.



Массовая отправка



Для отправки одного и того же текста на несколько номеров используйте sendBatch:



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

val batchResult = client.sendBatch( to = recipients, text = "Акция! Скидка 20% на все товары на этой неделе.")

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


Библиотека автоматически обрабатывает ограничения провайдера на количество запросов в секунду с помощью встроенного ограничителя скорости.



Настройка дополнительных параметров



Многие провайдеры поддерживают расширенные опции: имя отправителя (альфа-имя), флаг транзакционности, время жизни сообщения. В smslib4k это реализуется через билдер:



val message = SmsMessageBuilder()    .to("+79161234567")    .text("Ваш код подтверждения: 1234")    .sender("MyApp")          // Альфа-имя (если разрешено провайдером)    .ttl(300)                 // Время жизни в секундах    .isTransactional(true)    // Приоритетная доставка    .build()

client.send(message)


Обработка ошибок



При возникновении сетевых проблем или неверных учетных данных библиотека выбрасывает исключения. Рекомендуется оборачивать вызовы в try-catch:



t                    

推荐