2009-08-29 22 views
7

So che ci sono molti siti di terze parti per inviare SMS di massa via Internet, ma se volessi crearne uno io stesso, come dovrei farlo? So come creare un gateway SMS usando il mio telefono cellulare, che è molto lento. C'è un altro modo per creare un gateway Internet SMS?Come creare un gateway SMS?

risposta

2

Hmm ... Secondo il vostro requisito avrete bisogno di un modem GSM. Usando questo è possibile inviare messaggi SMS con comandi AT standard. Quindi è necessario sviluppare un server HTTP che riceve la richiesta, elaborarla e inviare i comandi AT al modem GSM.

3

Avrete bisogno di parlare con un SMSC con un protocollo SMPP. È inoltre possibile utilizzare Kannel, fornisce funzionalità utili per lavorare con diversi tipi di SMSC compresi i modem GSM, nonché il servizio HTTP send-sms e altro.

6

Ho progettato qualcosa di simile (anche se per messaggi di testo molto meno) per il mio datore di lavoro. Un server Linux è collegato a un dongle USB Bluetooth per la ricezione di dati da dispositivi sensori incorporati in laboratorio e un modem GSM TC35 Siemens tramite un collegamento seriale RS232. Il server può inviare messaggi ai dipendenti selezionati telefonicamente se i sensori determinano che c'è un problema che viene gestito anche da un programma C++. Inoltre, esiste un'app J2EE che consente ai dipendenti di inserire messaggi tramite una pagina Web che vengono poi inviati come messaggi di testo ai dipendenti selezionati. L'app J2EE scarica i messaggi in un database che vengono poi raccolti dal programma C++ e inviati utilizzando i comandi AT tramite il TC35. In questo modo, i messaggi relativi ai problemi dei sensori hanno sempre la priorità.

Per quanto riguarda la programmazione, non era niente di speciale dato che i comandi AT sono facili da capire. Assicurati che la tua programmazione sia sicura, quindi non può essere dirottata da uno spammer e che il modem si trova in una stanza con una buona copertura GSM/3G e non si trova in una cantina.

Oh ed è anche una buona idea far sì che il programma chieda al modem GSM la potenza del segnale e le altre informazioni sulla stazione base delle celle a intervalli regolari e memorizzarlo in una tabella di database speciale. Questo ti permetterà di individuare problemi con il tuo fornitore di cellulari e trasferirti su un altro, se necessario. Ho usato queste informazioni per scoprire che la stazione base che stavo usando sembrava non essere in linea o avere problemi tecnici abbastanza frequenti che hanno causato un rallentamento del flusso dei messaggi del mio modem fino a un certo punto.

Good Luck

3

può essere fatto in due modi 1) modem GSM 2) http (fornitore di servizi) (più veloce di Modem)

ho usato http://www.ozekisms.com/ Servizio gateway

codice C# per inviare Richiesta HTTP e come aggiungere Nome utente e Password Indirizzo IP e Porta.

Consultare questo Codice. La speranza ti aiuterà.

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; 
     } 
    } 
} 

Grazie.