Направи си сам smpp сървър, прехвърлящ дълги съобщения. Кратко описание на протокола SMPP. Запазени кодове за грешки

Един от sm протоколите е smpp. Той описва процеса на взаимодействие между получателя на съобщението, тоест smpp клиента със SMS сървъра, използвайки специална системапредаване на данни.

Вземайки smpp съобщенията като основа, вие ще можете да:

  • използвайте различни текстови формати, както и wap push sms;
  • изпращайте не само кратки, но и дълги текстове;
  • получавате подробни отчети за доставени и отложени SMS;
  • обмен на съобщения в двупосочен формат;
  • изберете скоростта на изпращане.

Поради това, smpp протоколима големи възможности, които обаче са свързани с някои особености на използване и монтаж, които ще разгледаме.

Характеристики на работа с smpp

За да работите с този протокол, трябва да имате подходящия софтуер и сървър, който може да взаимодейства с smpp. В този случай оборудването трябва да бъде постоянно свързано към шлюза на компанията доставчик. За да изпращаме smpp sms бързо и без забавяне, всички клиенти на нашата компания са тествани за съвместимост на оборудването. Това ви позволява да се отървете от много технически трудности в началния етап.

Освен това, преди да използват протокола за изпращане по пощата, потребителите могат да тестват изпращането на smpp sms, за да определят желаната скорост на доставка.

Експертите винаги са готови да дадат съвет относно използването, свързването и тестването на услугата, което ще опрости вашата задача.

Връзка чрез SMPP протокол.

  • system_id - регистриран в системното потребителско име от формата XXXX.X
  • парола - потребителска парола
  • адрес -
  • Пристанище - 8056

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

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

Параметри за изпращане на съобщение (SUBMIT_SM) чрез smpp протокол

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

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

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

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

Има две опции за получаване на статус на доставка чрез smpp протокол (активен и пасивен). За предпочитане е пасивният вариант.

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

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

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

"id: IIIIIIIII sub: SSS dlvrd: DDD дата на подаване: YYMMDDhhmm дата на приключване: YYMMDDhhmm
stat: DDDDDDD грешка: E Текст:. ... ... ... ... ... ... ... ."

Резервирани smpp кодове за грешки

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

В мрежата има такъв клас услуги,
които позволяват на потребителите
извикайте всякакви функции, като изпратите SMS до
специални номераи получаване на отговори също
SMSkakh. Например, можете да се регистрирате
имейл кутия, за която можете да инсталирате
препращане входящ сапункъм вашия телефон.
Можете да получавате новини в реално време и
участвайте в чатове. Можете да използвате SMS
поръчайте снимки и мелодии за вашите
мобилни телефони. И накрая, човек може да участва в
гласуване. Някои opSoS
поддържат такава услуга, когато за всеки
той не плаща изпратения от потребителя SMS
само на OpSoSu, но и на собственика на услугата,
извършване на плащане за услуги, най-често,
виртуален. Използвайки телефона, ние не го правим
ние даваме съпътстващия разход на пари
същата стойност като при използване на WebMoney
или при извършване на плащания през SberBank.
Възможностите на SMS дават широк обхват за
електронен бизнес. Мнозина са привлечени от
примамлива перспектива да получим светлина
пари, когато просто гледате
обработвайте и броете парите, но работете за
вие скриптове на сървъра. Аз не си поставям цели
съставете ръководство за нов вид „бизнес
за един човек. „В тази статия И
ще заявя само техническа странаПроблеми
автоматизирана обработка на SMS.

Различни подходи

