enviar-sms-desde-java-jonathanmelgoza

Enviar sms desde Java

En el articulo anterior explique mi necesidad de realizar una comunicación serial en java para realizar esto que hoy te presento, enviar sms desde Java. Hoy te muestro que necesitas y como hacer para enviar sms desde Java mediante un modem gsm, comandos AT y codigo Java, ya sea para tus aplicaciones de escritorio o aplicaciones web. Hoy en dia darle a tus aplicaciones la facultad de enviar sms es algo necesario para que tu aplicación deje de ser un simple programa y se convierte en un completo sistema, bases de datos, envío de mails y ahora.. envío de sms a todos tus usuarios, vamos ya!

Requisitos para enviar sms desde Java

Lo primero que necesitamos para darle a nuestras aplicaciones la facultad de enviar sms es un modem.

En este ejemplo utilizamos un modem ZTE MF180 con la red Telcel en México para el envio de mensajes, fácilmente puedes utilizar otro de tu conveniencia.

También necesitamos saber que el envíos de sms desde java mediante el modem ZTE conectado a nuestro pc se lleva a cabo con el envío de comandos AT al modem, mas adelante veremos algunos comandos AT básicos para el envío de sms.

Por ultimo necesitamos saber como enviar estos comandos a nuestro modem, si tienes problemas con esto puedes leerte mi anterior articulo donde te explico como realizar una comunicacion serial en java.

Nota: En caso de que cuentes con un modem igual al utilizado en este tutorial deberás conectarte al puerto com ZTE NMEA Device.

enviar-sms-desde-java-puertos-com

Comandos AT

El proceso para enviar sms desde java básicamente consisten en enviar una serie de comandos AT al modem mediante comunicación serial.

Básicamente necesitamos enviar..

Donde:

AT -> Saludamos al modem, util para saber si todo va bien.

OK -> Nos responde con un OK, podemos hablarle y nos entendera.

AT+CMGF=1 -> Le especificamos que enviaremos un sms modo texto.

OK -> Nos responde con un OK, ha entendido nuestro comando.

AT+CMGS=»+4420000000″ -> Especificamos el numero al que se enviara un sms.

> This message was delivery by sms in java. -> Escribimos el mensaje de texto a enviar.

Se ha enviado nuestro mensaje.

 

Aquí cabe mencionar que después de cada linea se debe enviar un enter, ya veremos como enviar esto en código, a excepción de la linea donde escribimos el mensaje de texto en donde no terminaremos la linea con un enter sino con un Ctrl+z, también veremos mas adelante como enviar esta combinación por código.

El código para enviar sms desde java mediante comandos AT es el siguiente:

el método writeData es un método con el que mandamos la información al modem conectado a nuestra pc, seria el output.write(text.getBytes()); de flujo (si seguiste mi articulo anterior de comunicación serial lo entenderás).

Los enter los realizamos mandando \r\n y la combinación Ctrl+Z para terminar de escribir el contenido del sms se envía con (char)26.

Lo que resta es crear una aplicación en torno a este proceso o incluir esta funcionalidad en tus aplicaciones java.

Mas adelante veremos como leer mensajes, borrar mensajes, etc, etc.. todo el control de nuestro modem en nuestras aplicaciones.

enviar-sms-desde-java-res1

¿Quieres aprender mas? Compra en amazon el libro Java Como Programar a un precio economico.

Enviar sms desde Java

Clic para valorar esta información
[Total: 0 Promedio: 0]

15 comentarios en “Enviar sms desde Java”

  1. Excelente tutorial, pero tengo una duda: ya funcionando mi aplicación a veces envío 2 – 3 sms y truena, con la misma configuración envío más de 100 y hasta entonces truena, me sale error 500 en la consola, leyendo un poco es el tiempo de espera entre comandos, ¿cuál sería el tiempo correcto de espera?

    Responder
  2. Hola Jonathan de desde ya muchas gracias por compartir tus conocimientos,,,, Tengo un problema. Tengo un arduino uno conectado au un sim800l, y quiero mandar sms por el serial de la ide de arduino y no logro hacerlo. El control +z no hace na y noencuentro la solución…
    si pudieras ayudarme te lo agradecería….
    saludos desde argentina

    Responder
    • Gracias a ti,

      Y realmente gracias a ti! Porque me he dado cuenta que tengo que actualizar el post pues he omitido la declaracion de algunas variables.

      Por cierto, trabajo en la segunda parte de este post.

      Saludos hasta Acachuen!

  3. Hola amigo saludos.
    Tengo una consulta. super el tutorial de antemano.
    Resulta que ahora se requiere leer los mensajes que lleguen a la linea conectada al modem desde luego.
    estoy usando los comandos
    AT+CMGR: Leer un mensaje SMS almacenado
    AT+CMGL: Listar los mensajes almacenados

    En resumen no logro extraer los mensajes no leidos. ninguno.

    Gracias

    Responder
  4. Hola Juan,

    Gracias por tu comentario, en cuanto a tu pregunta que me hiciste por email debo decirte que no he probado utilizar un celular como modem, aunque es totalmente posible, un modem como el que utilice cuesta alrededor de 20 dolares.

    Yo tambien recien trabaje en una empresa con envio masivos de sms (aunque en .net) y tambien contabamos con varios modems (diferentes a este que utilice .. mas caros tambien).

    Esto lo hago para una plataforma en la que trabajo y que contara con envios de sms como caracteristica.

    Saludos!

    Responder
    • Entiendo, que bueno Jonathan !!.

      Una consulta : Tuviste problemas con los firewall que utilizan las operadoras ?.
      Algunas operadoras usan firewalls que filtran todo y a veces no dejan pasar mensajes si no tienen un codigo de envio provisto por la operadora.

      En decir , este modo de implementacion te funciona para todas las operadoras ?

      saludos, gracias.

Deja un comentario