# Отправка FLASHCALL

{% hint style="info" %}
**Мы рекомендуем использовать канал SMS вместе с Flashcall для гарантированной доставки кода вашим пользователям.** \
\
Операторы связи могут блокировать часть отправленных звонков российским абонентам, в связи с этим уровень доставки Flashcall может снизиться.
{% endhint %}

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

<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  | Канал отправки (`FLASHCALL`)                                                                                                                                                                                              |
| senderName<mark style="color:red;">\*</mark>  | string  | Имя отправителя. Допускается любая строка. Звонок будет произведен с номера телефона, последние цифры которого являются кодом подтверждения                                                                               |
| destination<mark style="color:red;">\*</mark> | string  | Номер абонента                                                                                                                                                                                                            |
| content<mark style="color:red;">\*</mark>     | string  | Числовой код, от 3 до 6 символов                                                                                                                                                                                          |
| tags                                          | array   | Теги сообщения (массив строк). Каждый тег должен соответствовать выражению `^\w+$` (допускаются буквы в любом регистре, цифры и нижнее подчеркивание "\_")                                                                |
| callbackUrl                                   | string  | Адрес для отправки callback                                                                                                                                                                                               |
| callbackEvents                                | array   | События, по которым будут отправлены callback (массив строк). При наличии `callbackUrl` и отсутствии `callbackEvents` в запросе, будет отправлен callback по событию `delivered`.                                         |
| ttl                                           | integer | <p>Время жизни сообщения в секундах. По истечении ttl сообщению присваивается финальный статус.</p><p><code>30</code><strong><code>≤</code></strong><code>ttl</code><strong><code>≤</code></strong><code>86400</code></p> |

{% 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 content"
    }
}
-----------------------------------------------------------------------------
{
    "error": {
        "code": 4220,
        "msg": "Invalid msisdn"
    }
}
```

{% endtab %}

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

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

{% endtab %}
{% endtabs %}

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

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

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

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

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

<pre><code>POST https://direct.i-dgtl.ru/api/v1/message
Authorization: Basic QWxhZGRpbjpvc...
Content-Type: application/json
[
  {
<strong>    "channelType": "FLASHCALL",
</strong>    "senderName": "FLASHCALL",
    "destination": "79818268484",
    "content": "1234"
  }
]
</code></pre>

{% 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 '[{"channelType":"FLASHCALL","senderName":"FLASHCALL","destination":"79818268484","content":"1234"}]'
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
В примере указан минимальный набор параметров, который позволяет моментально отправить FLASHCALL-сообщение. Вы можете настроить коллбэки, добавить теги и внутренний идентификатор, используя опциональные параметры, описанные выше на данной странице.&#x20;
{% endhint %}

## Отправка конверсии FLASHCALL

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

Метод используется для того, чтобы сообщить о корректности введенного пользователем кода, отправленного в FLASHCALL-сообщении

#### Headers

| Name          | Type   | Description        |
| ------------- | ------ | ------------------ |
| Authorization | string | `Bearer {TOKEN_1}` |
| Content-Type  | string | `application/json` |

#### Request Body

| Name        | Type   | Description                                                                                                                  |
| ----------- | ------ | ---------------------------------------------------------------------------------------------------------------------------- |
| messageUuid | string | Идентификатор flashcall-сообщения                                                                                            |
| result      | string | <p>Результат ввода кода<br>Код подтвержден -- <code>NUMBER\_VERIFIERD</code><br>Неверный код -- <code>WRONG\_CODE</code></p> |
| code        | string | Код                                                                                                                          |

{% tabs %}
{% tab title="200 Совпадает с ответом на отправку одиночных сообщений" %}

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

{% endtab %}
{% endtabs %}

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

| Параметр | Варианты                                                              |
| -------- | --------------------------------------------------------------------- |
| result   | [Результат отправки FlashCall](/extra/references.md#flashcall-result) |

{% hint style="info" %}
Передача конверсии помогает нам улучшать качество отправки FLASHCALL-сообщений
{% endhint %}

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

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

```
POST https://direct.i-dgtl.ru/api/v1/flashcall-conversion
Authorization: Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Content-Type: application/json
[
  {
    "messageUuid": "063464ec-a34f-4558-90c5-984395000004",
    "result": "NUMBER_VERIFIED",
    "code": "7777"
  }
]
```

{% endtab %}

{% tab title="cURL" %}

```
curl -X POST 'https://direct.i-dgtl.ru/api/v1/flashcall-conversion' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ==' \
-d '[{"messageUuid":"063464ec-a34f-4558-90c5-984395000004","result":"NUMBER_VERIFIED","code":"7777"}]'
```

{% 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/flashcall-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.
