8

インターネット経由でバルクSMSを送信するサードパーティのサイトがたくさんあることは知っていますが、自分で作成したい場合はどうすればよいですか?携帯電話を使ってSMSゲートウェイを作成する方法を知っていますが、これは非常に遅いです。インターネットSMSゲートウェイを作成する他の方法はありますか?

4

4 に答える 4

6

私は自分の雇用主のために似たようなものをデザインしました (テキストメッセージははるかに少ないですが)。Linux サーバーは、ラボ内の組み込みセンサー デバイスからデータを受信するための Bluetooth USB ドングルと、RS232 シリアル リンクを介した Siemens TC35 GSM モデムに接続されています。サーバーは、C++ プログラムによっても処理される問題があるとセンサーが判断した場合、選択した従業員の電話にメッセージを送信できます。さらに、従業員が Web ページを介してメッセージを入力し、選択した従業員にテキスト メッセージとして送信できるようにする J2EE アプリがあります。J2EE アプリはメッセージをデータベースにダンプし、C++ プログラムによって収集され、ATコマンドを使用して TC35 経由で送信されます。このように行われるため、センサーの問題メッセージが常に優先されます。

ATコマンドは理解しやすいので、プログラミングに関しては特別なことではありませんでした。スパマーにハイジャックされないように、プログラミングが安全であることと、モデムが GSM/3G カバレッジの良好な部屋にあり、地下室にないことを確認してください。

また、プログラムで GSM モデムに定期的に信号強度やその他のセル基地局情報を要求し、これを特別なデータベース テーブルに格納することもお勧めします。これにより、セルプロバイダーの問題を特定し、必要に応じて別のプロバイダーに移動できます. この情報を使用して、使用している基地局がオフラインになっているように見えるか、技術的な問題が頻繁に発生しており、モデムのメッセージ スループットが少しずつ低下していることを発見しました。

幸運を

于 2010-02-25T11:02:20.773 に答える
4

2 つの方法で実行できます 1) GSM モデム 2) http (サービス プロバイダー) (モデムよりも高速)

http://www.ozekisms.com/ゲートウェイ サービスを使用しました

Http リクエストを送信する C# コードと、ユーザー名とパスワードの 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;
        }
    }
}

ありがとう。

于 2012-04-21T12:34:44.197 に答える
3

SMPPプロトコルを使用してSMSCと通信する必要があります。Kannelを使用することもできます。これは、GSMモデムsend-smsやHTTPサービスなど、さまざまなタイプのSMSCと連携するための優れた機能を提供します。

于 2009-08-29T16:08:17.847 に答える
2

うーん...あなたの要件に応じて、GSMモデムが必要になります。これを使用すると、標準のATコマンドでSMSメッセージを送信できます。次に、要求を取得して処理し、ATコマンドをGSMモデムに送信するHTTPサーバーを開発する必要があります。

于 2009-08-29T16:03:10.603 に答える