# Отправка VIBER

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

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

Метод позволяет отправлять массив одиночных сообщений **(от 1 до 1000)**

#### Headers

| Name                                            | Type   | Description        |
| ----------------------------------------------- | ------ | ------------------ |
| Authorization<mark style="color:red;">\*</mark> | string | `Basic {TOKEN_1}`  |
| Content-Type<mark style="color:red;">\*</mark>  | string | `application/json` |

#### Request Body

| Name                                          | Type    | Description                                                                                                                                                                                                                                                                                              |
| --------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| channelType<mark style="color:red;">\*</mark> | string  | Канал отправки (`VIBER`)                                                                                                                                                                                                                                                                                 |
| senderName<mark style="color:red;">\*</mark>  | string  | Имя отправителя. Допускаются VIBER-имена в статусе "Одобрено"                                                                                                                                                                                                                                            |
| destination<mark style="color:red;">\*</mark> | string  | Номер абонента                                                                                                                                                                                                                                                                                           |
| content<mark style="color:red;">\*</mark>     | object  | Контент сообщения. Ниже описаны возможные варианты содержимого.                                                                                                                                                                                                                                          |
| tags                                          | array   | Теги сообщения (массив строк). Каждый тег должен соответствовать выражению `^\w+$` (допускаются буквы в любом регистре, цифры и нижнее подчеркивание "\_")                                                                                                                                               |
| useLocalTime                                  | boolean | <p>Флаг, отвечающий за таймзону, в которой будет отправлено сообщение:<br><strong><code>true</code></strong> – отправка в таймзоне абонента<br><strong><code>false</code></strong> – отправка по МСК<br><em>По умолчанию true</em></p>                                                                   |
| localSendTime                                 | string  | <p>Нижняя граница допустимого времени отправки сообщения (с учетом значения<code>useLocalTime</code>)<br>Дата в формате <code>YYYY-MM-DD hh:mm:ss</code> в диапазоне от (текущее время в UTC - 12 часов) до (текущее время в UTC + 7 дней)<br><em>По умолчанию сообщение будет отправлено сразу</em></p> |
| localCompletionTime                           | string  | Верхняя граница допустимого времени отправки сообщения (с учетом `useLocalTime`) в диапазоне от `localSendTime` до (текущее время в UTC + 70 дней)                                                                                                                                                       |
| ttl                                           | integer | <p>Время жизни сообщения в секундах. По истечении ttl сообщению устанавливается финальный статус.<br><code>60 ≤ ttl ≤ 86400</code></p>                                                                                                                                                                   |
| hours                                         | array   | Допустимые часы отправки (массив чисел). В массиве могут быть переданы целые числа от 0 до 23, каждое из которых соответствует разрешенному для отправки интервалу с учетом `useLocalTime`; значения должны быть уникальны.                                                                              |
| days                                          | array   | Допустимые дни отправки (массив чисел). В массиве могут быть переданы целые числа от 1 (пн) до 7 (вс), каждое из которых соответствует разрешенному для отправки дню недели; значения должны быть уникальны.                                                                                             |
| shortUrl                                      | boolean | <p>Флаг, отвечающий за сокращение ссылок в сообщении:<br><code>true</code> - ссылки в тексте сообщения будут сокращены<br>По умолчанию false</p>                                                                                                                                                         |
| callbackUrl                                   | string  | Адрес для отправки callback                                                                                                                                                                                                                                                                              |
| callbackEvents                                | array   | События, по которым будут отправлены callback (массив строк). При наличии `callbackUrl` и отсутствии `callbackEvents` в запросе, будет отправлен callback по событию `delivered`.                                                                                                                        |
| externalMessageId                             | string  | Внутренний id сообщения в вашей системе. До 100 символов.                                                                                                                                                                                                                                                |

{% tabs %}
{% tab title="200" %}
В случае успешного запроса возвращается ответ, в котором перечислены идентификаторы сообщений и коды результата. При значении errors = false гарантируется, что все переданные сообщения успешно созданы.

