Envío de SMS en Java: Cómo usar bibliotecas API para el envío de mensajes
El envío de mensajes SMS es una función muy demandada en aplicaciones web modernas, sistemas de autenticación (2FA), notificaciones y campañas de marketing. En Java se utilizan bibliotecas especializadas que interactúan con las APIs en la nube de los proveedores. En este artículo, veremos dos de las bibliotecas más populares: Twilio y Vonage (anteriormente Nexmo). Aprenderá cómo conectarlas, enviar su primer SMS y manejar posibles errores.
1. ¿Por qué se necesita una biblioteca separada para SMS?
Trabajar con SMS directamente a través de solicitudes HTTP es posible, pero incómodo. Las bibliotecas proporcionan:
- Clases listas para crear y enviar mensajes.
- Gestión de errores y reintentos en caso de fallos de red.
- Trabajo seguro con claves API y tokens.
- Soporte de funciones adicionales (estados de entrega, recepción de SMS entrantes).
2. Biblioteca Twilio para Java
Twilio es uno de los líderes del mercado. Su SDK (Software Development Kit) para Java es fácil de aprender y tiene una excelente documentación.
2.1 Conexión de dependencia (Maven)
Añada el siguiente bloque a su pom.xml:
<dependency> <groupId>com.twilio.sdk</groupId> <artifactId>twilio</artifactId> <version>9.14.1</version> <!-- Verifique la versión actual --></dependency>2.2 Envío de SMS a través de Twilio
Ejemplo de código para enviar un mensaje. Asegúrese de tener su Account SID y Auth Token de la consola de Twilio, así como un número de teléfono comprado.
import com.twilio.Twilio;import com.twilio.rest.api.v2010.account.Message;import com.twilio.type.PhoneNumber;
public class SmsSender { // Establezca sus credenciales public static final String ACCOUNT_SID = "SU_ACCOUNT_SID"; public static final String AUTH_TOKEN = "SU_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("+19876543210"), // Su número de Twilio "¡Hola desde Java y Twilio!" ).create();
System.out.println("SMS enviado. SID: " + message.getSid()); }}Importante: Los números de teléfono deben estar en formato internacional (comenzando con +).
3. Biblioteca Vonage (Nexmo) para Java
La API de SMS de Vonage es otra opción popular. Su biblioteca se llama nexmo-java o vonage-java-sdk.
3.1 Conexión de dependencia (Gradle)
implementation 'com.vonage:client:7.3.0'Para Maven:
<dependency> <groupId>com.vonage</groupId> <artifactId>client</artifactId> <version>7.3.0</version></dependency>3.2 Envío de SMS a través de Vonage
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 VonageSms { public static void main(String[] args) { VonageClient client = VonageClient.builder() .apiKey("SU_API_KEY") .apiSecret("SU_API_SECRET") .build();
TextMessage message = new TextMessage( "VonageAPI", // Remitente (hasta 11 caracteres) "+71234567890", // Destinatario "¡Mensaje de prueba desde Java y Vonage!" );
SmsSubmissionResponse response = clien