Envío de SMS en Java: resumen de bibliotecas API y ejemplos de integración
El envío de mensajes SMS sigue siendo una función demandada para muchas aplicaciones Java modernas: desde la autenticación de dos factores y notificaciones hasta campañas de marketing. En este artículo, revisaremos las principales formas de integrar la funcionalidad SMS en proyectos Java, incluyendo el uso de API en la nube populares (Twilio, Nexmo) y la interacción directa con una pasarela SMS. Aprenderá cómo conectar la biblioteca, configurar el cliente y enviar el primer mensaje.
1. ¿Por qué usar bibliotecas API para enviar SMS?
Trabajar manualmente con el protocolo SMPP o la conexión directa a un módem GSM requiere un conocimiento profundo de telecomunicaciones y a menudo genera problemas de confiabilidad. Las bibliotecas listas para usar resuelven estos problemas "de fábrica":
- Facilidad de integración — basta con agregar la dependencia en Maven/Gradle.
- Confiabilidad — los proveedores garantizan la entrega y proporcionan monitoreo.
- Soporte Unicode — los caracteres cirílicos y especiales se manejan automáticamente.
- Estados de entrega — siempre sabe si el mensaje fue recibido.
- Escalabilidad — los servicios en la nube manejan miles de solicitudes por segundo.
2. Twilio: la biblioteca más popular para SMS
Twilio es el estándar de facto para enviar SMS y mensajes de voz. El SDK de Java permite integrar la funcionalidad en cuestión de minutos.
2.1. Conexión
Agregue la dependencia en pom.xml (Maven):
<dependency> <groupId>com.twilio.sdk</groupId> <artifactId>twilio</artifactId> <version>9.10.0</version></dependency>2.2. Envío de un SMS simple
import com.twilio.Twilio;import com.twilio.rest.api.v2010.account.Message;import com.twilio.type.PhoneNumber;
public class SmsSender { public static final String ACCOUNT_SID = "your_account_sid"; public static final String AUTH_TOKEN = "your_auth_token";
public static void main(String[] args) { Twilio.init(ACCOUNT_SID, AUTH_TOKEN); Message message = Message.creator( new PhoneNumber("+71234567890"), // número del destinatario new PhoneNumber("+79876543210"), // número del remitente (de Twilio) "¡Hola! Este es un SMS de prueba desde una aplicación Java.") .create();
System.out.println("SMS enviado. SID: " + message.getSid()); }}Importante: los números deben estar en formato internacional (E.164).
Costo: Twilio cobra por cada mensaje (aproximadamente $0.0079 para Rusia). Hay un saldo de prueba gratuito.
3. Nexmo (Vonage): alternativa con tarifas flexibles
Nexmo (ahora parte de Vonage) también ofrece un SDK de Java. La biblioteca se caracteriza por una sintaxis simple y buen soporte para caracteres cirílicos.
3.1. Conexión
<dependency> <groupId>com.vonage</groupId> <artifactId>server-sdk</artifactId> <version>6.5.0</version></dependency>3.2. Ejemplo de envío
import com.vonage.client.VonageClient;import com.vonage.client.sms.MessageStatus;import com.vonage.client.sms.SmsSubmissionResponse;import com.vonage.client.sms.messages.TextMessage;
public class NexmoSms { public static void main(String[] args) { VonageClient client = VonageClient.builder() .apiKey("your_api_key") .apiSecret("your_api_secret") .build();
TextMessage message = new TextMessage( "Vonage APIs", "71234567890", "Prueba SMS de Nexmo en Java" );
SmsSubmissionResponse response = client.getSmsClient().submitMessage(message); if (response.g También en la biblioteca
Monitoreo de aplicaciones C++: bibliotecas y herramientas para la recopilación de métricas
Las mejores bibliotecas de logging para Go (Golang): revisión y comparativa
Media3 / ExoPlayer para Kotlin: guía completa con ejemplos
Internacionalización (i18n) en C# (.NET): guía completa