Подключение Kannel к USSD-центру

Вопрос об использовании Kannel в качестве USSD-шлюза в рассылках поднимается достаточно регулярно. На первый взгляд все выглядит логично - современные USSD-центры прекрасно работают с приложениями по протоколу SMPP, а Kannel этот протокол поддерживает.

Однако, есть некоторые особенности, которые нужно учитывать:

  1. В отличие от SMS, для передачи и приема USSD команд используется PDU data_sm (а не submit_sm / deliver_sm). Принимать data_sm Kannel умеет, а вот при отправке использует только submit_sm, если не пропатчить.
  2. Команда USSD указывается в дополнительном TLV параметре SMPP ussd_service_op с номером 0x0501. Допустимые значения этого параметра перечислены в спецификации SMPP 3.4 (раздел 5.3.2.44).

Как ни странно, с некоторыми USSDC работать по SMPP из Kannel вполне возможно и даже не представляет особой сложности. Основная часть отличий в конфигурации (по сравнению с SMSC) заключается в определении группы smpp-tlv для указания операции USSD:

group = smpp-tlv
name = ussd_service_op
tag = 0x0501
type = integer
length = 1

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

Для справки привожу значения команд USSD:

  • 0 = PSSD indication
  • 1 = PSSR indication
  • 2 = USSR request
  • 3 = USSN request
  • 16 = PSSD response
  • 17 = PSSR response
  • 18 = USSR confirm
  • 19 = USSN confirm

Ссылки по теме: