Изпращане на 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 може да съдържа код на грешка) |
отхвърлени | Съобщението е отхвърлено |
Запазени кодове за грешки
0x0400 | 1024 | Кодирането не е разпознато. |
0x0401 | 1025 | Текстът на съобщението е твърде голям. Максималната дължина не трябва да надвишава 160 байта. |
0x0402 | 1026 | Грешка при регистриране на съобщение за изпращане. Ако възникне тази грешка, свържете се с поддръжката. |
0x0403 | 1027 | Текстът на съобщението не е проверен за невалидни думи и/или фрази. |
0x0404 | 1028 | Подателят или получателят е в черния списък. |
0x0453 | 1107 | Ограничението за изпращане на един и същи текст до един и същ номер за кратък период от време проработи.Свържете се с поддръжката, ако искате да деактивирате или намалите периода. |
0x043C | 1084 | Няма налична тарифа за заявената дестинация. |
0x043F | 1087 | Няма подходяща тарифа за по-висок контрагент. |
0x045A | 1114 | Правилата за маршрутизиране не са намерени. |
0x0446 | 1094 | Транспортна грешка. Ако възникне тази грешка, свържете се с поддръжката. |
0x0433 | 1075 | Няма достатъчно средства по сметката. |
*За обяснение на грешките на протокола вижте спецификацията на SMPP версия 3.4.