Изпращане на SMS по SMPP протокол - описание, параметри, команди

SMPP (Short message peer-to-peer protocol) - протокол, който описва взаимодействието на крайния клиент със SMS сървъра (SMSC).

SMS център (SMSC) - отговаря за работата на услугата за кратки съобщения на мобилната мрежа. Задачите му са съхранение, предаване, конвертиране и доставка на SMS съобщения.

SMPP v3.4 - за свързване с нашия сървър се използва SMPP протоколът от най-новата версия 3.4 (приложение)

Опции за свързване

Основни параметри:

Допълнителни опции:

Поддържани команди

Описание на командата
BIND_RECEIVERСвържете се като ПОЛУЧАТЕЛ (клиентът може да получава съобщения само от SMSC)
BIND_ПРЕДАВАТЕЛСвържете се като ПРЕДАВАТЕЛ (клиентът може да изпраща съобщения само до SMSC)
BIND_TRANSCEIVERСвържете се като ТРАНСИЙВЪР (клиентът извършва двупосочен трансфер на съобщения
SUBMIT_SMизпрати съобщение
QUERY_SMЗаявка за състояние на съобщението
DELIVER_SMИзпращане на разписка за доставка от сървъра
ENQUIRE_LINKПроверете връзката
GENERIC_NAKГрешна команда
ОТВЪРЗВАНЕИзключвам

*За неподдържани команди сървърът ще отговори сGENERIC_NAK с код на грешкаESME_RINVCMDID.

Поддържани команди

Параметър Описание Стойности
изходен_адрес_тонТип номер (TON) Тип номер на изпращача0x00 - Неизвестен 0x01 - Международен 0x02 - Национален 0x03 -Специфична мрежа 0x04 - Номер на абоната 0x05 - Буквено-цифров 0x06 - Съкратено
източник_addr_npiИндикатор на номерационния план (NPI) Идентификатор на номерационния план на подателя0x00 - Неизвестен 0x01 - ISDN (E163/E164) 0x02 - Данни (X.121) 0x03 - Телекс (F.69) 0x04 - Land Mobile (E.212) 0x05 - Национален 0x06 - Частен )
dest_addr_tonТип номер (TON)0x01 - Международен (международен)
dest_addr_npiИндикатор на номерационния план (NPI) Идентификатор на номерационния план на получателя0x01 - ISDN (E163/E164) (за номера) 0x02 - Национален (за останалите)
esm_classПоказва режим на съобщения & Тип съобщение Използва се за определяне на специалните атрибути на кратко съобщение.0x00 - Тип на съобщението по подразбиране 0x40 - Индикатор за UDHI набор от потребителски данни - Индикатор за заглавка на потребителски данни
регистрирана_доставкаПараметър за заявка за състояние0x00 - флагът за заявка за статус е деактивиран 0x01 - флагът за заявка за статус е активиран
кодиране_на_данниУказва схемата за кодиране на потребителски данни за кратко съобщение.0x01 - IA5(CCITT T.50)/ASCII (ANSI X3.4) латинска азбука 7 бита на знак максимална дължина на едно съобщение 160 знака 0x07 - латиница/иврит (ISO-8859-8) латинска азбука 8 бита на знак максимална дължина на съобщението 140 знака 0x08 - UCS2(ISO/IEC-10646) за национални азбуки (e .на български) максимална дължина на съобщенията 70 знака

Правила за работа с SMPP връзка

Когато се установи връзка, на клиента се дават 10 секунди, за да изпрати команда BIND_TRANSMITTER или BIND_TRANSCEIVER. В противен случай връзката ще бъде прекратена от сървъра.

Клиентът е длъжен да отговори на всички пакети, изпратени от сървъра, със съответния resp пакет в рамките на 1 минута. В противен случай връзката ще бъде прекратена от сървъра без изпращане на UNBIND.

Командата UNBIND се използва за прекратяване на SMPP сесия.

Ако флагът registered_delivery е зададен в пакета Submit_sm при изпращане, тогава състоянието на съобщението ще бъде върнато само към връзката, установена от името на потребителя, който е изпратил съобщенията.

В даден момент е разрешена само една връзка от едно потребителско име. Всички допълнителни връзки ще получат грешка (0x00000005 ESME вече е в свързано състояние). Ако трябва да направите няколко връзки за един шкаф, трябва да създадете отделен потребител за всеки и да използвате неговата връзка.

Получаване на статус на доставка на съобщение

Има две възможности за получаване на статус на доставка (активен и пасивен). Пасивният вариант е за предпочитане.

Пасивната опция включва настройка на флага registered_delivery на пакета SUBMIT_SM. След като съобщението премине в крайно състояние, сървърът ще изпрати пакет DELIVER_SM със съобщение за разписка за доставка. Форматът на съобщението за разписка за доставка е по-долу.

Активната опция предвижда периодично проучване на статуса на съобщението чрез изпращане на QUERY_SM.

Формат на разписката за доставка

Дешифриране на формата на отговора на разписката за доставка:

Описание на полето
документ за самоличностID на съобщението
субБрой изпратени съобщения
dlvrdБрой доставени съобщения
дата на подаванеЧас на изпращане на съобщението
свършена датаВреме за преход на съобщението до крайно състояние
статистикаСъстояние на съобщението (статуси на декодиране вижте по-долу)
грешкаМоже да съдържа код за грешка, ако съобщението не е доставено
текстПървите 20 байта от съобщението

Дешифриране на статуси на полеstat :

Описание на състоянието
delivrdДоставено
просроченНе е доставена поради изтичане на времето за доставка
изтритиПремахнато
undelivНе може да се достави
приетПриет за обработка
неизвестенНеизвестно състояние (полето err може да съдържа код на грешка)
отхвърлениСъобщението е отхвърлено

Запазени кодове за грешки

HEX код DEC код Описание
0x04001024Кодирането не е разпознато.
0x04011025Текстът на съобщението е твърде голям. Максималната дължина не трябва да надвишава 160 байта.
0x04021026Грешка при регистриране на съобщение за изпращане. Ако възникне тази грешка, свържете се с поддръжката.
0x04031027Текстът на съобщението не е проверен за невалидни думи и/или фрази.
0x04041028Подателят или получателят е в черния списък.
0x04531107Ограничението за изпращане на един и същи текст до един и същ номер за кратък период от време проработи.Свържете се с поддръжката, ако искате да деактивирате или намалите периода.
0x043C1084Няма налична тарифа за заявената дестинация.
0x043F1087Няма подходяща тарифа за по-висок контрагент.
0x045A1114Правилата за маршрутизиране не са намерени.
0x04461094Транспортна грешка. Ако възникне тази грешка, свържете се с поддръжката.
0x04331075Няма достатъчно средства по сметката.

*За обяснение на грешките на протокола вижте спецификацията на SMPP версия 3.4.