2009-08-29 69 views
7

我知道有很多第三方网站可以通过互联网发送群发短信,但如果我想自己创建一个,我该怎么办?我知道如何使用我的手机创建短信网关,这很慢。是否有任何其他方式创建互联网短信网关?如何创建SMS网关?

回答

2

嗯......根据您的要求,您将需要一个GSM调制解调器。使用该功能,您可以使用标准AT命令发送SMS消息。然后,您需要开发一个HTTP服务器来获取请求,处理它并将AT命令发送到GSM调制解调器。

3

您需要使用SMPP协议与SMSC通话。您还可以使用Kannel,它提供了很好的功能,可以使用不同类型的SMSC,包括GSM调制解调器以及send-sms HTTP服务等。

6

我为我的雇主设计了类似的东西(虽然文本信息少得多)。一台Linux服务器连接到一个蓝牙USB适配器,用于从实验室的嵌入式传感器设备和一个通过RS232串行链路的西门子TC35 GSM调制解调器接收数据。如果传感器确定存在由C++程序处理的问题,则服务器可以将消息发送给选定的员工电话。此外,还有一个J2EE应用程序,允许员工通过网页输入消息,然后将其作为文本消息发送给他们选择的员工。 J2EE应用程序将消息转储到数据库中,然后由C++程序收集并通过TC35使用AT命令发送。这样做是为了使传感器问题信息始终具有优先权。

编程明智,它没什么特别的,因为AT命令很容易理解。只要确保您的节目安全,不会被垃圾邮件发送者劫持,并且调制解调器位于具有良好GSM/3G覆盖的房间内,且不在地下室。

哦,它也是一个好主意,让您的程序定期询问GSM调制解调器的信号强度和其他小区基站信息,并将其存储在特殊的数据库表中。这将允许您发现您的手机提供商的问题,并在需要时移至另一个问题。我使用这些信息发现我使用的基站似乎正在脱机或者经常遇到技术问题,这导致我的调制解调器消息吞吐量放慢速度。

好运

3

它可以以两种方式1)GSM调制解调器 2)HTTP(服务提供商)(比调制解调器快)

我用http://www.ozekisms.com/网关服务来完成

C#代码发送Http请求以及如何添加用户名和密码IP地址和端口。

请参阅本代码希望能帮助你。

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

谢谢。