Відправлення по SMPP
Повідомлення надсилаються в submit_sm: один PDU на повідомлення або по одному на кожну
частину довгого повідомлення.
Поля
| Поле | Що вказати |
|---|---|
source_addr | Ім'я відправника: до 11 символів, якщо в ньому є щось, крім цифр, інакше — до 15 цифр |
destination_addr | Номер одержувача в міжнародному форматі, лише цифри: 380671234567. Інші символи відкидаються |
data_coding | Як читати байти short_message: 0 — GSM 7-bit, 1 — ASCII, 3 — Latin-1, 8 — UCS-2 |
esm_class | 0x40, коли текст починається з UDH (частина довгого повідомлення), інакше 0 |
short_message | Текст, до 255 октетів в одному PDU |
registered_delivery | Будь-яке значення: звіт надсилається на кожне повідомлення в будь-якому разі |
schedule_delivery_time | Надіслати пізніше, а не зараз. Абсолютний або відносний час, з точністю до хвилини |
validity_period | Скільки повідомлення має сенс доставляти: від хвилини до 72 годин, 72 години, якщо порожньо. Абсолютний або відносний час |
TON і NPI обох адрес, service_type, protocol_id, priority_flag, replace_if_present_flag
і sm_default_msg_id не використовуються: залиште те, що бібліотека надсилає за
замовчуванням. Поле message_payload теж не читається — текст іде лише в short_message.
Ім'я відправника має бути дозволене для вашого облікового запису. Ім'я, зарезервоване
іншим клієнтом, заблоковане чи захищене ім'я або — поки обліковий запис на модерації — ім'я,
ще не підтверджене операторами, відхиляється звітом, а не у відповіді на submit_sm: див. код
err:003 у розділі Звіти про доставку.
Флеш-повідомлення — те, що одразу відкривається на екрані, — надсилається з data_coding
0x10 (GSM 7-bit) або 0x18 (UCS-2). Воно має вміщатися в одну частину.
Відповідь
submit_sm_resp повертає message_id — десяткове число, своє для кожного submit_sm, тобто
для кожної частини. Збережіть його: звіт про доставку несе те саме значення.
Нульовий command_status означає, що повідомлення прийнято. Перевірки балансу, оператора
одержувача та імені відправника йдуть уже після цього, і повідомлення, що їх не пройшло,
отримує звіт REJECTD замість помилки у відповіді. Що приходить у самій відповіді — у розділі
Помилки та обмеження.
Кодування і довжина
| Кодування | Одне повідомлення | Одна частина довгого |
|---|---|---|
| GSM 7-bit | 160 символів | 153 символи |
| UCS-2 | 70 символів | 67 символів |
У GSM 7-bit символи ^ { } \ [ ~ ] | і € займають по два місця. В UCS-2 емодзі займає два.
data_coding каже нам, як читати ваші байти; кодування до оператора обирається за самим
текстом, тож повідомлення латиницею, надіслане в UCS-2, піде як GSM 7-bit. З data_coding
0 байти читаються як символи GSM 7-bit, по одному на октет: звичайні ASCII @, $ і _
перетворюються там на інші символи. Для тексту, який ваша система видає як ASCII чи Latin-1,
ставте 1 або 3.
Перед підрахунком переноси рядків \r\n стають \n, нерозривний пробіл — звичайним, тире
– — дефісом -, а типографські лапки — ".
Довгі повідомлення
Текст, довший за одне повідомлення, надсилається частинами, і обидва способи їх позначити розуміються:
- UDH у тілі кожної частини з
esm_class0x40: елемент склеювання з 8-бітним (0x00) або 16-бітним (0x08) посиланням; - поля SAR
sar_msg_ref_num,sar_total_segmentsіsar_segment_seqnum, коли UDH немає.
Частини можуть приходити в будь-якому порядку. Вони збираються на нашому боці й заново діляться для оператора; набір, що лишається неповним два дні, відкидається без звіту.
Ви платите за стільки частин, скільки надіслали або скільки нарахували ми, — за більшим із двох чисел, як і всюди в кабінеті, тож кількість у звіті збігається з кількістю в рахунку.
Відкладене відправлення і термін дії
schedule_delivery_time притримує повідомлення до вказаної хвилини. Значення, яке ми не
змогли прочитати, ігнорується, і повідомлення йде одразу.
validity_period передається операторові в межах від хвилини до 72 годин. Повідомлення, що
ще чекає на нашому боці, коли його термін минув, — або через 72 години, якщо термін не
задано, — не надсилається: гроші за нього повертаються, а назад приходить звіт EXPIRED.