Надсилання смс протоколом smpp, api для розробників. SMPP: Центр чекає на SMS...

Протокол обміну визначається специфікацією SMPP версії 3.4.

Версія 1.0 призначена лише для надсилання повідомлень та отримання статусу доставки.

Прийом повідомлень у Наразіне підтримується.

Розшифровку помилок можна знайти у специфікації SMPP версії 3.4.

Для підвищення рівня безпеки під час роботи з системою, ви можете надати список IP-адрес з яких буде здійснюватися підключення.

Параметри підключення

Підтримувані команди

  • system_id - зареєстроване в системі ім'я користувача.
  • password - пароль SMS-користувача
  • Адреса - sms.сайт
  • Порт - 9001

На непідтримувані команди сервер відповідатиме GENERIC_NAK повідомленням із кодом помилки ESME_RINVCMDID.

Параметри надсилання повідомлення (SUBMIT_SM)

Правила роботи зі SMPP підключенням

При встановленні підключення клієнту дається 10 секунд, щоб надіслати команду BIND_TRANSMITTER або BIND_TRANSCEIVER. Інакше з'єднання буде розірвано сервером.

Клієнт повинен відповідати на всі пакети, надіслані сервером відповідним resp пакетом протягом 1 хвилини. Інакше з'єднання буде розірвано сервером без надсилання UNBIND.

Набуття статусу доставки повідомлення

Є дві можливості набуття статусу доставки (активний та пасивний). Пасивний варіант є кращим.

Пасивний варіант передбачає встановлення прапора registered_delivery пакета SUBMIT_SM. Після переходу повідомлення у фінал сервер відправить DELIVER_SM пакет з Delivery Receipt повідомленням. Формат Delivery Receipt повідомлення нижче.

Активний варіантпередбачає періодичне опитування статусу повідомлення надсиланням QUERY_SM.

Надсилання СМС через smpp, smpp-шлюз

Одним із протоколів надсилання SMS-повідомлень є SMPP. Він описує процес взаємодії одержувача повідомлення, тобто smpp-клієнта з smpp-сервером, використовуючи при цьому особливу системупередачі даних.

Взявши за основу надсилання CMC-повідомлень через протокол SMPP, Ви отримаєте можливість:

  • 1) використовувати різні текстові формати, а також wap push смс;
  • 2) відсилати як короткі, а й довгі тексти;
  • 3) отримувати докладні звітипро доставлені та відкладені смс;
  • 4) обмінюватися повідомленнями у двосторонньому форматі;
  • 5) вибирати швидкість відправлення.

Таким чином, протокол smppмає великими можливостями, які, однак, пов'язані і з деякими особливостями використання та установки, які ми розглянемо.

ПОТРІБНО ЯКІСНИЙ SMPP-ШЛЮЗ?Зв'яжіться з нами та ми надамо тестовий доступ!

Особливості роботи з SMPP

Для роботи з протоколом SMPP необхідно мати відповідне програмне забезпечення (SMPP-клієнт, версії 3.4). При цьому обладнання має бути постійно приєднане до шлюзу компанії "СМС-Агент". Для того, щоб відправка SMS через SMPP здійснювалася швидко і без затримок, всі клієнти нашої фірми проходять тест на сумісність обладнання. Це дозволяє позбавитися багатьох технічних складнощів ще на початковому етапі.

Крім того, перед використанням протоколу для проведення SMS-розсилок користувачі можуть провести тестове надсилання СМС повідомлень через SMPP, щоб визначитися з бажаною швидкістю доставки.

Спеціалісти компанії "СМС-Агент" завжди готові надати консультацію з питань використання, підключення та тестування сервісу SMPP, що спростить Ваше завдання.

Підключення за протоколом SMPP

System_id - зареєстроване у системі ім'я користувача
password - пароль користувача
Адреса - smpp.сайт
Порт - 2775
Для шифрованого SSL-підключення використовується порт 3443

Підтримувані команди з протоколу SMPP

Параметри надсилання повідомлення (SUBMIT_SM) через SMPP

Правила роботи зі SMPP підключенням

При встановленні підключення клієнту дається 10 секунд, щоб надіслати команду BIND_TRANSMITTER або BIND_TRANSCEIVER. Інакше з'єднання буде розірвано сервером.

Клієнт повинен відповідати на всі пакети, надіслані сервером відповідним resp пакетом протягом 1 хвилини. Інакше з'єднання буде розірвано сервером без надсилання UNBIND.

Набуття статусу доставки повідомлення

Є дві можливості набуття статусу доставки по протоколу smpp(активний та пасивний). Пасивний варіант є кращим.

