Envio de SMS em Kotlin: Biblioteca de API smslib4k

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Envio de SMS em Kotlin com a biblioteca smslib4k



No desenvolvimento web moderno, a integração de notificações SMS continua sendo uma tarefa demandada: autenticação de dois fatores, notificações de status de pedido, lembretes. Para a linguagem Kotlin, existe a biblioteca conveniente smslib4k, que fornece uma interface unificada para trabalhar com provedores SMS populares através da REST API.



A biblioteca é escrita em Kotlin puro usando corrotinas (kotlinx.coroutines) e suporta o envio assíncrono de mensagens. Ela abstrai as diferenças entre provedores (Twilio, Vonage, SMS-Центр, СМС-Рай e outros), permitindo que o desenvolvedor se concentre na lógica de negócios.



Instalação e configuração



Para usar o smslib4k, adicione a dependência no build.gradle.kts:



repositories {    mavenCentral()}

dependencies { implementation("io.github.smslib4k:smslib4k-core:2.1.0") // Para um provedor específico, por exemplo Twilio: implementation("io.github.smslib4k:smslib4k-twilio:2.1.0")}


Após a sincronização do Gradle, a biblioteca está pronta para uso.



Inicialização básica do cliente



Cada provedor exige suas próprias credenciais. Vejamos a configuração para o serviço SMS-Центр (provedor russo popular):



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("Cliente SMS inicializado")}


Para o Twilio, a construção será semelhante, mas exigirá accountSid e authToken.



Envio de um único SMS



A biblioteca suporta tanto o envio síncrono quanto o assíncrono. Recomenda-se o uso de corrotinas:



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

fun main() = runBlocking { val client = createClient() // função do exemplo anterior

val message = SmsMessage( to = "+79161234567", text = "Olá! Esta é uma mensagem de teste do Kotlin." )

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


O método send retorna um objeto SmsResult contendo o status (SUCCESS, FAILED, PENDING) e um identificador único do provedor.



Envio em massa



Para enviar o mesmo texto para vários números, use sendBatch:



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

val batchResult = client.sendBatch( to = recipients, text = "Promoção! 20% de desconto em todos os produtos até o final da semana.")

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


A biblioteca lida automaticamente com os limites de requisições por segundo do provedor, usando um rate-limiter integrado.



Configuração de parâmetros adicionais



Muitos provedores suportam opções avançadas: nome do remetente (alfa-nome), flag de transacionalidade, tempo de vida da mensagem. No smslib4k, isso é implementado através do builder:



val message = SmsMessageBuilder()    .to("+79161234567")    .text("Seu código de confirmação: 1234")    .sender("MyApp")          // alfa-nome (se permitido pelo provedor)    .ttl(300)                 // tempo de vida em segundos    .isTransactional(true)    // entrega prioritária    .build()

client.send(message)


Tratamento de erros



A biblioteca lança exceções em caso de problemas de rede ou credenciais inválidas. Recomenda-se envolver as chamadas em try-catch:



t                    

Recommendations