# Руководство по взаимодействию с сервисом

**SMPP** — протокол, описывающий взаимодействие Клиента с SMS-сервером.

Взаимодействие Клиента с SMS-сервером Платформы осуществляется по адресу **`имя_хоста`** порт **`2777`**

#### Настройка SMPP-клиента <a href="#nastroika-smpp-klienta" id="nastroika-smpp-klienta"></a>

Для работы с Платформой по протоколу SMPP, необходимо произвести следующие настройки SMPP-клиента:

_Host:_ имя\_хоста

_Port:_ 2777

| Mode of Сonnections      | Transceiver |
| ------------------------ | ----------- |
| SMPP System ID:          | login\*     |
| SMPP Password:           | password\*  |
| SMPP System type:        | NULL        |
| SMPP Version:            | 3.4         |
| SMS per second:          | 30          |
| Enquire\_link:           | 60 sec.     |
| Transaction timeout:     | 30 sec.     |
| Source Address TON:      | 0           |
| Source Address NPI:      | 0           |
| Destination Address TON: | 1           |
| Destination Address NPI: | 1           |

\* Ваш логин и пароль, полученный при регистрации в сервисе.

При подключении необходимо обратить внимание на частоту отправки пакета **ENQUIRE\_LINK**.

Для исключения избыточной нагрузки и защиты от ошибок в ПО клиентов наша система ограничивает отправку данного пакета не чаще, чем раз в 10 секунд, но рекомендуется ставить 30-60 секунд.

**Поддерживаются следующие кодировки:**

* 7-битная GSM для латинского текста с поддержкой европейских символов − (coding = 0);
* 8-битная ISO-8859-1 (Latin-1) для латинского текста или бинарных данных − (coding = 1);
* UCS2 (UTF-16) для национальных алфавитов (например, русского) − (coding = 2).

**SMPP использует три режима соединения:**

* **bind\_transmitter** - Режим клиент -> сервер. Позволит вам отправлять команды на сервер, но не получать команды от него.
* **bind\_receiver** - Режим клиент <- сервер. Такой режим _не_ позволит вам отправлять команды на отправку сообщений и запросы статусов.
* **bind\_transceiver** - Режим клиент <-> сервер. Универсальный режим соединения - позволит и передавать и принимать команды.

Используйте **`bind_transceiver`**, если вам необходимо получать от сервера статусы сообщений в режиме реального времени. Если же вы собираетесь отправлять сообщения и запрашивать статусы самостоятельно - вам может хватить и **`bind_transmitter`** режима.

В случае неудачной авторизации, **`command_status`** ответа будет равен **ESME\_RBINDFAIL**. В случае успеха - **ESME\_ROK**.

После успешной авторизации вы можете начинать отправлять команды серверу. Если вы использовали **`bind_transceiver`**, то сервер попытается отправить вам статусы сообщений, которые не успел или не смог отправить ранее по каким-либо причинам.
