Получение SMS через SMPP - PullRequest
9 голосов
/ 08 января 2011

У меня есть проект, в котором мне нужно отправлять и получать сообщения через определенного оператора мобильной связи, который предоставляет только интерфейс SMPP.Весь проект будет размещен на сайте.Я уже прочитал довольно много, но я еще не совсем понимаю, что на самом деле нужно с моей стороны для использования протокола.

Должно ли мое приложение поддерживать постоянное соединение с smpp?Могу ли я просто подключиться, отправить сообщение, а затем отключиться?

Принимаются ли сообщения на основе push или pull?

Спасибо за помощь.

Ответы [ 3 ]

8 голосов
/ 30 июня 2013

SMPP - это одноранговый протокол. Это должно означать, что для SMS-шлюза (ваша сторона) и SMSC (ваш оператор мобильной связи) необходимо установить правильное соединение / соединение. Даже когда нет никаких SMS или DLR для отправки / получения, существует непрерывный обмен PDU smpp (enquire_link / inquire-link_resp), который гарантирует, что связь установлена. Подробно, если вы отправляете PDU enquire_link и не получаете ответа (enquire_link_resp), привязка прерывается. Ваши смс не будут доставлены (останутся в очереди в вашем шлюзе), и вы не получите МО (входящие смс) или DLR (отчет о доставке). Чтобы восстановить соединение, вы должны заново установить соединение.

Итак, мой ответ: вам нужно постоянное соединение с SMSC.

4 голосов
/ 03 июня 2011

Вы заявляете, что хотите получать сообщения, в результате требуется по крайней мере bind_receiver. Поскольку вы не знаете, когда будут поступать сообщения, вам придется постоянно подключаться, а не отключаться после каждого события.

Что касается вашего вопроса о «толкать или тянуть», это зависит от того, как вы решите первую проблему. Если вы сможете создать решение, которое постоянно подключено, результатом будет толчок (оператор доставит его вам, как только получит сообщение). Если (по какой-то причине) вы не можете поддерживать постоянное соединение, вы в конечном итоге создадите механизм вытягивания. Вы будете подключаться к оператору каждые X секунд, чтобы увидеть, есть ли у него сообщение, ожидающее вас.

Мне нужно выделить 2 подводных камня:

  1. Ряд операторов в мире не хранят и даже не принимают сообщения, если вы не подключены, поэтому, в зависимости от того, с каким оператором вы взаимодействуете, вы можете быть вынуждены использовать непрерывное соединение.
  2. Большинство операторов не позволяют вам открывать и закрывать соединения в быстрой последовательности. После отключения вы не сможете повторно подключиться в течение периода времени X секунд.

Поэтому постоянное соединение - это действительно путь. Кроме того, вы можете обратиться к такой компании, как Nexmo, которая будет предоставлять вам HTTP-вызов при каждом получении сообщения.

Я не уверен, на каком языке вы разрабатываете свое приложение, но если вы используете какой-либо из популярных языков (Java, PHP, Perl), есть модули, которые обрабатывают базовые возможности подключения SMPP для вас. Быстрый поиск в Google по вашему языку и «Клиент SMPP» предоставит вам список ссылок.

0 голосов
/ 11 мая 2017

Возможно, было бы лучше использовать SMS-агрегатор, а не напрямую подключать вашего оператора мобильной связи.Затем вы можете легко подключиться к нему через HTTP API (выполнить URL-вызов для отправки SMS, получить обратный URL-адрес на ваш сервер для получения SMS-сообщений и отчетов о доставке).

С некоторыми изменениями (например, постоянное соединение и т. Д.) Вы можете достичь почти такой же производительности, как smpp.

Это хорошее начало для поиска агрегатора, который поддерживает вашего оператора: http://www.onehop.co/

...