Envío de SMS en Kotlin: API de la biblioteca sms-client-kotlin
Las aplicaciones móviles modernas y las soluciones de servidor a menudo requieren integración con puertas de enlace SMS para enviar notificaciones, confirmaciones o mensajes de marketing. Para el lenguaje Kotlin, existe una práctica biblioteca sms-client-kotlin que proporciona una API simple y tipada para trabajar con proveedores SMS populares. En este artículo, analizaremos en detalle su arquitectura, métodos y ejemplos de uso.
¿Qué es sms-client-kotlin?
La biblioteca sms-client-kotlin es un cliente HTTP ligero escrito en Kotlin puro utilizando corrutinas. Abstrae el trabajo con las API REST de varios proveedores SMS (por ejemplo, Twilio, Vonage, SMS-Center) y proporciona una interfaz unificada para enviar mensajes. Las principales ventajas son:
- Asincronía — todas las solicitudes se ejecutan a través de corrutinas de Kotlin.
- Seguridad de tipos — tipado estricto de los parámetros de solicitudes y respuestas.
- Modularidad — soporte para múltiples proveedores a través de la interfaz unificada
SmsSender. - Configuración sencilla — cantidad mínima de dependencias.
Instalación y configuración
Para agregar la biblioteca a tu proyecto, usa Gradle. Añade la dependencia en el archivo 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") // u otro motor}Después de sincronizar el proyecto, puedes crear una instancia del cliente. Ejemplo de inicialización para el proveedor 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)}Métodos principales de la API
La biblioteca proporciona varios métodos clave para enviar y gestionar SMS:
1. Envío de un solo mensaje
El método sendSms recibe el número del destinatario y el texto del mensaje. Devuelve un objeto SmsResult con información sobre el envío.
suspend fun sendSingleMessage(client: SmsClient) { val result = client.sendSms( to = "+79876543210", message = "¡Hola! Este es un mensaje de prueba desde Kotlin." )
when (result) { is SmsResult.Success -> println("¡Enviado! ID: ${result.messageId}") is SmsResult.Failure -> println("Error: ${result.errorMessage}") }}2. Envío por lotes
Para envíos masivos, usa el método sendBatch. Recibe una lista de destinatarios y un texto común (o mensajes individuales).
suspend fun sendBatch(client: SmsClient) { val recipients = listOf( BatchRecipient("+79111111111", "¡10% de descuento en tu primer pedido!"), BatchRecipient("+79222222222", "Tu código de confirmación: 1234") )
val batchResult = client.sendBatch(recipients) println("Enviados con éxito: ${batchResult.successCount}, errores: ${batchResult.failureCount}")}3. Verificación del estado de entrega
El método getDeliveryStatus permite obtener el estado actual de un mensaje enviado anteriormente mediante su identificador.
suspend fun checkStatus(client: SmsClient, messageId: String) { val status = client.getDeliveryStatus(messageId) println("Estado del mensaje $messageId: ${status.status} (${status.description})")}Manejo de errores y excepciones
La biblioteca utiliza los mecanismos estándar de Kotlin para el manejo de errores. Todos los errores de red
También en la biblioteca
Procesamiento de imágenes en Rust: resize y crop con image y imageproc
Monitoreo de aplicaciones Rust con la biblioteca tracing
Configuración de aplicaciones en Go: mejores prácticas y herramientas
Cliente Redis en Rust: guía completa para trabajar con la biblioteca redis-rs