СПОСОБ ВЗАИМОДЕЙСТВИЯ СИСТЕМЫ КОНТЕНТ-ПРОВАЙДЕРА С АГРЕГАТОРОМ ДЛЯ ПАКЕТНОЙ ПЕРЕДАЧИ SMS-СООБЩЕНИЙ
METHOD FOR INTERACTION OF CONTENT PROVIDER SYSTEM WITH SMS MESSAGE PACKET TRANSMISSION AGGREGATOR

Изобретение относится к системам передачи и воспроизведения SMS-сообщений по сети мобильной связи, в частности к протоколам взаимодействия систем контент-провайдеров с агрегатором, и может быть использовано для пакетной передачи SMS-сообщений с использованием TLV-протокола.
Известен способ предоставления абонентам сотовой подвижной связи СПС неголосовых Premium Rate услуг, включающий следующие этапы: a) использование сети СПС для передачи запроса и услуги b) передачу запроса абонента провайдеру услуг для затребования услуги, c) выдачу затребованной услуги абоненту, d) тарификацию затребованной услуги по цене, заявленной провайдером услуг, отдельно от стандартных тарифов операторов сетей СПС, при этом услуги также предоставляются абонентам сетей СПС других Операторов, с которыми у данного Оператора заключено Роуминговое соглашение, и дополнительно используют систему, содержащую блок анализа абонентских запросов, с помощью которого производят прием и первичный анализ запросов, основной блок сервисной логики, с помощью которого идентифицируют услугу, конвертируют абонентский запрос в формат провайдера услуги и контролируют предоставление услуги, блок тарификации, с помощью которого тарифицируют услугу, формируют данные, содержащие, по меньшей мере, код запроса услуги, время предоставления услуги и номер телефона абонента, запрос формируют путем клавиатурного ввода с мобильного терминала, причем выбирают формат запроса, который интерпретируется сетью СПС либо как набор голосового номера, либо как передача текстового фрагмента определенному внешнему приложению (патент РФ №2336654, МПК H04M 15/00, опубл. 20.10.2008).
Наиболее близким является способ взаимодействия конечного клиента с SMS-сервером (SMSC) для передачи SMS и USSD сообщений с использованием протокола Short message peer-to-peer protocol (SMPP). Способ базируется на обмене пакетов данных протокола PDU (protocol data units), передаваемых на уровне 4 OSI (TCP/IP сессии или Х.25 SVC3). PDU имеют бинарное представление для повышения эффективности передачи. Обмен пакетами может происходить как синхронно, т.е. после отправки запроса дальнейший обмен пакетами приостанавливается до получения ответа, так и асинхронно, т.е. запросы отправляются без задержек, обработка ответов происходит по мере их поступления.
Известный способ взаимодействия конечного клиента с SMS-сервером (SMSC) с использованием протокола SMPP является открытым стандартом и его описание можно найти в открытых источниках: http://smsforum.net/.
Недостатком способов является то, что передача осуществляется только на уровне единичных SMS-сообщений. При этом каждое сообщение должно подтверждаться удаленной стороной.
Это означает, что если контент-провайдер отсылает 500 SMS-сообщений, то контент-провайдер должен сформировать 500 уникальных сообщений протокола (PDU-Protocol Data Unit). Удаленная сторона должна их принять, обработать, сформировать для каждого PDU уникальное подтверждение и отослать все подтверждения. При этом контент-провайдер отдельно обрабатывает все уникальные подтверждения, чтобы выяснить, на какие PDU удаленная сторона подтверждений не прислала, при этом есть вероятность потери и дублирования данных.
Все это создает высокую нагрузку на программный модуль, который занимается обслуживанием SMPP-канала, из-за чего способ не обеспечивает скорости передачи сообщений в протоколе SMPP больше 400 SMS-сообщений в секунду.
Другим недостатком известного способа с использованием SMPP протокола является наличие у каждого оператора различных собственных расширений SMPP, поэтому формируется минимально необходимый набор различных специфических значений, в первую очередь - тип данных в SMS-сообщениях. Все агрегаторы будут поддерживать эти значения унифицировано и самостоятельно заниматься корректным отображением специализированного протокола в собственное подмножество SMPP.
Техническая задача, на решение которой направлено заявляемое изобретение, заключается в обеспечении высокой производительности при взаимодействии с агрегатором при отправке большого количества SMS-сообщений по сети мобильной связи, а также надежности и безопасности отправки и принятия пакетов SMS-сообщений.
Поставленная техническая задача решается тем, что в способе взаимодействия системы контент-провайдера с агрегатором для пакетной передачи SMS-сообщений, заключающийся в формировании, передаче сообщения и получении ответного подтверждающего сообщения, согласно заявляемому изобретению, формируют пакет SMS-сообщений и осуществляют передачу пакета SMS-сообщений с использованием TLV-протокола, где TLV-протокол (Tag, Length, Value) это способ двоичного представления информационного блока в виде трех полей: идентификатора информационного блока (Tag), который является уникальным и позволяет однозначно определить, какие данные содержатся в информационном блоке, значения (Value) - двоичного представления информационного блока, значения (Length) - количество байт в поле Value, пакет исходящих SMS-сообщений формируют в блоке контент-провайдера, присваивают ему уникальный идентификатор, адрес отправки и адрес приема и осуществляют доставку в блок агрегатора, повторяя ее до получения из блока агрегатора ответного сообщения, подтверждающего доставку и содержащего адрес отправки, адрес приема и уникальный идентификатор принятого сообщения, из блока агрегатора высылают в блок оператора исходящее сообщение с пакетом SMS-сообщений, предназначенное для абонента, в блоке оператора формируют и отправляют в блок агрегатора отчет о доставке SMS-сообщения для абонента, при получении ответного подтверждающего сообщения из блока оператора в блоке агрегатора формируют ответное сообщение оператору в виде уведомления о получении отчета о доставке SMS-сообщения до абонента и одновременно формируют и передают в блок контент-провайдеру сообщение с результатами отправки оператору пакета исходящих SMS-сообщений, которому присваивают уникальный идентификатор, адрес отправки и адрес приема, передачу осуществляют до подтверждения доставки этого сообщения контент-провайдером в виде уведомления о получении пакета с результатами доставки SMS-сообщений до абонента, которое содержит соответствующий уникальный идентификатор сообщения с результатами отправки оператору пакета исходящих SMS-сообщений, для передачи входящих SMS-сообщений от абонента SMS-центра в блок контент-провайдера в блоке агрегатора формируют пакет из входящих от абонентов SMS-сообщений, присваивают сообщению в виде пакета SMS-сообщений уникальный идентификатор, адрес отправки и адрес приема и осуществляют доставку в блок контент-провайдера, доставку повторяют до момента подтверждения его получения контент провайдером в виде ответного сообщения, содержащего тот же уникальный идентификатор.
Кроме того, в блоке контент-провайдера формируют пакет исходящих SMS-сообщений в виде сообщения «outgoing_package», сообщению «outgoing_package» присваивают уникальный идентификатор, адрес отправки и адрес приема, осуществляют доставку в блок агрегатора до получения из блока агрегатора ответного сообщения о получении пакета исходящих SMS-сообщений в виде сообщения «outgoing_package_ack», содержащего адрес отправки, адрес приема и уникальный идентификатор принятого сообщения «outgoing_package».
Кроме того, из блока агрегатора высылают в блок оператора исходящее сообщение пакетом SMS-сообщений предназначенное для абонента в виде запроса «submit_sm», в блоке оператора формируют и отправляют в блок агрегатора отчет о доставке SMS-сообщения для абонента в виде, сообщения «submit_sm_resp».
Кроме того, в блоке агрегатора формируют и передают в блок контент-провайдеру сообщение с результатами отправки оператору пакета исходящих SMS-сообщений в виде «send_result_package», которому присваивают уникальный идентификатор, адрес отправки и адрес приема, передачу осуществляют до подтверждения доставки этого сообщения контент-провайдером в виде уведомления о получении пакета с результатами доставки SMS-сообщений до абонента в виде сообщения «send_result_package_ack», которое содержит соответствующий уникальный идентификатор сообщения «send_result_package».
Кроме того, в блоке оператора формируют и отправляют в блок агрегатора отчет о доставке SMS-сообщения до абонента в виде сообщения «delivery_sm_DR», после получения которого в блоке агрегатора формируют ответное сообщение в виде уведомления о получении отчета о доставке SMS-сообщения до абонента в виде сообщения «delivery_sm_resp_DR».
Кроме того, в блоке агрегатора формируют сообщение о результатах доставки SMS абоненту в виде пакета с результатами доставки SMS-сообщений до абонента в виде сообщения «delivery_receipt_package», содержащего адрес отправки, адрес приема и уникальный идентификатор, при этом из блока агрегатора повторяют доставку сообщения вида «delivery_receipt_package» в блок контент-провайдера до подтверждения получения в виде сообщения «delivery_receipt_package_ack», которое содержится уникальный идентификатор соответствующего сообщения «delivery_receipt_package».
Кроме того, для передачи входящих SMS-сообщений от абонента SMS-центра в блок контент-провайдера в блоке агрегатора формируют пакет из входящих от абонентов SMS-сообщений в виде сообщения «incommg_package», присваивают сообщению «incoming_package» уникальный идентификатор, адрес отправки и адрес приема и осуществляют доставку в блок контент-провайдера, доставку повторяют до момента подтверждения его получения контент провайдером в виде ответного сообщения «incoming_package_ack», содержащего тот же уникальный идентификатор.
Кроме того, осуществляют проверку работоспособности канала связи путем формирования в блоке агрегатора либо в блоке контент-провайдера сообщения «ping», которое периодически отправляют при отсутствии пакетов передачи для определения состояния канала связи, при этом каждому сообщению «ping» присваивают уникальный идентификатор, и на каждое полученное сообщение вида «ping» отсылают ответное сообщение в виде «ping_ack», которое включает уникальный идентификатор из соответствующего запросного сообщения вида «ping».
Техническим результатом является повышение скорости передачи при рассылке большого количества SMS-сообщений по сети мобильной связи, за счет того, что множество SMS-сообщений отсылаются одним пакетом, при получении которого агрегатор будет обрабатывать один PDU (Protocol Description Unit) (одно сообщение протокола) и отсылать одно подтверждение, что обеспечивает высокую производительность, надежность и безопасность отправки и принятия пакетов SMS-сообщений.
Изобретение поясняется чертежами, где
на фиг.1 приведена блок-схема программно-аппаратного комплекса, реализующего заявляемый способ и обеспечивающего пакетную передачу SMS-сообщений с использованием TLV-протокола;
на фиг.2 представлена диаграмма, иллюстрирующая последовательность действий при выполнении пакетированной рассылки SMS-сообщений по заявляемому способу.
Используемые в описании термины
Агрегация - процесс объединения различных элементов в единое целое, в частности, для мобильных услуг, - предоставление услуг разных сервис-провайдеров через единую систему или платформу.
Агрегатор - система, обеспечивающая интерфейс с системами Операторов сотовой связи. Основное предназначение системы - предоставление шлюза, который позволяет организовать удобную и надежную работу между транспортной платформой (ТП) контент-провайдеров и SMS-центрами операторов сотовой связи для облегчения процесса организации доставки мобильного контента его потребителям - абонентам мобильной или фиксированной связи
Транспортная платформа (ТП) - система контент-провайдера, обеспечивающая передачу сообщений агрегатору. ТП устанавливает подключение к системам агрегаторов, отслеживает жизнеспособность подключения и восстанавливает подключение в случае обнаружения разрыва, обеспечивает балансировку трафика между агрегаторами.
КП - контент-провайдер.
Протокол TLV (Tag, Length, Value) - это способ двоичного представления информации, в котором каждый значимый блок информации представлен в виде тройки из:
- идентификатора блока (Tag), который является уникальным в рамках текущего контекста, что позволяет однозначно определить, какие данные содержатся в данном блоке;
- длины значения (Length) - количество байт в поле Value;
- значения (Value) - двоичное представление информации блока, при этом точный способ интерпретации значения зависит от типа информации (т.е. от значения Tag).
Поле Value в TLV представлении может быть:
- элементарным единичным значением (например, строкой "Hello, world");
- составным значением, состоящим из последовательности TLV-блоков;
- пустым. В это случае Length равен нулю и физически поле Value в TLV-блоке отсутствует.
На фиг.1 приведена блок-схема программно-аппаратного комплекса, который обеспечивает осуществление заявляемого способа взаимодействия системы контент-провайдера с агрегатором для пакетной передачи SMS-сообщений с использованием TLV-протокола. Программно-аппаратный комплекс содержит связанные каналами связи блок 1 контент-провайдера, блок 2 агрегатора и блок 3 SMS-центр оператора мобильной связи.
Блок 1 контент-провайдера включает модуль 4 по обслуживанию протокола и связанный с ним блок 5 базы данных.
Модуль 4 по обслуживанию протокола выполняет функции по формированию глобальных уникальных идентификаторов пакетов исходящих сообщений  GUID/UUID, а также выполняет проверку уникальности идентификаторов пакетов, полученных от агрегатора.
Блок 5 базы данных (БД) предназначен для хранения информации о пакетах исходящих сообщений GUID/UUID.
Блок 2 агрегатора включает модуль 6 по взаимодействию с контент-провайдерами, связанный с ним блок 7 базы данных о пакетах исходящих и входящих SMS-сообщений, модуль 8 по взаимодействию с операторами мобильной связи, вход которого связан каналами связи с выходом модуля 6, блок 9 базы данных оперативной информации, связанный с модулем 8.
Модуль 6 по взаимодействию с контент-провайдерами предназначен для поддержки протокола; формирует глобальные уникальные идентификаторы пакетов с результатами отправки SMS-сообщений оператору (send_result), пакетов с результатами доставки сообщений до абонентов (delivery_receipt) и пакетов входящих сообщений; проверяет уникальность идентификаторов пакетов, полученных от контент-провайдера.
Блок 7 базы данных предназначен для хранения информации о пакетах, телефонах исходящих и входящих SMS-сообщений, результатов отправки SMS-сообщений оператору, результатов доставки сообщений до абонентов;
Модуль 8 по взаимодействию с операторами мобильной связи поддерживает взаимодействие с операторами по протоколу SMPP, а также с модулем 3 по взаимодействию с контент-провайдерами работате по внутреннему протоколу.
Блок 9 базы данных предназначен для хранения оперативной информации для взаимодействия с оператором.
Блок 3 SMS-центр оператора мобильной связи включает модуль 10, предназначенный для получения, обработки и маршрутизации SMS-сообщений.
На фиг.2 представлена диаграмма последовательности действий при выполнении пакетированной рассылки SMS-сообщений, где
1 - Контент-провайдер
2 - Агрегатор
3 - SMS-центр Оператора мобильной связи
11 - мобильное устройство получателя SMS-сообщения,
12 - пакет исходящих сообщений (outgoing_package),
13 - уведомление о получении пакета исходящих сообщений (outgoing_package_ack),
14 - исходящее сообщение (submit_sm),
15 - отчет о получении исходящего сообщения (submit_sm_resp),
16 - пакет с результатами отправки исходящих сообщений Оператору (send_result_package),
17 - уведомление о получении пакета с результатами отправки исходящих сообщений Оператору (send_result_package_ack),
18 - отчет о доставке SMS-сообщения до абонента (delivery_sm_DR),
19 - уведомление о получении отчета о доставке SMS-сообщения до абонента (delivery_sm_resp_DR),
20 - пакет с результатами доставки SMS-сообщений до абонента (delivery_receipt_package),
21 - уведомление о получении пакета с результатами доставки SMS-сообщений до абонента (delivery_receipt_package_ack),
22 - входящее SMS-сообщение (deliver_sm_IN),
23 - уведомление о получении входящего SMS-сообщения (deliver_sm_resp_IN),
24 - пакет входящих сообщений (incoming_package),
25 - уведомление о получении пакета входящих сообщений (incommg_package_ack),
26 - (исходящее) SMS-сообщение (submit),
27 - отчет о получении SMS-сообщения (submit_ack).
Заявляемый способ осуществляется следующим образом.
В блоке 1 контент-провайдера формируют пакет 12 исходящих SMS-сообщений в виде сообщения «outgoing_package» для отсылки в блок 2 агрегатора. Сообщению вида «outgoing_package» присваивают уникальный идентификатор, адрес отправки и адрес приема. Контент-провайдер повторяет доставку пакета исходящих SMS-сообщений в виде сообщения «outgoing_package» в блок 2 агрегатора до момента подтверждения агрегатором доставки сформированного пакета 12 исходящих SMS-сообщений.
При получении пакета 12 исходящих SMS-сообщений в виде сообщения «outgoing_package» в блоке 2 агрегатора формируют и направляют в блок 1 контент-провайдеру по каналам связи уведомления 13 о получении пакета исходящих SMS-сообщений в виде сообщения «outgoing_package_ack», содержащего адрес отправки, адрес приема и уникальный идентификатор принятого сообщения.
Далее, из блока 2 агрегатора высылают в блок 3 оператора исходящее сообщение 14, предназначенное для абонента, в виде запроса «submit_sm». После получения из блока 3 оператора отчета 15 о получении исходящего сообщения в виде сообщения «submit_sm_resp», в блоке 2 агрегатора формируют и передают блок 1 контент-провайдеру пакет 16 с результатами отправки оператору пакета исходящих SMS-сообщений в виде сообщения «send_result_package».
При этом сообщению «send_result_package» присваивают уникальный идентификатор, адрес отправки и адрес приема. Агрегатор повторяет отправку сообщения «send__result_package» до момента подтверждения доставки.
В блоке 1 контент-провайдера для подтверждения получения пакета 16 с результатами отсылки SMS-сообщений в виде сообщения «send_result_package» формируют и направляют в блок 2 агрегатора уведомление 17 о получении пакета с результатами отправки оператору исходящих сообщений в виде сообщения «send_result_package_ack» (по одному на каждое полученное сообщение в виде «send_result_package»).
При всех пересылках сообщению «send_result_package» соответствует один и тот же уникальный идентификатор.
Далее из блоке 2 агрегатора передают сообщение с пакетом SMS-сообщений в блок 3 оператору в SMS-центр.
В блоке 3 оператора формируют и отправляют в блок 2 агрегатора отчет 18 о доставке SMS-сообщения до абонента в виде сообщения «delivery_sm_DR», после получения которого в блоке 2 агрегатора формируют ответное сообщение в виде уведомления 19 о получении отчета о доставке SMS-сообщения до абонента в виде сообщения «delivery_sm_resp_DR».
В блоке 2 агрегатора формируют сообщение о результатах доставки SMS абоненту в виде пакета 20 с результатами доставки SMS-сообщений до абонента в виде сообщения «delivery_receipt_package», включающего адрес отправки, адрес приема и уникальный идентификатор. При этом из блока 2 агрегатора повторяют доставку сообщения вида «delivery_receipt_package» в блок 1 контент-провайдера до подтверждения получения.
В блоке 1 контент-провайдера формируют и направляют в блок 2 агрегатора уведомление 21 о получении пакета с результатами доставки SMS-сообщений до абонента в виде сообщения «delivery_receipt_package_ack» (по одному на каждое полученное сообщение «delivery_receipt_package»). Каждое сообщение вида «delivery_receipt_package_ack» содержится уникальный идентификатор соответствующего сообщения «delivery_receipt_package», адрес отправки и адрес приема. При всех повторных посылках у сообщения «delivery_receipt_package» сохранятся один и тот же уникальный идентификатор.
Агрегатор передает Контент-провайдеру серию входящих SMS от абонентов сообщение в виде пакета 24 «incoming_package». Каждое сообщение «incoming_package» имеет уникальный идентификатор, адрес отправки и адрес приема. Агрегатор повторяет доставку сообщения «incoming_package» Контент-провайдеру до того момента, пока от Контент-провайдера не будет получено подтверждение в виде сообщения 25 «incoming_package_ack». При всех перепосылках сообщению «incoming_package» соответствует один тот же уникальный идентификатор.
При этом Агрегатор не отвечает за склейку SMS, которые являются частями длинного входящего сообщения. Поэтому разные части одного длинного входящего сообщения могут размещаться в разных «incoming_package».
Конкретный входящий SMS должен передаваться Контент-провайдеру только в одном сообщении вида «incommg_package». Если Агрегатор получил от Контент-провайдера сообщение 25 «incommg_package_ack», то входящие SMS из подтвержденного сообщения 24 «mcoming_package» не должны больше встречаться в новых сообщениях «incoming_package».
Передача Агрегатором входящих SMS-сообщений от абонента SMS-центра контент-провайдеру осуществляется следующим образом.
Агрегатор получает сообщения 22 от SMS-центра «deliver_sm_IN», формирует пакет сообщений и передает Контент-провайдеру пакет сообщений в виде сообщения 24 «incoming_package».
Контент-провайдер при получении сообщения «incoming_package», формирует и направляет Агрегатору подтверждение в виде сообщения 23 «incoming_package_ack» (по одному на каждое полученное «incoming_package»). Каждому сообщению «incoming_package_ack» присваивают уникальный идентификатор из соответствующего сообщения «incoming_package», кроме того оно включает адрес отправки и адрес приема.
Проверка работоспособности канала связи осуществляется следующим образом:
Для проверки работоспособности канала связи Агрегатором либо Контент-провайдером формируется сообщение «ping». Его периодически отправляют при отсутствии пакетов передачи для определения состояния канала связи. Каждому сообщению вида «ping» присваивают уникальный идентификатор.
На каждое полученное сообщение вида «ping» отсылают один ответ в виде «ping_ack» В сообщении «ping_ack» включают уникальный идентификатор из соответствующего запросного сообщения вида «ping».
Пример формирования запросов и сообщений с использованием TLV-протокола. TLV (Tag, Length, Value) - это способ двоичного представления информации, в котором каждый значимый блок информации представлен в виде тройки из:
1. Идентификатора блока (Tag). Идентификатор является уникальным в рамках текущего контекста, что позволяет однозначно определить, какие данные содержатся в данном блоке.
2. Длины значения (Length). Количество байт в поле Value.
3. Значения (Value). Двоичное представление информации блока. Точный способ интерпретации значения зависит от типа информации (т.е. от значения Tag). Поле Value в TLV представлении может быть:
- элементарным единичным значением (например, строкой "Hello, world");
- составным значением, состоящим из последовательности TLV-блоков;
- пустым. В это случае Length равен нулю и физически поле Value в TLV-блоке отсутствует.