Пасивний варіант передбачає встановлення прапора registered_delivery пакета SUBMIT_SM.
Після переходу повідомлення у фінал сервер відправить DELIVER_SM пакет з Delivery Receipt повідомленням.
Формат Delivery Receipt повідомлення нижче.

Активний варіант передбачає періодичне опитування статусу повідомлення надсиланням QUERY_SM.

Формат Delivery Receipt

"id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done date:YYMMDDhhmm stat:DDDDDDD err:E Text: . . . . . . . . . ."

Зарезервовані коди помилок під час smpp з'єднання

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

У мережі існує такий клас сервісів,
які дають користувачам можливість
викликати будь-які функції, посилаючи SMS на
спеціальні номериі отримуючи відповіді також у
SMSках. Наприклад, ви можете зареєструвати
email-ящик для якого можна встановити
форвардинг вхідного милана ваш телефон.
Можна отримувати в реальному часі новини та
брати участь у чатах. Можна за допомогою SMS
замовляти картинки та мелодії для своєї
мобілі. Нарешті, можна брати участь у
голосування. Деякі ОпСоСи
підтримують таку послугу, коли за кожну
відправлену користувачем SMSку він платить не
тільки ОпСоСу, а й власнику сервісу,
здійснюючи оплату за послуги, найчастіше,
віртуальні. Користуючись телефоном, ми не
надаємо супутньої витрати грошей
такого значення, як із використанням WebMoney
або при платежах через Ощадбанк.
Можливості SMS дають широкий простір для
електронний бізнес. Багатьох приваблює
приваблива перспектива отримувати легені
гроші, коли ти тільки спостерігаєш за
процесом і вважаєш гроші, а працюють за
тебе скрипти на сервері. Я не ставлю мети
скласти керівництво по новому виду "бізнесу
для однієї людини". У цій статті я
викладу лише технічний бікпроблеми
автоматизованого оброблення SMS.

Різні підходи

Залежно від поставлених завдань та від
наявної кількості грошей можна вибрати
одне з наступних рішень:

  • Тільки передавати SMS можна через форми
    на сайтах ОпСоСів або на якихось
    портали. Це безкоштовно. Так можна
    реалізувати відправку 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
Client Test Tool (SCTT). Поки що не купили доступ до
реальному SMS-центру, треба якось тестувати
свої проги. Незручно тільки те, що SCTT
написана під Linux, так що доведеться
повозитися з Virtual PC або відразу кодувати під Linux.

Опис протоколу

Ініціювати з'єднання може як
користувач, званий в описі
протоколу External Short Message Entity (ESME), а також SMS-центр
(SMSC). Зауважимо, що через цю можливість
було б неправильно називати SMS-центр
сервером, оскільки він може бути і
клієнтом. Перший варіант використовується як
правило, при надсиланні повідомлень, а другий
при отриманні, хоча ніхто не забороняє
надсилати повідомлення через з'єднання,
встановлене SMS-центром та отримувати через
з'єднання, встановлене тобою самим. Усе
дані в протоколі SMPP вкладені в блоках,
званих Protocol Data Units (PDU), які мають
заголовок, в якому вказано розмір блоку та
код операції.

Формат PDU header:

DWORD Length - довжина всього блоку, включаючи
Заголовок
DWORD Command
DWORD Status — 0 у запитах та код помилка та відповідях
DWORD SequenceNumber – порядковий номер.

Порядковий номер у відповіді повинен
дорівнювати номеру в запиті.

Усі числа в SMPP кодуються так, що старший
байт зліва. Для цього можна скористатися
функцією htonl(). Усі PDU діляться на запити та
відповіді. У кодах запитів старший біт дорівнює
нулю, у відповідях одиниці. на кожен запит
має прийти відповідь, за винятком
повідомлень про повідомлення, що надійшли. Бувай
відповідь не отримано, операція вважається
незавершеною. Якщо відповіді не було
до розриву з'єднання, учасник, чи то SMSC
або ESME повинен повторити запит. Протокол
асинхронний, тобто. відправник запиту може
надсилати черговий запит, не чекаючи
відповіді, і відповіді можуть слідувати в будь-якій
послідовності. Усі операції також
діляться на ті, що можуть використовуватись
ESME, які можуть використовуватися SMSC і ті,
які можуть використовуватися обома
сторонами. З'єднання може бути в
наступних станах:

— Відкрито (ще не пройдено автентифікацію)
- Передача
- Прийом
- Прийом та передача
- Закрито

