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

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

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

### Настройка SMPP-клиента

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

*Host:* имя\_хоста

*Port:* 2775&#x20;

| 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           |

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

{% hint style="info" %}
При подключении необходимо обратить внимание на частоту отправки пакета **ENQUIRE\_LINK**.&#x20;

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

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

* 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`**, то сервер попытается отправить вам статусы сообщений, которые не успел или не смог отправить ранее по каким-либо причинам.