В зависимост от задачите и на
наличната сума пари може да бъде избрана
едно от следните решения:

  • Можете да изпращате SMS само чрез формуляри
    на уебсайтовете на OpSoS или на някои
    портали. Безплатно е. Така че е възможно
    реализирайте изпращане на SMS от вашия портал,
    но за изпълнение платена услуга, от
    които потребителите очакват специална надеждност,
    това не е сериозно. За тях вече е писано много,
    затова няма да се фокусирам върху тях,
    особено след като всички те са в момента
    защитено от теста на Тюринг, така че това
    методът в момента не е наличен.
  • Специални http-to-SMS шлюзове за бизнес приложения.
    Вие плащате и получавате възможност чрез http заявки
    изпращайте SMS от вашите скриптове до всеки
    точка на света, както и да получавате SMS,
    изпратени на специални номера. Така
    много лесно се прави портал с SMS форма или
    известяване за нови писма.
  • SMPP позволява не само
    получавайте и изпращайте SMS, но и получавате
    изпратени известия за доставка
    съобщения, както и отмяна и замяна
    съобщения. Присвоен ви е номер или
    цял набор от числа, получавате всичко
    съобщения, идващи до него и
    изпращайте съобщения от произволен номер.
    Възможно уведомление за получено
    съобщения: SMS център се свързва към
    предварително зададения IP и порт и
    ви изпраща съобщения.

В тази статия ще говоря за SMPP като най-много
усъвършенстван метод за работа с SMS шлюзове.

С този протокол можете да вземете
и изпращайте SMS чрез т. нар. SMS центрове.
SMS центровете са шлюзове между Интернет
и клетъчни мрежи... За да работите с това
протокол има готови решения,
например Net :: SMPP в Perl. Описание на протокола и
връзки към софтуерни продуктиможе да се намери
на www.smpp.org.
Последна версияминути по това време
писане на статия - 3.4. Можете също да изтеглите там
програма за тестване на клиентски софтуер - SMPP
Инструмент за клиентски тест (SCTT). Не са закупили достъп до
истински SMS-център, трябва да се тества по някакъв начин
вашите програми. Неудобно е само за този SCTT
написан за Linux, така че трябва
бърникайте с виртуален компютър или веднага кодирайте под Linux.

Описание на протокола

Връзката може да бъде инициирана като
потребител, посочен в описанието
Протокол за външни кратки съобщения (ESME) и SMS център
(SMSC). Имайте предвид, че с оглед на тази възможност
би било погрешно да се обадите на SMS центъра
сървър, тъй като може да бъде
клиентът. Първият вариант се използва като
обикновено при изпращане на съобщения, а вторият
при получаване, въпреки че никой не забранява
изпращане на съобщения през връзка,
зададени от SMS центъра и получавате чрез
връзка, установена от вас самите. Всичко
данните в протокола SMPP са вложени в блокове,
наречени Protocol Data Units (PDU), които имат
заглавка, която определя размера на блока и
код на операцията.

Формат на заглавката на PDU:

DWORD Length - дължината на целия блок, включително
заглавие
Команда DWORD
Състояние на DWORD - 0 в заявки и код за грешка и отговори
DWORD SequenceNumber - пореден номер.

Поредният номер в отговора трябва
равно на числото в заявката.

Всички числа в SMPP са кодирани така, че най-високите
байт вляво. За да направите това, можете да използвате
функция htonl (). Всички PDU са разделени на заявки и
отговори. В кодовете на заявка най-значимият бит е
нула, в отговорите на единица. За всяка молба
отговор трябва да дойде, освен
известия за входящи съобщения. Чао
не е получен отговор, операцията се разглежда
недовършен. Ако няма отговор
до прекъсване на връзката, участник, независимо дали е SMSC
или ESME, трябва да опитате отново заявката. протокол
асинхронен, т.е. подателят на искането може
изпратете друга заявка, без да чакате
отговор и отговорите могат да последват във всеки
последователност. Всички операции също
се разделят на тези, които могат да се използват
ESME, които могат да се използват от SMSC и тези
който може да се използва и от двамата
партии. Връзката може да е в
следните условия:

- Отворено (все още не е удостоверено)
- Трансфер
- Рецепция
- Приемане и предаване
- Затворено