```
{
  "errors": false,
  "items": [
    {
      "messageUuid": "063474ec-a34f-4558-90c5-984395000004",
      "code": 201
    },
    {
      "messageUuid": "063564ec-a34f-4558-90c5-984395000005",
      "code": 201
    }
  ]
}
```

{% endtab %}

{% tab title="401" %}
Использование невалидного токена / отсутствие заголовка авторизации.

{% tabs %}
{% tab title="4012" %}

```
{
    "error": {
        "code": 4012,
        "msg": "Bad credentials"
    }
}
```

{% endtab %}

{% tab title="4010" %}

```
{
    "error": {
        "code": 4010,
        "msg": "Not Authenticated"
    }
}
```

{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="403" %}
Использование неподходящего токена.

```
{
    "error": {
        "code": 4030,
        "msg": "Access Denied"
    }
}
```

{% endtab %}

{% tab title="422" %}
Невалидные параметры в теле запроса; ниже приведены несколько примеров ответа.

```
{
    "error": {
        "code": 4220,
        "msg": "Invalid msisdn"
    }
}
-----------------------------------------------------------------------------
{
    "error": {
        "code": 4220,
        "msg": "Invalid text length in viber content (0)"
    }
}
-----------------------------------------------------------------------------
{
    "error": {
        "code": 4220,
        "msg": "Invalid caption length in viber content (3)"
    }
}
-----------------------------------------------------------------------------
{
    "error": {
        "code": 4220,
        "msg": "Invalid caption length in viber content (3)"
    }
}
```

{% endtab %}

{% tab title="402" %}
Payment Required. Недостаточно средств на балансе.

