如何创建SMS网关?

时间:2009-08-29 15:59:30

标签: kannel bulksms

我知道有很多第三方网站通过互联网发送批量短信,但如果我想自己创建一个,我该怎么办呢?我知道如何使用我的手机创建一个短信网关,这非常慢。有没有其他方法来创建互联网短信网关?

4 个答案:

答案 0 :(得分:6)

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

编程方面没有什么特别之处,因为AT命令很容易理解。只需确保您的编程安全,这样就不会被垃圾邮件发送者劫持,并且调制解调器位于具有良好GSM / 3G覆盖范围且不在地下室的房间内。

哦,让你的程序定期向GSM调制解调器询问其信号强度和其他基站信息并将其存储在一个特殊的数据库表中也是一个好主意。这将允许您发现您的单元格提供程序的问题,并在需要时移动到另一个。我使用这些信息发现我使用的基站似乎正在脱机或经常出现技术问题导致我的调制解调器消息吞吐量减慢到涓涓细流。

祝你好运

答案 1 :(得分:3)

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

答案 2 :(得分: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;
        }
    }
}

感谢。

答案 3 :(得分:2)

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