2009-08-29 4 views
7

Я знаю, что есть много сторонних сайтов для отправки массовых SMS через интернет, но если бы я захотел создать их сам, как бы я это сделал? Я знаю, как создать шлюз SMS с помощью моего мобильного телефона, который очень медленный. Есть ли другой способ создания интернет-шлюза SMS?Как создать шлюз для SMS?

ответ

2

Хм ... В соответствии с вашим требованием вам понадобится GSM-модем. С помощью этого вы можете отправлять SMS-сообщения со стандартными AT-командами. Затем вам нужно разработать HTTP-сервер, который получает запрос, обрабатывать его и отправлять AT-команды на GSM-модем.

3

Вам необходимо поговорить с SMSC с протоколом SMPP. Вы также можете использовать Kannel, он предоставляет приятные функции для работы с различными типами SMSC, включая GSM-модемы, а также send-sms HTTP-сервис и многое другое.

6

Я разработал нечто подобное (хотя и для гораздо меньшего количества текстовых сообщений) для моего работодателя. Сервер Linux подключен к USB-интерфейсу Bluetooth для приема данных из встроенных сенсорных устройств в лаборатории и модем Siemens TC35 GSM через последовательный канал RS232. Сервер может отправлять сообщения выбранному рабочему телефону, если датчики определяют, что есть проблема, которая также обрабатывается программой на C++. Кроме того, есть приложение J2EE, которое позволяет сотрудникам вводить сообщения через веб-страницу, которые затем отправляются в виде текстовых сообщений выбранным сотрудникам. Приложение J2EE выгружает сообщения в базу данных, которые затем собираются программой C++ и отправляются с помощью команд AT через TC35. Это делается так, что сообщения о проблемах с датчиками всегда имеют приоритет.

Программирование мудрым было ничего особенного, поскольку команды AT понятны. Просто убедитесь, что ваше программирование безопасно, поэтому он не может быть захвачен спамером и что модем находится в комнате с хорошим покрытием GSM/3G и не находится в подвале.

О, и это также хорошая идея, чтобы ваша программа спросила GSM-модем о его частоте сигнала и другой информации базовой станции сотовой ячейки через регулярный интервал и сохранила это в специальной таблице базы данных. Это позволит вам выявить проблемы со своим провайдером сотовой связи и при необходимости перейти на другой. Я использовал эту информацию, чтобы обнаружить, что используемая базовая станция оказалась в автономном режиме или имела технические проблемы довольно часто, что привело к тому, что пропускная способность модемов снизилась до тонкой струйки.

Good Luck

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

Спасибо.

Смежные вопросы