SMS Java. Mandar SMS con Java

SMS masivo desde 2002

Altiria ofrece a los integradores facilidades para enviar SMS masivos con Java a través de un gateway o pasarela SMS API Java.

SMS Java API: Para mandar SMS con Java, es necesario leer la documentación técnica de envío de SMS, API SMS. El protocolo de comunicaciones más sencillo para implementar el envío de SMS con Java es el protocolo HTTP.

El siguiente código actualizado es un ejemplo ilustrativo de cómo enviar SMS con Java utilizando HttpClient 4.5. Si quieres conocer todos los detalles, consulta la especificación técnica SMS API.

package mypackage;

// Copyright (c) 2018, Altiria TIC SL
// All rights reserved.
// El uso de este código de ejemplo es solamente para mostrar el uso de la pasarela de envío de SMS de Altiria
// Para un uso personalizado del código, es necesario consultar la API de especificaciones técnicas, donde también podrás encontrar
// más ejemplos de programación en otros lenguajes de programación y otros protocolos (http, REST, web services)
// https://www.altiria.com/api-envio-sms/

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class HttpJavaAltiria {
public static void main(String[] args) {
				
//Se fija el tiempo máximo de espera para conectar con el servidor (5000)
//Se fija el tiempo máximo de espera de la respuesta del servidor (60000)
RequestConfig config = RequestConfig.custom()
 .setConnectTimeout(5000)
 .setSocketTimeout(60000)
 .build();
	
//Se inicia el objeto HTTP
HttpClientBuilder builder = HttpClientBuilder.create();
builder.setDefaultRequestConfig(config);
CloseableHttpClient httpClient = builder.build();
	
//Se fija la URL sobre la que enviar la petición POST
HttpPost post = new HttpPost("http://www.altiria.net/api/http");
	
//Se crea la lista de parámetros a enviar en la petición POST
List parametersList = new ArrayList ();
//XX, YY y ZZ se corresponden con los valores de identificación del
//usuario en el sistema.
parametersList.add(new BasicNameValuePair("cmd", "sendsms"));
parametersList.add(new BasicNameValuePair("domainId", "XX"));
parametersList.add(new BasicNameValuePair("login", "YY"));
parametersList.add(new BasicNameValuePair("passwd", "ZZ"));
parametersList.add(new BasicNameValuePair("dest", "346xxxxxxxx"));
parametersList.add(new BasicNameValuePair("dest", "346yyyyyyyy"));
parametersList.add(new BasicNameValuePair("msg", "Mesaje de prueba"));
//No es posible utilizar el remitente en América pero sí en España y Europa
//Descomentar la línea solo si se cuenta con un remitente autorizado por Altiria
//parametersList.add(new BasicNameValuePair("senderId", "remitente"));
	
try {
 //Se fija la codificacion de caracteres de la peticion POST
 post.setEntity(new UrlEncodedFormEntity(parametersList,"UTF-8"));
}
catch(UnsupportedEncodingException uex) {
 System.out.println("ERROR: codificación de caracteres no soportada");
}
	
CloseableHttpResponse response = null;
	
try {
 System.out.println("Enviando petición");
 //Se envía la petición
 response = httpClient.execute(post);
 //Se consigue la respuesta
 String resp = EntityUtils.toString(response.getEntity());
	    
 //Error en la respuesta del servidor
 if (response.getStatusLine().getStatusCode()!=200){
   System.out.println("ERROR: Código de error HTTP:  " + response.getStatusLine().getStatusCode());
   System.out.println("Compruebe que ha configurado correctamente la direccion/url ");
   System.out.println("suministrada por Altiria");
   return;
 }else {
   //Se procesa la respuesta capturada en la cadena 'response'
   if (resp.startsWith("ERROR")){
    System.out.println(resp);
    System.out.println("Código de error de Altiria. Compruebe las especificaciones");
   } else
    System.out.println(resp);
   }
 }
 catch (Exception e) {
   System.out.println("Excepción");
   e.printStackTrace();
   return;
 }
 finally {
    //En cualquier caso se cierra la conexión
    post.releaseConnection();
    if(response!=null) {
     try {
       response.close();
     }
     catch(IOException ioe) {
       System.out.println("ERROR cerrando recursos");
     }
    }
 }
}
}

Para realizar el envío de SMS con Java utilizando el protocolo HTTP es necesario seleccionar un cliente HTTP que facilite la utilización de este protocolo. Es muy importante configurar adecuadamente los timeouts y el charset de la petición HTTP para asegurar la calidad del código Java implementado. También es imprescindible realizar un procesado de la respuesta, para conocer si el envío de SMS se ha realizado correctamente o no.

Java es un lenguaje de programación muy utilizado en software de empresas. Integre el envío de SMS en su software Java para añadir la posibilidad de enviar un SMS a los usuarios registrados en una base de datos, de forma que se integre de manera natural con las funcionalidades propias de su software: enviar códigos de activación, notificaciones o alertas a tus clientes, informaciones de servicio.

Características adicionales del envío de SMS en Java

  • Sistema avanzado de control de crédito que realiza el aviso automático por email e impide quedarse sin créditos SMS de forma inesperada.
  • Informes automáticos de envío de SMS, que permiten mantener un control periódico de los envíos de SMS en Java.
  • Posibilidad de reenvío de SMS pendientes por falta de crédito. Si realizó un envío de SMS mediante Java y no disponía de créditos SMS suficientes, los mensajes se quedan encolados en nuestros sistemas hasta que disponga de crédito, de forma que no necesita repetir el envío.