I had to make a web application and based on certain business rules send SMS
them to clients notifying them of their movements, at that time when investigating I found several pages with apis
or services where you make a call sending them certain information and they send the SMS
, and charge you for SMS
.
So I started to think how I could do that service myself, thinking of paying for a plan with SMS
unlimited
I asked myself this question a few months ago and I found the solution and I want to share it with you.
If you can send SMS messages with your own app, you need the following:
GSM
orBanca Ancha Móvil
(installed withdrivers
)SMS
unlimited)GSM AT Command
In this way we can make our sending server
SMS
and thinking of sending many messages, obviously it is better for us to pay a rent forSMS
unlimited messages than to pay a fixed amount for each message.There are GSM Modems, Mobile Broadband (BAM), like the ones I show below:
bam
gsm
I did the test with this BAM:
I connected it to the computer with the chip (SIM card) of my cell phone company, installed the corresponding drivers and tried with the Telcel company's own app in this case.
Later I found a software made in c#, I explain it to you and share the link:
Download code from: SMS app c#
The application connects through a COM port to the modem
Trying to connect:
Once connected you can use the functions of the following tabs:
Send SMS
I show the code used to send the
SMS
btnSendSMS_Click
sendMsg
As shown in this line:
the modem receives
AT COMMANDS
or also known asConjunto de comandos Hayes
Read SMS
btnReadSMS_Click
ReadSMS
Delete SMS
btnDeleteSMS_Click
DeleteMsg
Attached is some information about the
AT COMMANDS
Comandos
AT Sirve para verificar si el módulo SIM900 está funcionando adecuadamente para entrar en modo comando. Al enviar AT el SIM deberá contestarnos con un OK.
AT+CGMI Veremos en nombre del fabricante
ATI Ver la información del producto.
AT+IPR=? Preguntar el Baud Rate en el que puede operar el SIM
AT+IPR? Sirve para preguntar el Baud Rate actual
AT+IPR=XXXX Configuremos a la frecuencia deseada
AT+COPS? Nombre de la compañía telefónica
AT+CGSN Visualizar el IMEI del chip utilizado
AT+CSCS? Tipo de texto
AT+CSCS=”XXX” Configurar a tipo de texto
AT+CMGF? Ver el formato de un mensaje, ya sea PDU(0) o SMS(1)”
AT+CMGS=04455XXXXXXXX Enviar un SMS Se despliega el símbolo mayor que > Escribir mensaje y al finalizar presiona Ctrl+Z retornará OK si el SMS se envió correctamente.
AT+CMGL=ALL Sirve para ver todos los mensajes que nos han llegado al SIM
ATD04455XXXXXXXX; Sirve para hacer una llamada a cualquier teléfono móvil
ATA Sirve para contestar una llamada
ATH Sirve para colgar una llamada
Sé que ya tienes una respuesta y que es muy completa, voy a poner una alternativa con la que no hace falta tampoco pagar a terceros, que no requiere de ningún hardware especial y que permite enviar SMS de forma totalmente gratuita... el principal inconveniente: no funciona en todos los países.
La idea es sencilla: usar los gateways que muchas compañías telefónicas tienen y que transforman emails a mensajes de texto SMS. Es decir, para enviar un mensaje de texto tan sólo tienes que mandar un email a la dirección asociada con el teléfono móvil del destinatario.
En Internet puedes encontrar listas con estos gateways y el modo en el que se formaría el email al que mandar el mensaje (p.e. éste es uno que utilicé hace unos años para desarrollar una aplicación que me permitiera mandar mensajes gratis a través de una tableta con webOS). Generalmente es algo como
[número_de_teléfono]@[proveedor_de_telefonía]
, aunque hay muchas excepciones.Por poner un ejemplo, si quieres enviar un SMS en Estados Unidos al número (ficticio) 123-456-7890 de T-Mobile, lo que harías sería mandar un email a [email protected] y la persona lo recibirá como SMS. Algo que en C# se podría hacer así:
Para continuar el ejemplo, he enviado un email a la dirección asociada con mi número de teléfono, con el asunto "Hola" y el cuerpo "Caracola" y a los pocos segundos he recibido el mensaje que se ve así (en iPhone):
Hasta aquí lo he puesto todo como muy bonito y muy sencillo... pero ahora vamos a ver los inconvenientes. Este sistema presenta dos problemas importantes:
Tienes que conocer el proveedor de telefonía del receptor. Esto es más complejo, pero hay alternativas para solventarlo:
Alternatively, you can use free APIs like SMS Gateway , which, including its library (in PHP), allows you to send messages with just a few lines of code (in addition to having other interesting services).