2009-08-29 3 views
7

인터넷을 통해 대량 SMS를 보내는 제 3 자 사이트가 많이 있다는 것을 알고 있습니다.하지만 제가 직접 만들어보고 싶다면 어떻게해야합니까? 매우 느린 휴대폰을 사용하여 SMS 게이트웨이를 만드는 방법을 알고 있습니다. 인터넷 SMS 게이트웨이를 만드는 다른 방법이 있습니까?SMS 게이트웨이를 만드는 방법은 무엇입니까?

답변

2

음 ... 귀하의 요구 사항에 따라 GSM 모뎀이 필요합니다. 이를 사용하여 표준 AT 명령으로 SMS 메시지를 보낼 수 있습니다. 그런 다음 요청을 받고, 처리하고, AT 명령을 GSM 모뎀에 보내는 HTTP 서버를 개발해야합니다.

3

SMPP 프로토콜을 사용하여 SMSC와 상담해야합니다. 또한 Kannel을 사용할 수도 있습니다. 이것은 GSM 모뎀을 포함한 다양한 종류의 SMSC 및 send-sms HTTP 서비스 등에서 사용할 수있는 좋은 기능을 제공합니다.

6

내 고용주에게 비슷한 텍스트 메시지를 디자인했습니다. Linux 서버는 실험실의 임베디드 센서 장치에서 데이터를 수신하기 위해 Bluetooth USB 동글에 연결되고 RS232 직렬 링크를 통해 Siemens TC35 GSM 모뎀에 연결됩니다. 센서가 C++ 프로그램에서도 처리되는 문제가 있다고 판단하면 서버는 선택된 직원 전화기로 메시지를 보낼 수 있습니다. 또한 직원들이 웹 페이지를 통해 메시지를 입력 할 수있게 해주는 J2EE 응용 프로그램이 있으며,이 메시지는 선택한 직원에게 문자 메시지로 전송됩니다. J2EE 응용 프로그램은 메시지를 데이터베이스에 덤프 한 다음 C++ 프로그램에서 수집하고 TC35를 통해 AT 명령을 사용하여 보냅니다. 이 방법으로 센서 문제 메시지가 항상 우선 순위를 갖습니다.

현명한 프로그래밍은 이해하기 쉽도록 AT과 같이 특별한 것이 아닙니다. 프로그래밍이 안전한지 확인하여 스팸 발송자가 도용 할 수 없으며 모뎀이 GSM/3G 서비스가 가능한 실내에 있으며 지하에는 없습니다.

아, 프로그램이 신호 강도와 다른 셀 기지국 정보를 주기적으로 GSM 모뎀에 요청하고 이것을 특수 데이터베이스 테이블에 저장하는 것도 좋은 생각입니다. 이렇게하면 셀 제공 업체의 문제를 파악하고 필요한 경우 다른 셀로 이동할 수 있습니다. 이 정보를 사용하여 내가 사용하고있는 기지국이 오프라인 상태이거나 기술 문제가 자주 발생하여 모뎀 메시지 처리량이 느려지는 것으로 나타났습니다.

행운

3

이 두 가지 방법 1) GSM 모뎀 2) HTTP (서비스 제공) (모뎀보다 더 빠른)

내가 사용하고 http://www.ozekisms.com/ 게이트웨이 서비스에서 수행 할 수

C# 코드 Http Request를 보내고 사용자 이름과 암호 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; 
     } 
    } 
} 

감사합니다.