Envio de SMS em Kotlin: API da biblioteca sms-client-kotlin
Aplicativos móveis modernos e soluções de servidor frequentemente exigem integração com gateways SMS para enviar notificações, confirmações ou mensagens de marketing. Para a linguagem Kotlin, existe a prática biblioteca sms-client-kotlin, que fornece uma API simples e type-safe para trabalhar com provedores SMS populares. Neste artigo, analisaremos detalhadamente sua arquitetura, métodos e exemplos de uso.
O que é sms-client-kotlin?
A biblioteca sms-client-kotlin é um cliente HTTP leve, escrito em Kotlin puro usando corrotinas. Ela abstrai o trabalho com as APIs REST de vários provedores SMS (por exemplo, Twilio, Vonage, SMS-Center) e fornece uma interface unificada para envio de mensagens. Principais vantagens:
- Assincronicidade — todas as requisições são executadas através de corrotinas Kotlin.
- Type-safety — tipagem estrita dos parâmetros de requisições e respostas.
- Modularidade — suporte a vários provedores através da interface unificada
SmsSender. - Configuração fácil — quantidade mínima de dependências.
Instalação e configuração
Para adicionar a biblioteca ao seu projeto, use o Gradle. Adicione a dependência no arquivo build.gradle.kts:
dependencies { implementation("com.github.sms-client:sms-client-kotlin:1.2.0") implementation("io.ktor:ktor-client-core:2.3.0") implementation("io.ktor:ktor-client-cio:2.3.0") // ou outro motor}Após sincronizar o projeto, você pode criar uma instância do cliente. Exemplo de inicialização para o provedor Twilio:
import sms.client.SmsClientimport sms.client.provider.twilio.TwilioConfig
fun main() { val config = TwilioConfig( accountSid = "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", authToken = "your_auth_token_here", fromNumber = "+1234567890" )
val client = SmsClient.create(config)}Principais métodos da API
A biblioteca fornece vários métodos-chave para envio e gerenciamento de SMS:
1. Envio de uma única mensagem
O método sendSms recebe o número do destinatário e o texto da mensagem. Retorna um objeto SmsResult com informações sobre o envio.
suspend fun sendSingleMessage(client: SmsClient) { val result = client.sendSms( to = "+79876543210", message = "Olá! Esta é uma mensagem de teste do Kotlin." )
when (result) { is SmsResult.Success -> println("Enviado! ID: ${result.messageId}") is SmsResult.Failure -> println("Erro: ${result.errorMessage}") }}2. Envio em lote
Para envios em massa, use o método sendBatch. Ele recebe uma lista de destinatários e um texto comum (ou mensagens individuais).
suspend fun sendBatch(client: SmsClient) { val recipients = listOf( BatchRecipient("+79111111111", "10% de desconto no primeiro pedido!"), BatchRecipient("+79222222222", "Seu código de confirmação: 1234") )
val batchResult = client.sendBatch(recipients) println("Enviados com sucesso: ${batchResult.successCount}, erros: ${batchResult.failureCount}")}3. Verificação do status de entrega
O método getDeliveryStatus permite obter o status atual de uma mensagem enviada anteriormente, usando seu identificador.
suspend fun checkStatus(client: SmsClient, messageId: String) { val status = client.getDeliveryStatus(messageId) println("Status da mensagem $messageId: ${status.status} (${status.description})")}Tratamento de erros e exceções
A biblioteca usa os mecanismos padrão do Kotlin para tratamento de erros. Todos os erros de rede
Também na biblioteca
Agendador de Tarefas Swift para iOS/macOS: EventKit e DispatchSource
Cliente OAuth para TypeScript: autorização via GitHub, Google e outros provedores
Cast para Go: guia completo com exemplos práticos
Geração de PDF em Kotlin: bibliotecas e ferramentas (iText, Apache PDFBox)
GraphQL em Kotlin: Visão geral das bibliotecas e ferramentas para desenvolvimento de servidor