В състояние "Отворено", тоест веднага след това
Установяване на TCP връзка ESME желае
изпраща SMS, трябва да изпрати заявка за bind_transmitter.
За приемане - bind_receiver. И за двете действия
незабавно - bind_transceiver. Тази заявка се предава
вход и парола. Ако връзката е установена
SMSC, той първо трябва да изпрати заявка за изпреварване
и предайте в него потребителското име и паролата, защото в
тази ситуация вече се нуждае от неговите права за достъп
проверете. Например, ще ви покажа как изглежда
команда bind_transmitter:

Заглавие:
DWORD Дължина
Команда DWORD = BIND_TRANSMITTER
Състояние на DWORD = 0
DWORD Пореден номер

Данни:
Низ за вход
Низ парола
Тип низ на системата (напр. WWW или Mail)
BYTE Версия на протокола = 0x34
BYTE addr_ton (тип число), 0 = по подразбиране
BYTE addr_npi (Номер план), 0 = по подразбиране
Диапазон от числа на низ, празен низ,
ако самият доставчик знае какви номера сме
сервирайте

Стрингове - ASCIIZ, т.е. с нулев край.

Повечето от параметрите за тази заявка
могат да бъдат нули или празни низове. V
отговорът на такова искане ще бъде даден в
което в допълнение към заглавието ще бъде SystemId на SMS центъра,
и полето Статус ще бъде нула, ако е успешно. Ако
се установява връзка за предаване, тогава ние
имаме право да изпращаме заявки submit_sm и ако
се установява връзка за получаване, тогава ви трябва
изчакайте за заявки за доставки_sm, съдържащи текстове
получени съобщения и да ги обработват.
След като приключите работата, изпратете съобщението unbind and
прекъснете връзката.

Повечето заявки имат куп
параметри, над които не можете особено
пара и ги анулира. Така че въпреки
впечатляващо количество документация,
прост телефонен секретар на SMS, базиран на
които можете да изградите някои
помощна система, разбрах
с обем от само 25 kB текст на C ++ и тест за
SCTT показа, че всичко работи и си остава
просто купете достъп до SMSC :).

С кого да се свържете

SMPP съобщения за приятелски
клиентите се приемат от много OpSoS, така че
няма конкретни връзки. Търсете информация за
сайта на OpSoS, който предпочитате
работа. В допълнение, собствен SMS център,
работи по протокол SMPP, предвижда

SMPP- общ тип протокол, използван за получаване и предаване на sms съобщения и USSD заявки. Неговата особеност е постоянната връзка, която дава едно много важно предимство- връзката не е прекратена и от него се изпраща SMS висока скорост(до няколко пъти по-висока, отколкото при други методи).

Така че, когато използвате протокола smpp, получавате следните функции:

1.наличен различни формати, включително wap push sms;

2. съобщенията, изпратени чрез smpp, могат да бъдат не само в кратък формат;

4. двупосочен SMS канал;

5. регулиране на скоростта.

Както можете да видите, протоколът smpp ви дава голяма свобода на използване, но, както всеки инструмент, той има свой собствен уникални чертисвързани с настройката и пряко работа. Ще говорим за това по-долу.

Характеристики на работа с протокола

За функционирането на smpp е необходим сървър, който е адаптиран за работа този протокол, и специални софтуер(клиент). Освен това е необходима постоянна стабилна връзка с шлюза на доставчика. Затова ние безотказно тестваме оборудването, с което разполагат нашите клиенти - сървърът трябва да е съвместим с високоскоростен чрез изпращане на SMS... По този начин опростяваме предоставянето на качествени услуги от самото начало.

Api са подходящи за сайтове, написани на всеки език, включително php.

Самите клиенти могат да тестват работата на конфигурирания smpp канал, като за това се предоставят всички възможности още преди да използват услугите. Това ви позволява да разберете колко бързо вашите съобщения, изпратени чрез smpp протокола, ще бъдат доставени на получателите.

Обслужващият персонал ще се радва да ви помогне да разберете всички тънкости на работата чрез smpp протокола, да интегрирате php във вашия сайт, да ви помогне да свържете и тествате всички услуги и да отговорите на всякакви въпроси.

