Sms-центр api

SMPP протокол

підключення

Приклад налаштувань для підключення (формат kannel): group = smsc
smsc = smpp
smsc-id = smsc
host = smpp.smsc.ru
port = 3700
smsc-username =
smsc-password =
system-type = ""
interface-version = 34
source-addr-autodete ct = yes
source-addr-ton = 5
source-addr-npi = 1
dest-addr-ton = 1
dest-addr-npi = 1
validityperiod = 1440
transceiver-mode = true
receive-port = 0
enquire-link-interva l = 60
wait-ack-expire = 0
max-pending-submits = 300
throughput = 100

Максимально можливий інтервал бездіяльності становить 2 хвилини. Протягом цього часу Клієнту необхідно відправити повідомлення або виконати порожню команду ENQUIRE_LINK, інакше з'єднання буде розірвано через не активності.


Приклад додаткових налаштувань для підключення по SSL-протоколу (kannel версії 1.4.4 і вище).
port = 3443
ssl-client-certkey-f ile = "/etc/kannel.pem"
use-ssl = 1
.
Сертифікат можна згенерувати командою (Linux CentOS): / etc / ssl / certs / make-dummy-cert kannel.pem

Логін і пароль використовуються від особистого кабінету, але вони не повинні бути російською мовою.
Даний розділ містить тільки короткий опис SMPP-протоколу. Подробиці дивіться в специфікації.

Завантажити специфікацію протоколу SMPP v3.4 smpp34.zip (500 Кб) smpp34rus.zip (1,1 Mб).

швидкість розсилок

множинні підключення

За замовчуванням сервер обробляє одночасно з одного логіна тільки одне підключення для більш коректною віддачі статусів, тому під час наступного з'єднання раніше підключений з'єднання з таким же логіном буде автоматично завершуватися. Якщо ж необхідно мати кілька одночасних підключень для підвищення швидкості відправки, то можна в налаштуваннях всіх підключень задати наступне параметр (multi connection):
system-type = "MCON2"
або
system-type = "MCON9" Значення після MCON може бути від 1 до 9 і задає кількість одночасних підключень.

Відправка SMS-повідомлення

Для відправки SMS-повідомлення використовуйте команду SUBMIT_SM згідно специфікації.

Підтримуються наступні кодування:
  • 7-бітна GSM для латинського тексту з підтримкою європейських символів - (coding = 0);
  • 8-бітна ISO-8859-1 (ASCII) для латинського тексту або бінарних даних - (coding = 1);
  • UCS2 (UCS-2BE або UTF-16BE) для національних алфавітів (наприклад, російського) - (coding = 2).
Поле coding кодується двома бітами в складеному поле data_coding, тому data_coding = coding * 4.

Команда SUBMIT_MULTI для множинної розсилки поки не реалізована.

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

Сервер також блокує відправку більше 50 повідомлень одному абоненту, які були відправлені з перервою між повідомленнями менше 30-ти секунд, для захисту від флуду і зайвого списання коштів з рахунку Клієнта, так як багато оператори не пропускають велику кількість повідомлень одному абоненту за короткий проміжок часу .

Відправка MMS-повідомлення

Для відправки MMS-повідомлення використовуйте команду SUBMIT_SM з текстом "__MMS__: \ Nsubj: "(Текст" __MMS__ ", двокрапка, пробіл, текст повідомлення, переклад рядка, текст" subj ", двокрапка, тема MMS-повідомлення).

Відправка голосового повідомлення (дзвінок)

Для відправки голосового повідомлення використовуйте команду SUBMIT_SM з текстом "__CALL__: \ Nvoice: "(Текст" __CALL__ ", двокрапка, пробіл, текст повідомлення, новий рядок, слово" voice ", двокрапка, голос, який використовується для озвучування тексту).

Можливі значення для використовуваного голосу:
  • m (за замовчуванням) - чоловічий голос.
  • m2 - чоловічий альтернативний голос.
  • w - жіночий голос.
  • w2 - жіночий альтернативний голос 1.
  • w3 - жіночий альтернативний голос 2.
  • w4 - жіночий альтернативний голос 3.
При відправці голосового повідомлення в кінці тексту можна вказати спеціальну комбінацію "\ n

\ N "(переклад рядка, 3 тильди і знову новий рядок), після якої передати параметр param. Визначальний деякі характеристики дзвінка (більш докладно можна подивитися в описі).

Відправка viber-повідомлення

Для відправки viber-повідомлення використовуйте команду SUBMIT_SM з текстом "__VIBER__: "(Текст" __VIBER__ ", двокрапка, пробіл, текст повідомлення).

При формуванні тексту повідомлення можна використовувати спеціальні макроси для створення кнопки, при натисканні на яку буде відбуватися відкриття браузера і перехід за вказаною в макросі посиланням, а також прикріплювати файли. Більш докладно додаткові можливості при відправці viber-повідомлень описані в документації до http-протоколу.

Відправка HLR-запиту

Для відправки HLR-запиту використовуйте команду SUBMIT_SM з текстом __HLR__. Результат запиту приходить в звичайний статус (Delivery Report), який можна отримати як за SMPP-підключенню, так і по HTTP на свій обробник.

Формат статусу з результатом HLR-запиту, що повертається по SMPP: id: stat: err: imsi: msc: mcc: mnc: cn: net: rcn: rnet:
Опис параметрів:

Назва оператора реєстрації абонента.

Назва роумінговій країни абонента при знаходженні в чужій мережі.

Назва роумінгового оператора абонента при знаходженні в чужій мережі.


Строкові дані, наприклад, країна і оператор, закодовані через функцію urlencode.

Приклад результату HLR-запиту: id: 855469 stat: DELIVRD err: 000 imsi: 250023012345678 msc: 79232510066 mcc: 250 mnc: 02 cn: Russian + Federatio n net: MegaFON + open + Joi nt + Stock + Company rcn: rnet:
Приклад коду на PHP для розбору рядка з результатом HLR-запиту:
$ Dlr = strtr ($ dlr. ":". "="); // $ dlr - рядок статусу
parse_str ($ dlr. $ m); // $ m - масив параметрів, $ m [ "id"], $ m [ "err"], $ m [ "imsi"] і тд.
Приклад розбору через регулярні вирази:
preg_match ( "/ ^ id: (\ d +) stat: (\ w +) err: (\ d +) imsi: (\ d *) msc: (\ d *) mcc: (\ d *) mnc: (\ d * ) cn: ([^] *) net: ([^] *) rcn: ([^] *) rnet: ([^] *) / ". $ dlr. $ m); // $ dlr - рядок статусу
for ($ i = 6; $ i <= 9 ; $i ++)
$ M [$ i] = urldecode ($ m [$ i]);
// $ m - масив параметрів, $ m [1] = id, $ m [2] = status, $ m [3] = err і тд.
Для відправки Ping-SMS використовуйте команду SUBMIT_SM з текстом __PING__.

Перевірка статусу

Отримувати статус доставки відправленого SMS-повідомлення по SMPP-протоколу можна як в автоматичному режимі, отримуючи від сервера відповідну PDU-команду DELIVER_SM відразу після зміни статусу, так і за запитом окремою командою QUERY_SM. Для автоматичного отримання статусу необхідно підключатися в режимі transceiver або receiver і при відправці SMS вказати прапор запиту статусу (registered_delivery). Крім цього, можливо отримувати статуси на HTTP-обробник.