2009-08-29 19 views
7

Sé que hay muchos sitios de terceros para enviar SMS a granel a través de Internet, pero si quisiera crear uno, ¿cómo lo haría? Sé cómo crear una puerta de enlace SMS usando mi teléfono móvil, que es muy lento. ¿Hay alguna otra forma de crear una puerta de enlace de SMS de Internet?¿Cómo crear una puerta de enlace SMS?

Respuesta

2

Hmm ... De acuerdo con su requisito, necesitará un módem GSM. Con eso, puede enviar mensajes SMS con comandos AT estándar. Luego debe desarrollar un servidor HTTP que reciba la solicitud, procesarla y enviar los comandos AT al módem GSM.

3

Deberá hablar con un SMSC con un protocolo SMPP. También puede usar Kannel, proporciona buenas funciones para trabajar con diferentes tipos de SMSC, incluidos los módems GSM, así como el servicio HTTP send-sms y más.

6

He diseñado algo similar (aunque para muchos menos mensajes de texto) para mi empleador. Un servidor Linux está conectado a un dongle USB Bluetooth para recibir datos de dispositivos de sensores integrados en el laboratorio y un módem Siemens TC35 GSM a través de un enlace en serie RS232. El servidor puede enviar mensajes al teléfono de los empleados seleccionados si los sensores determinan que hay un problema que también es manejado por un programa C++. Además, hay una aplicación J2EE que permite a los empleados ingresar mensajes a través de una página web que luego se envían como mensajes de texto a los empleados que seleccionan. La aplicación J2EE descarga los mensajes en una base de datos que luego son recopilados por el programa C++ y enviados mediante los comandos AT a través del TC35. Se hace de esta manera para que los mensajes con problemas del sensor siempre tengan prioridad.

La programación no fue nada especial ya que los comandos AT son fáciles de entender. Solo asegúrese de que su programación sea segura para que no pueda ser secuestrada por un spammer y que el módem esté ubicado en una habitación con buena cobertura GSM/3G y no esté en un sótano.

Ah, y también es una buena idea hacer que su programa solicite al módem GSM la información sobre la intensidad de la señal y otras estaciones base de la célula en un intervalo regular y almacenar esto en una tabla de base de datos especial. Esto le permitirá detectar problemas con su proveedor de celular y pasar a otro si es necesario. Utilicé esta información para descubrir que la estación base que estaba usando parecía estar desconectada o que tenía problemas técnicos con bastante frecuencia, lo que hizo que el rendimiento de mis mensajes de los módems se redujera a un goteo.

buena suerte

3

se puede hacer de dos maneras 1) módem GSM 2) HTTP (proveedor de servicios) (Más rápido que el módem)

he utilizado http://www.ozekisms.com/ pasarela de servicio

C# Código para enviar Http Request y cómo agregar Nombre de usuario y contraseña Dirección IP y Puerto.

Consulte este Código Espero que le ayude.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using SMSClient; 

namespace SMSDemoConsole 
{ 
    class Program 
    { 
     private static void WriteEvent(String myEvent) 
     { 
      Console.WriteLine(myEvent); 
     } 

     #region Events 
     static void mySMSClient_OnMessageReceived(object sender, DeliveryEventArgs e) 
     { 
      WriteEvent(DateTime.Now.ToString() + " " + "Message received. Sender address: " + e.Senderaddress + " Message text: " + e.Messagedata + "\r\n"); 
     } 

     static void mySMSClient_OnMessageDeliveryError(object sender, DeliveryErrorEventArgs e) 
     { 
      WriteEvent(DateTime.Now.ToString() + " " + "Message could not be delivered. ID: " + e.Messageid + " Error message: " + e.ErrorMessage + "\r\n"); 
     } 

     static void mySMSClient_OnMessageDeliveredToHandset(object sender, DeliveryEventArgs e) 
     { 
      WriteEvent(DateTime.Now.ToString() + " " + "Message delivered to handset. ID: " + e.Messageid + "\r\n"); 
     } 

     static void mySMSClient_OnMessageDeliveredToNetwork(object sender, DeliveryEventArgs e) 
     { 
      WriteEvent(DateTime.Now.ToString() + " " + "Message delivered to network. ID: " + e.Messageid + "\r\n"); 
     } 

     static void mySMSClient_OnMessageAcceptedForDelivery(object sender, DeliveryEventArgs e) 
     { 
      WriteEvent(DateTime.Now.ToString() + " " + "Message accepted for delivery. ID: " + e.Messageid + "\r\n"); 
     } 

     static void mySMSClient_OnClientConnectionError(object sender, ErrorEventArgs e) 
     { 
      WriteEvent(DateTime.Now.ToString() + " " + e.ErrorMessage + "\r\n"); 
     } 

     static void mySMSClient_OnClientDisconnected(object sender, EventArgs e) 
     { 
      WriteEvent(DateTime.Now.ToString() + " Disconnected from the SMS gateway " + "\r\n"); 
     } 

     static void mySMSClient_OnClientConnected(object sender, EventArgs e) 
     { 
      WriteEvent(DateTime.Now.ToString() + " Successfully connected to the SMS gateway " + "\r\n"); 
     } 
     #endregion 

     static void Main(string[] args) 
     { 
      ozSMSClient mySMSClient = new ozSMSClient(); 
      mySMSClient.OnClientConnected += new SimpleEventHandler(mySMSClient_OnClientConnected); 
      mySMSClient.OnClientDisconnected += new SimpleEventHandler(mySMSClient_OnClientDisconnected); 
      mySMSClient.OnClientConnectionError += new ErrorEventHandler(mySMSClient_OnClientConnectionError); 
      mySMSClient.OnMessageAcceptedForDelivery += new DeliveryEventHandler(mySMSClient_OnMessageAcceptedForDelivery); 
      mySMSClient.OnMessageDeliveredToNetwork += new DeliveryEventHandler(mySMSClient_OnMessageDeliveredToNetwork); 
      mySMSClient.OnMessageDeliveredToHandset += new DeliveryEventHandler(mySMSClient_OnMessageDeliveredToHandset); 
      mySMSClient.OnMessageDeliveryError += new DeliveryErrorEventHandler(mySMSClient_OnMessageDeliveryError); 
      mySMSClient.OnMessageReceived += new DeliveryEventHandler(mySMSClient_OnMessageReceived); 

      mySMSClient.Username = "admin"; 
      mySMSClient.Password = "abc123"; 
      mySMSClient.Host = "127.0.0.1"; 
      mySMSClient.Port = 9500; 

      mySMSClient.Connected = true; 

      mySMSClient.sendMessage("+44987654", "TEST", "vp=" + DateTime.Now + "&ttt=werwerwe rewwe34232 1"); 


      Console.ReadKey(); 
      mySMSClient.Connected = false; 
     } 
    } 
} 

Gracias.

Cuestiones relacionadas