У стані "Відкрито", тобто відразу після
встановлення TCP-з'єднання ESME, бажаючий
передати SMS, має надіслати запит bind_transmitter.
Для прийому – bind_receiver. Для обох дій
відразу - bind_transceiver. У цьому запиті передається
логін та пароль. Якщо підключення встановлено
SMSC, то спочатку він повинен надіслати запит outbind
і в ньому передати логін та пароль, тому що в
цій ситуації вже його права доступу треба
перевіряти. Для прикладу покажу, як випрасувати
команда bind_transmitter:

Заголовок:
DWORD Довжина
DWORD Command = BIND_TRANSMITTER
DWORD Status = 0
DWORD Sequence number

Дані:
Рядок Логін
Рядок Пароль
Рядок Тип системи (наприклад, WWW або Mail)
BYTE Версія протоколу = 0x34
BYTE addr_ton (тип номерів), 0 = default
BYTE addr_npi (Number Plan), 0 = default
Рядок Діапазон номерів, порожній рядок,
якщо провайдер і сам знає, які номери ми
обслуговуємо

Рядки - ASCIIZ, тобто Null-terminated.

Більшість параметрів цього запиту
можуть бути нулями або порожніми рядками. У
відповідь на такий запит прийде відповідь,
якому крім заголовка буде SystemId SMS-центру,
а в полі Status буде нуль у разі успіху. Якщо
встановлено з'єднання для передачі, то ми
маємо право надсилати запити submit_sm, а якщо
встановлено з'єднання для прийому, то треба
чекати на запити deliver_sm, що містять тексти
повідомлень, що надійшли, і обробляти їх.
Завершивши роботу, надсилаємо повідомлення unbind та
відключаємось.

У більшості запитів є купа
параметрів, над якими можна особливо не
паритися та занулювати їх. Так що незважаючи на
значний обсяг документації,
простенький SMS-автовідповідач, на основі
якого можна побудувати якусь
довідкову систему, вийшов у мене
обсягом всього 25 кБ тексту на C++, і тест на
SCTT показав, що все працює, і залишилося
тільки купити доступ до SMSC:).

До кого підключатися

Повідомлення про протокол SMPP для своїх
клієнтів приймають багато опсосу, так що
жодних конкретних посилань. Шукайте інфу на
сайті того ОпСоСу, до яких надаєте перевагу
працювати. Крім того, свій SMS-центр,
працюючий за протоколом SMPP, надає

SMPP (абревіатура: Short message peer-to-peer protocol) у перекладі з англійської означає « Коротке повідомленнярівноправних вузлів» і дозволяє описати взаємодію між SMS сервером та кінцевим клієнтом. Цей протокол належить до найбільш популярних у SMS-провайдерів, які використовують його для обміну текстовими повідомленнямиміж СМС центрами із рівними правами. Для роботи з SMPP протоколом необхідна наявність постійно увімкненого сервера та відповідного ПЗ, сумісного з SMS-шлюзом провайдера.

  • Підтримка різних текстових форматівта wap sms;
  • Надсилання довгих текстів;
  • Двосторонній обмін повідомленнями;
  • Вибір швидкості надсилання;
  • Вибір способу кодування;
  • Розширюваність;
  • Отримання детальних звітів.

Протокол незамінний для регулярного надсилання великого обсягу повідомлень за надійним і високошвидкісному каналу. Тому SMS провайдер зазвичай використовує даний протоколдля обміну SMS та USSD повідомленнямив системах VAS, для підключення різних зовнішніх системі т.д. Дізнатися докладніше про протокол SMPP і про те, як розсилка, Ви зможете, звернувшись до наших фахівців.

  • Підтримувані команди
  • Параметри надсилання повідомлення (SUBMIT_SM) через SMPP
  • Правила роботи зі smpp підключенням
  • Формат Delivery Receipt
  • Зарезервовані коди помилок протоколу smpp
  • додаток

Розшифровку помилок можна знайти у специфікації SMPP 3.4.

Увага: Вам необхідно надіслати список IP адрес, з яких Ви будете
підключатися перед тим, як почати використовувати SMPP.

Параметри підключення за допомогою SMPP

  • system_id - зареєстроване у системі ім'я користувача виду XXXX.X
  • password - пароль користувача
  • Адреса -
  • Порт - 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 пакет з Delivery Receipt повідомленням. Формат Delivery Receipt повідомлення нижче.

Активний варіант передбачає періодичне опитування статусу повідомлення посиланням
QUERY_SM.

Формат Delivery Receipt

"id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done date:YYMMDDhhmm
stat:DDDDDDDD err:E Text: . . . . . . . . ."

Зарезервовані коди помилок під час smpp з'єднання

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