```
{
    "error": {
        "code": 402,
        "msg": "Insufficient funds"
    }
}
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Рекомендуемое время ожидания ответа: 70 секунд.\
Как правило, ответ на запрос возвращается не более чем за несколько секунд, но таймаут величиной в 70 секунд позволяет гарантированно получить ответ на запрос, в том числе в ситуациях повышенной нагрузки.
{% endhint %}

{% hint style="info" %}
Для использования личного домена в сокращенных ссылках необходимо обратиться в поддержку
{% endhint %}

Возможные варианты перечислений:

| Параметр       | Варианты                                                              |
| -------------- | --------------------------------------------------------------------- |
| callbackEvents | [События для отправки callback](/extra/references.md#callback-events) |

## Текстовое сообщение <a href="#text" id="text"></a>

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

```
{
  "contentType": "text",
  "text": "текст viber-сообщения"
}
```

| Параметр    | Тип                                   | Описание                                                                                         |
| ----------- | ------------------------------------- | ------------------------------------------------------------------------------------------------ |
| contentType | <p>string</p><p><em>required</em></p> | Тип контента (`text`)                                                                            |
| text        | <p>string</p><p><em>required</em></p> | <p>Текст сообщения; строка в кодировке UTF-8 без Byte Order Mark</p><p>От 1 до 1000 символов</p> |

## Сообщение с графическим вложением <a href="#image" id="image"></a>

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

```
{
  "contentType": "image",
  "imageUrl": "<ссылка на изображение>"
}
```

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

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

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

```
{
  "contentType": "button",
  "text": "текст viber-сообщения",
  "caption": "текст кнопки",
  "action": "<ссылка на кнопке>",
  "imageUrl": "<ссылка на изображение>"
}
```

| Параметр    | Тип                                   | Описание                                                                                         |
| ----------- | ------------------------------------- | ------------------------------------------------------------------------------------------------ |
| contentType | <p>string</p><p><em>required</em></p> | Тип контента (`button`)                                                                          |
| text        | <p>string</p><p><em>required</em></p> | <p>Текст сообщения; строка в кодировке UTF-8 без Byte Order Mark</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> | Ссылка для кнопки                                                                                |
| imageUrl    | <p>string</p><p><em>optional</em></p> | Ссылка на изображение                                                                            |

## Пример запроса с минимальным набором параметров <a href="#example" id="example"></a>

В примере ниже указан минимально необходимый набор параметров для отправки VIBER-сообщения.

{% tabs %}
{% tab title="JSON" %}

```
POST https://direct.i-dgtl.ru/api/v1/message
Authorization: Basic QWxhZGRpbjpvc...
Content-Type: application/json
[
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "destination": "7818242882",
    "content": {
      "contentType": "text",
      "text": "Текст VIBER-сообщения"
    }
  }
]
```

{% endtab %}

{% tab title="cURL" %}

```
curl -X POST 'https://direct.i-dgtl.ru/api/v1/message' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic QWxhZGRpbjpvc...' \
-d '[{"senderName":"SENDER","channelType":"VIBER","content":{"contentType":"text","text":"текст сообщения"},"destination":"7818242882"}]
```

{% endtab %}
{% endtabs %}

## Пример запроса со всеми параметрами <a href="#example" id="example"></a>

В примере присутствуют объекты VIBER-сообщений со всеми возможными типами содержимого

{% tabs %}
{% tab title="JSON" %}

```
POST https://direct.i-dgtl.ru/api/v1/message
Authorization: Basic QWxhZGRpbjpvc...
Content-Type: application/json
[
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "content": {
      "contentType": "text",
      "text": "текст сообщения https://domain.com"
    },
    "destination": "7818242882",
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "shortUrl": true,
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read",
      "click"
    ],
    "useLocalTime": true,
    "ttl": 43200,
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  },
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "destination": "7818242882",
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read"
    ],
    "content": {
      "contentType": "button",
      "text": "текст сообщения",
      "caption": "текст кнопки",
      "action": "<ссылка на кнопке>",
      "imageUrl": "<ссылка на изображение>"
    },
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "useLocalTime": true,
    "ttl": 43200,
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  },
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read"
    ],
    "destination": "7818242882",
    "content": {
      "contentType": "image",
      "imageUrl": "<ссылка на изображение>"
    },
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "useLocalTime": true,
    "ttl": 43200,
    "externalMessageId": "10898",
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  }
]
```

{% endtab %}

{% tab title="cURL" %}

```
curl -X POST 'https://direct.i-dgtl.ru/api/v1/message' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==' \
-d '[{"senderName":"SENDER","channelType":"VIBER","content":{"contentType":"text","text":"текст сообщения"},"destination":"7818242882","localSendTime":"2020-06-15 18:00:00","localCompletionTime":"2020-06-16 21:00:00","callbackUrl":"https://company.com/callback","callbackEvents":["delivered","read"],"useLocalTime":true,"ttl":43200,"hours":[12,13,14],"days":[1,2],"tags":["tag1","tag2"]},{"senderName":"SENDER","channelType":"VIBER","destination":"7818242882","callbackUrl":"https://company.com/callback","callbackEvents":["delivered","read"],"content":{"contentType":"button","text":"текст сообщения","caption":"текст кнопки","action":"<ссылка на кнопке>","imageUrl":"<ссылка на изображение>"},"localSendTime":"2020-06-15 18:00:00","localCompletionTime":"2020-06-16 21:00:00","useLocalTime":true,"ttl":43200,"hours":[12,13,14],"days":[1,2],"tags":["tag1","tag2"]},{"senderName":"SENDER","channelType":"VIBER","callbackUrl":"https://company.com/callback","callbackEvents":["delivered","read"],"destination":"7818242882","content":{"contentType":"image","imageUrl":"<ссылка на изображение>"},"localSendTime":"2020-06-15 18:00:00","localCompletionTime":"2020-06-16 21:00:00","useLocalTime":true,"ttl":43200,"hours":[12,13,14],"days":[1,2],"tags":["tag1","tag2"]}]'
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://api.docs.direct.i-dgtl.ru/messages/viber-sending.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
