2011-01-08 6 views
9

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

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

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

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

+0

Для получения информации о том, как Эсме работает с SMSC и связываются и UNBIND операции вы можете проверить здесь http://blog.ektel.com .np/2012/01/sms-messages-between-esme-server-and-smsc-server/ Я надеюсь, что это поможет –

ответ

4

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

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

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

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

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

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

7

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

Итак, я бы ответил, что вам нужно постоянное соединение с SMSC.

0

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

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

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

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