# Тайм-ауты HTTP-запросов каналов

Тайм-ауты запросов к внешним API каналов задаются через [редактор настроек аккаунта (account config)](https://webim.ru/kb/for-admins/service-pages/account-config-editor.html) в секции `outgoing_http_request_settings`.
Поддерживаются значение по умолчанию и индивидуальные значения для типов каналов.

## Приоритет источников значения

В каждом HTTP-вызове канала используется значение тайм-аута согласно приоритету:

  1. Персональная настройка для типа канала в `outgoing_http_request_settings["channel.<channel_type>"].timeout`

  1. Значение по умолчанию `outgoing_http_request_settings["default"].timeout`

  1. Константа базового класса `BaseChannelAPI.REQUEST_TIMEOUT` (по умолчанию 10 секунд)

Если в account config тайм-аут не задан, будет использован следующий по приоритету источник.

## Где задаётся

Раздел **Настройки аккаунта → Account config**.
Секция: `outgoing_http_request_settings`.

Поддерживаются поля:

  * `timeout` — число (секунды, допускается дробная часть)

  * `require_secure_transport` — логическое (требовать HTTPS)

  * `min_ssl_version` — минимальная версия TLS (например, `TLSv1_2`)

Дополнительные поля могут использоваться для создания HTTP/HTTPS-сессий, но на величину тайм-аута влияет только `timeout`.

## Примеры конфигурации

### Глобальный тайм-аут + персональный для Telegram

```
{
  "outgoing_http_request_settings": {
    "default": {
      "require_secure_transport": true,
      "min_ssl_version": "TLSv1_2",
      "timeout": 10
    },
    "channel.telegram": {
      "require_secure_transport": true,
      "min_ssl_version": "TLSv1_2",
      "timeout": 11
    }
  }
}
```

В этом примере все каналы используют тайм-аут 10 секунд, а Telegram — 11 секунд.

### Только глобальный тайм-аут

```
{
  "outgoing_http_request_settings": {
    "default": { "timeout": 15 }
  }
}
```

Все каналы будут использовать 15 секунд.

## Идентификаторы типов каналов

Ключ для индивидуальной настройки строится по шаблону `channel.<channel_type>`.
Поддерживаемые значения `<channel_type>`:

```
apple_chat
avito
custom
email
email_imap
fb
fb_webim
instagram
instagram_webim
line
odnoklassniki
seventech
skype
telegram
viber
vk
whatsapp_360dialog
whatsapp_gupshup
whatsapp_infobip
whatsapp_vonage
```

(Примеры ключей: `channel.vk`, `channel.whatsapp_360dialog`, `channel.line`)

## Поведение в коде

  * При создании HTTP-сессии канал получает конфигурацию из `outgoing_http_request_settings` и сохраняет тайм-аут для всех последующих запросов.

  * Если канал не нашёл персональную конфигурацию и значение по умолчанию, применяется `BaseChannelAPI.REQUEST_TIMEOUT` (10 с).

  * Логирование может выводить используемую конфигурацию и итоговый тайм-аут, что удобно для диагностики:

  * `Creating session with config: {...}`

  * `request timeout: <число>`

## Ограничения

Изменение через GUI настроек канала для тайм-аута пока не поддерживается. Настройка выполняется через [**account config**](https://webim.ru/kb/for-admins/service-pages/account-config-editor.html).

---

Источник: https://webim.ru/kb/channels/common/http-request-timeouts.html