Параметри на връзката

  • system_id - регистриран в системното потребителско име от формата XXXX.X
  • парола - потребителска парола
  • адрес -
  • Пристанище - 8056

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

Описание

BIND_TRANSMITTER

Свържете се като ПРЕДАВАТЕЛ

BIND_TRANSCEIVER

Свържете се като TRANSCEIVER

изпрати съобщение

Заявка за състоянието на съобщението

Изпращане на разписка за доставка от сървър

Проверка на връзката

Грешна команда

Прекъсване на връзката

Ако въведете неправилна команда, ще получите отговор като GENERIC_NAK, чийто текст ще съдържа кода за грешка ESME_RINVCMDID.

Параметри за изпращане на SMS (SUBMIT_SM)

Правила за свързване

Клиентът има 10 секунди, за да установи връзка през smpp шлюза, през които трябва да се изпрати една от следните команди: BIND_TRANSCEIVER, BIND_TRANSMITTER. V в противен случайвръзката ще бъде прекъсната.

Също така ще настъпи прекъсване, ако клиентът не отговори на нито един пакет, изпратен от сървъра в рамките на една минута. установени правилас респ. При такова прекъсване UNBIND не се изпраща.

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

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

Състояние на доставка на SMS

Когато използвате този протокол, състоянието на доставка може да бъде пасивен (за предпочитане) или активен.

За да получите пасивен отчет, пакетът SUBMIT_SM трябва да бъде изпратен с предварително активиран флаг registered_delivery.

Текстът на разписката за доставка в пакета DELIVER_SM идва от сървъра, когато SMS преминава към последния етап на доставка.

При активен отчет състоянието на SMS редовно се проверява чрез изпращане на QUERY_SM.

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

"id: IIIIIIIII sub: SSS dlvrd: DDD дата на подаване: YYMMDDhhmm дата на приключване: YYMMDDhhmm
stat: DDDDDDD грешка: E Текст:. ... ... ... ... ... ... ... ."

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

Описание

Кодирането не е разпознато

Текстът на съобщението е твърде голям. Максималната дължина не трябва да надвишава 160

0x0402 (1026)

Грешка при регистриране на съобщение за изпращане. Когато възникне тази грешка
Свържете се с поддръжката.

Проверката на текста на съобщението за невалидни думи и/или фрази не бе успешно

Подател или получател в черен списък

Ограничението за изпращане на един и същ текст до същия номер в рамките на кратък период от време проработи. Свържете се с поддръжката, ако искате да деактивирате или намалите периода.

Няма налична тарифа за заявената дестинация.

Най-добрият контрагент няма подходяща тарифа.

Не е намерена политика за маршрутизиране.

Транспортна грешка. Ако срещнете тази грешка, свържете се със сервиза

Поддържа.

Недостатъчни средства по сметката.

Съкращението SMPP е съкращение за протокол за кратки съобщения peer-to-peer, протоколът се използва за прехвърляне на SMS, USSD и други видове съобщения, обикновено в VAS системи. В края на статията има списък с термини, използвани в текста.

SMPP е разработен от Aldiscon от Ирландия, който по-късно е закупен от Logica. През 1999 г. SMPP попада под контрола на SMPP Developers Forum, който по-късно е преименуван на SMSForum. Протоколът се основава на обмена на PDU (протоколни данни), предавани на мрежов модел 4 OSI. Пакетите могат да се обменят както синхронно (след изпращане на заявка, по-нататъшният обмен на пакети е преустановен, докато не бъде получен отговор), или асинхронно (заявките се изпращат без забавяне, отговорите се обработват при пристигането им). Доскоро последната публикувана спецификация беше SMPP 3.4, а спецификацията SMPP 5.0 дълго времебеше собственост на Logica, но сега също е наличен. Обикновено този протокол се използва в режима постоянна връзка, което ви позволява значително да увеличите скоростта на предаване, т.к не е необходимо да установявате връзка всеки път. Връзката може да бъде инициирана или от потребител с име External Short Message Entity (ESME) в описанието на протокола, или от SMS център (SMSC).

Има няколко режима на свързване:

Режим "Предавател" - режим само за изпращане на съобщения до SMSC и получаване на подходящи отговори, без получаване на входящи съобщения (DELIVER_SM пакети);

Режим „Получател“ - в този режим е обратното, само получаване на входящи съобщения и връщане на съответните отговори от SMPP клиента към SMSC, не се изпращат кратки съобщения през този режим (SUBMIT _SM пакети);

режим " Трансивър "- режимът за изпращане и получаване на съобщения, процесътможе да се изпълнява синхронно и асинхронно.

Всички данни в протокола SMPP, както бе споменато по-рано, са вложени в блокове, наречени Protocol Data Units, които се състоят от заглавие и тяло.

Заглавката на PDU на пакета съдържа следните полета:

дължина_команда - показва общ бройоктети, съдържащи се в този пакет, включително полето за дължина.

команда _ id - идентификатор на командата (например подайте _ sm,заявка _ sm и др.). Иидентификаторът на командата за отговор е идентичен със съответния идентификатор на команда за заявка, но с битове, зададени на 31.

command_ status - показва успеха или неуспеха на заявката. Това поле има смисъл само в съобщението за отговор и трябва да бъде зададено на NULL в съобщенията за заявка.

пореден _ номер - в товаполето съдържа пореден номер, който позволява да се асоциират заявки и отговори за целите на корелацията. Използването на последователни номера позволява SMPP пакети да се обменят асинхронно.

Тялото на PDU е по избор и може да не е включено във всеки пакет PDU. Структурата на тялото е описана в спецификацията на протокола отделно, в зависимост от типа PDU.

Също така в пакета PDU може да има допълнителни параметри с общ формат TLV (Tag, Length, Value) Тези параметри осигуряват механизъм за бъдещо въвеждане на нови параметри, както и когато са дефинирани в бъдещи версии SMPP протокол... Незадължителните параметри са полета, които могат да бъдат включени в SMPP съобщението произволно, те могат да бъдат включени във всяко удобна поръчкав секцията "Незадължителни параметри" на предавания PDU и не е необходимо да се кодират в реда, показан в спецификацията на протокола.

Таг - идентификаторът на този специфичен незадължителен параметър;

Дължина - показва дължината на полето Стойност в октети (тази дължина не включва дължината на полетата Tag и Lengt). Незадължителното поле за параметър Length винаги ще бъде дълго 2 октета;

Стойност – Това поле съдържа действителните данни за този незадължителен параметър.

Обхват на кратки съобщения в съвременен святголям, SMPP е идеален за бързо прехвърляне Голям бройсъобщения, например за компании, които имат голяма основаклиенти или за провеждане на SMS гласуване в реално време, където има голям потоквходящи и изходящи данни.

| Повече ▼ Подробно описаниепротокол можете да намерите в спецификацията на руски тук: SMPP_v3.4_rus.pdf

Основни понятия и съкращения

SM (Short Message) - кратко съобщение;

SMS (Short Message Service) - услуга за кратки съобщения, осъществява пренос на SM между клиенти на мобилни мрежи, както и външни клиентски приложения;

USSD (Unstructured Supplementary Service Data) е стандартна услуга в GSM мрежипозволяваща организиране на интерактивно взаимодействие между абоната на мрежата и приложението на услугата в режим на прехвърляне на кратки съобщения;

MMS (Multimedia Messaging Service) е система за предаване на мултимедийни съобщения (изображения, мелодии, видеоклипове) през клетъчни мрежи.

SMSC (Short Message Service Center) - Short Message Service Center - основата за функционирането на SMS;

VAS (Value Added Services) – услуги, които носят допълнителен доход;

ESME (External Short Message Entity) - Външен клиентско приложениекойто прилага протокола SMPP, получава или изпраща кратки съобщения;

HLR (Home location register) - Постоянна база данни на абонатите, към които са свързани мобилна мрежа... HLR осигурява маршрут за предаване на SMS до дестинация SM;

Октетът е 8 бита. На руски език октет обикновено се нарича байт.