# Viber

## Отправка Viber-сообщения

<mark style="color:green;">`POST`</mark> `https://external-api.i-dgtl.ru/message`

Метод позволяет отправить одиночное Viber-сообщение.

#### Headers

| Name          | Type   | Description                 |
| ------------- | ------ | --------------------------- |
| Content-Type  | string | application/json            |
| Authorization | string | 'nodeID:password' \| base64 |

#### Request Body

| Name            | Type    | Description                                                                                                                                                                                                                             |
| --------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type           | string  | Тип сообщения, имеет постоянное значение оutbound (исходящее).                                                                                                                                                                          |
| addresses       | object  | Объект, содержащий адреса отправителя и получателя.                                                                                                                                                                                     |
| source          | string  | Имя отправителя.                                                                                                                                                                                                                        |
| destination     | string  | Номер телефона получателя. Указывается в международном формате MSISDN, состоящем из кода страны, DEF-кода оператора и номера абонента. Например, российский номер выглядит так: 79001234567, где 7 - код страны (Россия).               |
| body            | object  | Объект, в котором передаётся содержимое сообщения.                                                                                                                                                                                      |
| bodyType        | string  | Тип сообщения (Viber).                                                                                                                                                                                                                  |
| content         | string  | Контент сообщения. Ниже описаны возможные варианты содержимого.                                                                                                                                                                         |
| nodeId          | integer | Номер ноды                                                                                                                                                                                                                              |
| requestDelivery | boolean | Указывает, cледует ли предоставлять отчёт о доставке после отправки сообщения (true\|false).                                                                                                                                            |
| expirationDate  | integer | <p>Время, до которого будет ожидаться получение статуса от оператора.<br>Тип значения - <strong>timestamp</strong> в миллисекундах или в формате ISO 8601.<br>По умолчанию составляет 24 часа с момента отправки сообщения.<br><br></p> |

::::{tab-set}

:::{tab-item} 200 В случае успешного запроса возвращается ответ, в котором указан идентификатор сообщения и время отправки сообщения в формате Unix Timestamp.

```
{
    "id": "41937aa1-6322-1201-8816-aa0003424933",
    "timestamp": 1632212018852,
    "code": 200
}
```
:::


:::{tab-item} 400 Неверный синтаксис запроса

```
{
    "timestamp": 1632212054610,
    "code": 400,
    "description": "incorrect request body"
}
```
:::

::::


## Текстовое сообщение

Для отправки текстового VIBER-сообщения используется следующий запрос:

```
POST https://external-api.i-dgtl.ru/message
Authorization: Basic Mzk5OTk6MTIzNjU0
Content-Type: application/json

{
    "@type": "outbound",
    "addresses": {
        "source": "Testing",
        "destination": "79500197493"
    },
    "body": {
        "bodyType": "viber",
        "content": "Have a nice day!"
    },
    "nodeId": 31937,
    "requestDelivery": true
}
```

| Параметр | Тип                                   | Описание                                                                                    |
| -------- | ------------------------------------- | ------------------------------------------------------------------------------------------- |
| content  | <p>string</p><p><em>required</em></p> | <p>Текст сообщения.</p><p>Объём отправляемого текста не должен превышать 1000 символов.</p> |

## Сообщение с графическим вложением

Для отправки VIBER-сообщения с картинкой используется следующий запрос:

```
POST https://external-api.i-dgtl.ru/message
Authorization: Basic Mzk5OTk6MTIzNjU0
Content-Type: application/json

{
    "@type": "outbound",
    "addresses": {
        "source": "Testing",
        "destination": "79500197493"
    },
    "body": {
        "bodyType": "viber",
        "content": "{\"content_type\":\"image\",\"imageUrl\":\"<ссылка на изображение>\"}"
    },
    "nodeId": 31937,
    "requestDelivery": true
}

```

| Параметр      | Тип                                   | Описание               |
| ------------- | ------------------------------------- | ---------------------- |
| content\_type | <p>string</p><p><em>required</em></p> | Тип контента (`image`) |
| image\_URL    | <p>string</p><p><em>required</em></p> | Ссылка на изображение  |

::::::{tip}
* так как параметр content\_type является строкой, двойные кавычки необходимо экранировать при помощи обратной косой черты;
* поддерживаемые форматы изображений - JPEG и PNG;
* оптимальный размер изображения - 400x400 пикселей;
* Viber может не отображать некоторые изображения в зависимости от платформы получателя (iOS, Android) и/или наличия HTTPS. Для генерации гарантированно корректной ссылки на изображение обратитесь в техническую поддержку i-Digital.
::::::

## Сообщение с интерактивными элементами <a href="#button" id="button"></a>

Для отправки VIBER-сообщения с интерактивными элементами (кнопкой и опционально изображением) используется следующий запрос:

```
POST https://external-api.i-dgtl.ru/message
Authorization: Basic Mzk5OTk6MTIzNjU0
Content-Type: application/json

{
    "@type": "outbound",
    "addresses": {
        "source": "Testing",
        "destination": "79500197493"
    },
    "body": {
        "bodyType": "viber",
        "content":"{\"content_type\":\"button\",\"text\":\"текст сообщения\",\"caption\":\"текст кнопки\",\"action\":\"tel:+70000000000\",\"imageUrl\":\"ссылка на изображение\"}"
    },
    "nodeId": 31937,
    "requestDelivery": true
} 
```

| Параметр      | Тип                                   | Описание                                                                                                                                                                                                                                                                                                             |
| ------------- | ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| content\_type | <p>string</p><p><em>required</em></p> | Тип контента (`button`)                                                                                                                                                                                                                                                                                              |
| text          | <p>string</p><p><em>required</em></p> | <p>Текст сообщения; </p><p>От 1 до 1000 символов</p>                                                                                                                                                                                                                                                                 |
| caption       | <p>string</p><p><em>required</em></p> | <p>Текст для кнопки</p><p>От 1 до 30 символов</p>                                                                                                                                                                                                                                                                    |
| action        | <p>string</p><p><em>required</em></p> | <p></p><p> В качестве действия можно указать:</p><ul><li>ссылку, на которую будет выполнен переход после нажатия на кнопку;</li><li>номер телефона в формате tel:+СХХХХХХХХХХ, где С – код страны, Х – номер телефона. После нажатия на кнопку пользователю будет предложено позвонить по номеру телефона.</li></ul> |
| imageUrl      | <p>string</p><p><em>optional</em></p> | Ссылка на изображение, которое будет передано в сообщении                                                                                                                                                                                                                                                            |

