diff --git a/docs/uk/channels/signal.md b/docs/uk/channels/signal.md index f83b03297..7a0395eb1 100644 --- a/docs/uk/channels/signal.md +++ b/docs/uk/channels/signal.md @@ -1,36 +1,36 @@ --- read_when: - Налаштування підтримки Signal - - Налагодження надсилання/отримання в Signal + - Налагодження надсилання/отримання у Signal summary: Підтримка Signal через signal-cli (JSON-RPC + SSE), шляхи налаштування та модель номера title: Signal x-i18n: - generated_at: "2026-04-30T14:57:31Z" + generated_at: "2026-04-30T15:05:54Z" model: gpt-5.5 provider: openai - source_hash: d5f79b34b85b0d963373026d33b066d7865282e9a3619bddd334e67de30940d6 + source_hash: 111b6ebe3bde4e03c7ed432f52d663f0b471f0fc4a4bf835c1ac1972467e0b96 source_path: channels/signal.md workflow: 16 --- -Стан: зовнішня інтеграція CLI. Gateway взаємодіє з `signal-cli` через HTTP JSON-RPC + SSE. +Стан: інтеграція із зовнішнім CLI. Gateway взаємодіє з `signal-cli` через HTTP JSON-RPC + SSE. ## Передумови -- OpenClaw встановлено на вашому сервері (Linux-процес нижче протестовано на Ubuntu 24). -- `signal-cli` доступний на хості, де працює gateway. -- Номер телефону, який може отримати одне перевірочне SMS (для шляху реєстрації через SMS). -- Доступ до браузера для Signal captcha (`signalcaptchas.org`) під час реєстрації. +- OpenClaw встановлено на вашому сервері (потік для Linux нижче протестовано на Ubuntu 24). +- `signal-cli` доступний на хості, де працює Gateway. +- Номер телефону, який може отримати одне SMS для підтвердження (для шляху реєстрації через SMS). +- Доступ до браузера для captcha Signal (`signalcaptchas.org`) під час реєстрації. ## Швидке налаштування (для початківців) 1. Використовуйте **окремий номер Signal** для бота (рекомендовано). -2. Встановіть `signal-cli` (потрібна Java, якщо використовуєте JVM-збірку). +2. Установіть `signal-cli` (потрібна Java, якщо використовуєте JVM-збірку). 3. Виберіть один шлях налаштування: - - **Шлях A (QR-посилання):** `signal-cli link -n "OpenClaw"` і відскануйте за допомогою Signal. - - **Шлях B (реєстрація через SMS):** зареєструйте виділений номер із captcha + перевіркою через SMS. -4. Налаштуйте OpenClaw і перезапустіть gateway. -5. Надішліть перше DM і підтвердьте сполучення (`openclaw pairing approve signal `). + - **Шлях A (QR-зв’язування):** `signal-cli link -n "OpenClaw"` і відскануйте за допомогою Signal. + - **Шлях B (реєстрація через SMS):** зареєструйте виділений номер із captcha + підтвердженням через SMS. +4. Налаштуйте OpenClaw і перезапустіть Gateway. +5. Надішліть перше DM і підтвердьте створення пари (`openclaw pairing approve signal `). Мінімальна конфігурація: @@ -50,24 +50,24 @@ x-i18n: Довідник полів: -| Поле | Опис | -| ----------- | ------------------------------------------------------------ | -| `account` | Номер телефону бота у форматі E.164 (`+15551234567`) | -| `cliPath` | Шлях до `signal-cli` (`signal-cli`, якщо він у `PATH`) | -| `dmPolicy` | Політика доступу до DM (`pairing` рекомендовано) | +| Поле | Опис | +| ----------- | ---------------------------------------------------------- | +| `account` | Номер телефону бота у форматі E.164 (`+15551234567`) | +| `cliPath` | Шлях до `signal-cli` (`signal-cli`, якщо він є в `PATH`) | +| `dmPolicy` | Політика доступу до DM (рекомендовано `pairing`) | | `allowFrom` | Номери телефонів або значення `uuid:`, яким дозволено DM | ## Що це таке - Канал Signal через `signal-cli` (не вбудований libsignal). -- Детермінізована маршрутизація: відповіді завжди повертаються в Signal. -- DM використовують основну сесію агента; групи ізольовані (`agent::signal:group:`). +- Детермінована маршрутизація: відповіді завжди повертаються до Signal. +- DM спільно використовують головний сеанс агента; групи ізольовані (`agent::signal:group:`). -## Записи конфігурації +## Запис конфігурації За замовчуванням Signal дозволено записувати оновлення конфігурації, спричинені `/config set|unset` (потрібно `commands.config: true`). -Вимкніть за допомогою: +Вимкнути можна так: ```json5 { @@ -83,10 +83,10 @@ x-i18n: ## Шлях налаштування A: прив’язати наявний обліковий запис Signal (QR) -1. Встановіть `signal-cli` (JVM або нативну збірку). +1. Установіть `signal-cli` (JVM або native-збірку). 2. Прив’яжіть обліковий запис бота: - `signal-cli link -n "OpenClaw"`, потім відскануйте QR у Signal. -3. Налаштуйте Signal і запустіть gateway. +3. Налаштуйте Signal і запустіть Gateway. Приклад: @@ -104,15 +104,15 @@ x-i18n: } ``` -Підтримка кількох облікових записів: використовуйте `channels.signal.accounts` з конфігурацією для кожного облікового запису та необов’язковим `name`. Див. [`gateway/configuration`](/uk/gateway/config-channels#multi-account-all-channels) для спільного патерну. +Підтримка кількох облікових записів: використовуйте `channels.signal.accounts` із конфігурацією для кожного облікового запису та необов’язковим `name`. Див. [`gateway/configuration`](/uk/gateway/config-channels#multi-account-all-channels) для спільного шаблону. ## Шлях налаштування B: зареєструвати виділений номер бота (SMS, Linux) -Використовуйте це, якщо потрібен виділений номер бота замість прив’язування наявного облікового запису застосунку Signal. +Використовуйте це, коли потрібен виділений номер бота замість прив’язування наявного облікового запису застосунку Signal. -1. Отримайте номер, який може приймати SMS (або голосову перевірку для стаціонарних ліній). - - Використовуйте виділений номер бота, щоб уникнути конфліктів облікового запису/сесії. -2. Встановіть `signal-cli` на хості gateway: +1. Отримайте номер, який може приймати SMS (або голосове підтвердження для стаціонарних номерів). + - Використовуйте виділений номер бота, щоб уникнути конфліктів облікового запису/сеансу. +2. Установіть `signal-cli` на хості Gateway: ```bash VERSION=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/AsamK/signal-cli/releases/latest | sed -e 's/^.*\/v//') @@ -123,9 +123,9 @@ signal-cli --version ``` Якщо використовуєте JVM-збірку (`signal-cli-${VERSION}.tar.gz`), спочатку встановіть JRE 25+. -Підтримуйте `signal-cli` в актуальному стані; upstream зазначає, що старі випуски можуть зламатися через зміни API серверів Signal. +Підтримуйте `signal-cli` в актуальному стані; upstream зазначає, що старі випуски можуть перестати працювати через зміни API серверів Signal. -3. Зареєструйте та перевірте номер: +3. Зареєструйте й підтвердьте номер: ```bash signal-cli -a + register @@ -135,15 +135,15 @@ signal-cli -a + register 1. Відкрийте `https://signalcaptchas.org/registration/generate.html`. 2. Пройдіть captcha, скопіюйте ціль посилання `signalcaptcha://...` з "Open Signal". -3. За можливості запускайте з тієї самої зовнішньої IP-адреси, що й браузерна сесія. -4. Негайно запустіть реєстрацію ще раз (токени captcha швидко спливають): +3. За можливості запускайте з тієї самої зовнішньої IP-адреси, що й сеанс браузера. +4. Негайно запустіть реєстрацію знову (токени captcha швидко спливають): ```bash signal-cli -a + register --captcha '' signal-cli -a + verify ``` -4. Налаштуйте OpenClaw, перезапустіть gateway, перевірте канал: +4. Налаштуйте OpenClaw, перезапустіть Gateway, перевірте канал: ```bash # If you run the gateway as a user systemd service: @@ -154,24 +154,24 @@ openclaw doctor openclaw channels status --probe ``` -5. Сполучіть вашого відправника DM: +5. Створіть пару з вашим відправником DM: - Надішліть будь-яке повідомлення на номер бота. - Підтвердьте код на сервері: `openclaw pairing approve signal `. - Збережіть номер бота як контакт на телефоні, щоб уникнути "Unknown contact". -Реєстрація облікового запису номера телефону через `signal-cli` може деавтентифікувати основну сесію застосунку Signal для цього номера. Надавайте перевагу виділеному номеру бота або використовуйте режим QR-прив’язування, якщо потрібно зберегти наявне налаштування застосунку на телефоні. +Реєстрація облікового запису телефонного номера через `signal-cli` може скасувати авторизацію основного сеансу застосунку Signal для цього номера. Віддавайте перевагу виділеному номеру бота або використовуйте режим QR-зв’язування, якщо потрібно зберегти наявне налаштування телефонного застосунку. Upstream-посилання: - README `signal-cli`: `https://github.com/AsamK/signal-cli` -- Процес captcha: `https://github.com/AsamK/signal-cli/wiki/Registration-with-captcha` -- Процес прив’язування: `https://github.com/AsamK/signal-cli/wiki/Linking-other-devices-(Provisioning)` +- Потік captcha: `https://github.com/AsamK/signal-cli/wiki/Registration-with-captcha` +- Потік зв’язування: `https://github.com/AsamK/signal-cli/wiki/Linking-other-devices-(Provisioning)` ## Режим зовнішнього демона (httpUrl) -Якщо ви хочете керувати `signal-cli` самостійно (повільні холодні старти JVM, ініціалізація контейнера або спільні CPU), запустіть daemon окремо та вкажіть OpenClaw на нього: +Якщо хочете керувати `signal-cli` самостійно (повільні холодні запуски JVM, ініціалізація контейнера або спільні CPU), запустіть демон окремо й укажіть OpenClaw на нього: ```json5 { @@ -184,55 +184,55 @@ Upstream-посилання: } ``` -Це пропускає автоматичний запуск і очікування старту всередині OpenClaw. Для повільних стартів під час автоматичного запуску задайте `channels.signal.startupTimeoutMs`. +Це пропускає автоматичний запуск процесу та очікування запуску всередині OpenClaw. Для повільних запусків під час автоматичного запуску процесу задайте `channels.signal.startupTimeoutMs`. ## Контроль доступу (DM + групи) DM: - За замовчуванням: `channels.signal.dmPolicy = "pairing"`. -- Невідомі відправники отримують код сполучення; повідомлення ігноруються до підтвердження (коди спливають через 1 годину). -- Підтвердження через: +- Невідомі відправники отримують код створення пари; повідомлення ігноруються, доки їх не підтвердять (коди спливають через 1 годину). +- Підтвердьте через: - `openclaw pairing list signal` - `openclaw pairing approve signal ` -- Сполучення є стандартним обміном токенами для Signal DM. Докладніше: [Сполучення](/uk/channels/pairing) +- Створення пари є типовим обміном токеном для DM Signal. Докладніше: [Створення пари](/uk/channels/pairing) - Відправники лише з UUID (з `sourceUuid`) зберігаються як `uuid:` у `channels.signal.allowFrom`. Групи: - `channels.signal.groupPolicy = open | allowlist | disabled`. -- `channels.signal.groupAllowFrom` керує тим, які групи або відправники можуть запускати відповіді групи, коли встановлено `allowlist`; записи можуть бути ідентифікаторами груп Signal (сирі, `group:` або `signal:group:`), номерами телефонів відправників або значеннями `uuid:`. +- `channels.signal.groupAllowFrom` керує тим, які групи або відправники можуть запускати групові відповіді, коли встановлено `allowlist`; записи можуть бути ID груп Signal (сирі, `group:` або `signal:group:`), номери телефонів відправників, значення `uuid:` або `*`. - `channels.signal.groups["" | "*"]` може перевизначати поведінку групи за допомогою `requireMention`, `tools` і `toolsBySender`. - Використовуйте `channels.signal.accounts..groups` для перевизначень на рівні облікового запису в налаштуваннях із кількома обліковими записами. -- Додавання групи Signal до allowlist не вимикає перевірку згадок. Щоб обробляти кожне повідомлення в групі з allowlist, встановіть `channels.signal.groups[""].requireMention=false` або використовуйте стандартне значення групи `"*"`. -- Примітка щодо runtime: якщо `channels.signal` повністю відсутній, runtime повертається до `groupPolicy="allowlist"` для перевірок груп (навіть якщо задано `channels.defaults.groupPolicy`). +- Додавання групи Signal до allowlist через `groupAllowFrom` саме по собі не вимикає обмеження за згадкою. Спеціально налаштований запис `channels.signal.groups[""]` обробляє кожне групове повідомлення, якщо не встановлено `requireMention=true`. +- Примітка щодо виконання: якщо `channels.signal` повністю відсутній, runtime повертається до `groupPolicy="allowlist"` для перевірок груп (навіть якщо встановлено `channels.defaults.groupPolicy`). ## Як це працює (поведінка) -- `signal-cli` працює як daemon; gateway читає події через SSE. -- Вхідні повідомлення нормалізуються у спільний envelope каналу. -- Відповіді завжди маршрутизуються назад на той самий номер або в ту саму групу. +- `signal-cli` працює як демон; Gateway читає події через SSE. +- Вхідні повідомлення нормалізуються у спільний конверт каналу. +- Відповіді завжди маршрутизуються назад до того самого номера або групи. -## Медіа + обмеження +## Медіа + ліміти -- Вихідний текст розбивається на фрагменти до `channels.signal.textChunkLimit` (стандартно 4000). +- Вихідний текст розбивається на частини до `channels.signal.textChunkLimit` (типово 4000). - Необов’язкове розбиття за новими рядками: задайте `channels.signal.chunkMode="newline"`, щоб розбивати за порожніми рядками (межами абзаців) перед розбиттям за довжиною. - Вкладення підтримуються (base64 отримується з `signal-cli`). -- Вкладення голосових нотаток використовують ім’я файлу `signal-cli` як fallback для MIME, коли `contentType` відсутній, тому транскрипція аудіо все одно може класифікувати голосові нотатки AAC. -- Стандартний ліміт медіа: `channels.signal.mediaMaxMb` (стандартно 8). +- Вкладення голосових нотаток використовують назву файла `signal-cli` як резервний MIME, коли `contentType` відсутній, тож аудіотранскрипція все одно може класифікувати голосові нотатки AAC. +- Типове обмеження медіа: `channels.signal.mediaMaxMb` (типово 8). - Використовуйте `channels.signal.ignoreAttachments`, щоб пропускати завантаження медіа. -- Контекст історії групи використовує `channels.signal.historyLimit` (або `channels.signal.accounts.*.historyLimit`), з fallback до `messages.groupChat.historyLimit`. Встановіть `0`, щоб вимкнути (стандартно 50). +- Контекст історії груп використовує `channels.signal.historyLimit` (або `channels.signal.accounts.*.historyLimit`), із fallback до `messages.groupChat.historyLimit`. Установіть `0`, щоб вимкнути (типово 50). ## Індикатори набору + сповіщення про прочитання -- **Індикатори набору**: OpenClaw надсилає сигнали набору через `signal-cli sendTyping` і оновлює їх, доки формується відповідь. +- **Індикатори набору**: OpenClaw надсилає сигнали набору через `signal-cli sendTyping` і оновлює їх, поки виконується відповідь. - **Сповіщення про прочитання**: коли `channels.signal.sendReadReceipts` має значення true, OpenClaw пересилає сповіщення про прочитання для дозволених DM. - Signal-cli не надає сповіщення про прочитання для груп. ## Реакції (інструмент повідомлень) - Використовуйте `message action=react` з `channel=signal`. -- Цілі: E.164 відправника або UUID (використовуйте `uuid:` з виводу сполучення; голий UUID також працює). +- Цілі: E.164 відправника або UUID (використовуйте `uuid:` з виводу створення пари; голий UUID також працює). - `messageId` — це timestamp Signal для повідомлення, на яке ви реагуєте. - Для групових реакцій потрібен `targetAuthor` або `targetAuthorUuid`. @@ -246,20 +246,20 @@ message action=react channel=signal target=signal:group: targetAuthor=u Конфігурація: -- `channels.signal.actions.reactions`: увімкнути/вимкнути дії реакцій (стандартно true). +- `channels.signal.actions.reactions`: увімкнути/вимкнути дії реакцій (типово true). - `channels.signal.reactionLevel`: `off | ack | minimal | extensive`. - `off`/`ack` вимикає реакції агента (інструмент повідомлень `react` поверне помилку). - - `minimal`/`extensive` вмикає реакції агента та задає рівень інструкцій. + - `minimal`/`extensive` вмикає реакції агента й задає рівень підказок. - Перевизначення на рівні облікового запису: `channels.signal.accounts..actions.reactions`, `channels.signal.accounts..reactionLevel`. -## Цілі доставки (CLI/Cron) +## Цілі доставки (CLI/cron) - DM: `signal:+15551234567` (або звичайний E.164). -- UUID DM: `uuid:` (або голий UUID). +- DM за UUID: `uuid:` (або голий UUID). - Групи: `signal:group:`. - Імена користувачів: `username:` (якщо підтримується вашим обліковим записом Signal). -## Усунення несправностей +## Усунення неполадок Спочатку виконайте цю послідовність: @@ -271,18 +271,18 @@ openclaw doctor openclaw channels status --probe ``` -Потім за потреби підтвердьте стан сполучення DM: +Потім за потреби підтвердьте стан створення пари для DM: ```bash openclaw pairing list signal ``` -Поширені збої: +Поширені помилки: -- Daemon доступний, але відповідей немає: перевірте налаштування облікового запису/daemon (`httpUrl`, `account`) і режим прийому. -- DM ігноруються: відправник очікує підтвердження сполучення. -- Повідомлення груп ігноруються: перевірка відправника/згадки для групи блокує доставку. -- Помилки перевірки конфігурації після змін: запустіть `openclaw doctor --fix`. +- Демон доступний, але відповідей немає: перевірте налаштування облікового запису/демона (`httpUrl`, `account`) і режим отримання. +- DM ігноруються: відправник очікує підтвердження створення пари. +- Групові повідомлення ігноруються: обмеження за відправником групи/згадкою блокує доставку. +- Помилки перевірки конфігурації після редагувань: запустіть `openclaw doctor --fix`. - Signal відсутній у діагностиці: підтвердьте `channels.signal.enabled: true`. Додаткові перевірки: @@ -293,14 +293,14 @@ pgrep -af signal-cli grep -i "signal" "/tmp/openclaw/openclaw-$(date +%Y-%m-%d).log" | tail -20 ``` -Для процесу тріажу: [/channels/troubleshooting](/uk/channels/troubleshooting). +Потік triage: [/channels/troubleshooting](/uk/channels/troubleshooting). -## Примітки щодо безпеки +## Примітки з безпеки - `signal-cli` зберігає ключі облікового запису локально (зазвичай `~/.local/share/signal-cli/data/`). - Створіть резервну копію стану облікового запису Signal перед міграцією сервера або перебудовою. -- Залишайте `channels.signal.dmPolicy: "pairing"`, якщо вам явно не потрібен ширший доступ до DM. -- Перевірка через SMS потрібна лише для реєстрації або сценаріїв відновлення, але втрата контролю над номером/обліковим записом може ускладнити повторну реєстрацію. +- Залишайте `channels.signal.dmPolicy: "pairing"`, якщо явно не хочете ширшого доступу до DM. +- Підтвердження через SMS потрібне лише для потоків реєстрації або відновлення, але втрата контролю над номером/обліковим записом може ускладнити повторну реєстрацію. ## Довідник конфігурації (Signal) @@ -312,24 +312,24 @@ grep -i "signal" "/tmp/openclaw/openclaw-$(date +%Y-%m-%d).log" | tail -20 - `channels.signal.account`: E.164 для облікового запису бота. - `channels.signal.cliPath`: шлях до `signal-cli`. - `channels.signal.httpUrl`: повна URL-адреса демона (перевизначає host/port). -- `channels.signal.httpHost`, `channels.signal.httpPort`: прив’язка демона (за замовчуванням 127.0.0.1:8080). -- `channels.signal.autoStart`: автоматично запускати демон (за замовчуванням true, якщо `httpUrl` не задано). +- `channels.signal.httpHost`, `channels.signal.httpPort`: прив’язка демона (типово 127.0.0.1:8080). +- `channels.signal.autoStart`: автоматично запускати демон (типово true, якщо `httpUrl` не задано). - `channels.signal.startupTimeoutMs`: тайм-аут очікування запуску в мс (межа 120000). - `channels.signal.receiveMode`: `on-start | manual`. - `channels.signal.ignoreAttachments`: пропускати завантаження вкладень. - `channels.signal.ignoreStories`: ігнорувати історії від демона. -- `channels.signal.sendReadReceipts`: пересилати підтвердження прочитання. -- `channels.signal.dmPolicy`: `pairing | allowlist | open | disabled` (за замовчуванням: pairing). -- `channels.signal.allowFrom`: список дозволених DM (E.164 або `uuid:`). `open` потребує `"*"`. У Signal немає імен користувачів; використовуйте телефонні номери/UUID-ідентифікатори. -- `channels.signal.groupPolicy`: `open | allowlist | disabled` (за замовчуванням: allowlist). -- `channels.signal.groupAllowFrom`: список дозволених груп; приймає ID груп Signal (необроблені, `group:` або `signal:group:`), номери відправників у форматі E.164 або значення `uuid:`. -- `channels.signal.groups`: перевизначення для окремих груп із ключами за id групи Signal (або `"*"`). Підтримувані поля: `requireMention`, `tools`, `toolsBySender`. +- `channels.signal.sendReadReceipts`: пересилати сповіщення про прочитання. +- `channels.signal.dmPolicy`: `pairing | allowlist | open | disabled` (типово: pairing). +- `channels.signal.allowFrom`: список дозволених для особистих повідомлень (E.164 або `uuid:`). `open` вимагає `"*"`. Signal не має імен користувачів; використовуйте номери телефонів/UUID-ідентифікатори. +- `channels.signal.groupPolicy`: `open | allowlist | disabled` (типово: allowlist). +- `channels.signal.groupAllowFrom`: список дозволених для груп; приймає ідентифікатори груп Signal (необроблені, `group:` або `signal:group:`), номери відправників у форматі E.164 або значення `uuid:`. +- `channels.signal.groups`: перевизначення для окремих груп за ідентифікатором групи Signal (або `"*"`). Підтримувані поля: `requireMention`, `tools`, `toolsBySender`. - `channels.signal.accounts..groups`: версія `channels.signal.groups` для окремого облікового запису в налаштуваннях із кількома обліковими записами. -- `channels.signal.historyLimit`: максимальна кількість повідомлень групи, які потрібно включати як контекст (0 вимикає). -- `channels.signal.dmHistoryLimit`: ліміт історії DM у ходах користувача. Перевизначення для окремих користувачів: `channels.signal.dms[""].historyLimit`. +- `channels.signal.historyLimit`: максимальна кількість групових повідомлень, які включати як контекст (0 вимикає). +- `channels.signal.dmHistoryLimit`: ліміт історії особистих повідомлень у ходах користувача. Перевизначення для окремих користувачів: `channels.signal.dms[""].historyLimit`. - `channels.signal.textChunkLimit`: розмір вихідного фрагмента (символи). -- `channels.signal.chunkMode`: `length` (за замовчуванням) або `newline`, щоб розділяти за порожніми рядками (межами абзаців) перед розбиттям за довжиною. -- `channels.signal.mediaMaxMb`: обмеження для вхідних/вихідних медіа (МБ). +- `channels.signal.chunkMode`: `length` (типово) або `newline`, щоб розбивати за порожніми рядками (межами абзаців) перед розбиттям за довжиною. +- `channels.signal.mediaMaxMb`: ліміт вхідних/вихідних медіа (МБ). Пов’язані глобальні параметри: @@ -340,7 +340,7 @@ grep -i "signal" "/tmp/openclaw/openclaw-$(date +%Y-%m-%d).log" | tail -20 ## Пов’язане - [Огляд каналів](/uk/channels) — усі підтримувані канали -- [Спарювання](/uk/channels/pairing) — автентифікація DM і процес спарювання -- [Групи](/uk/channels/groups) — поведінка групового чату й обмеження за згадками +- [Сполучення](/uk/channels/pairing) — автентифікація особистих повідомлень і потік сполучення +- [Групи](/uk/channels/groups) — поведінка групових чатів і керування згадками - [Маршрутизація каналів](/uk/channels/channel-routing) — маршрутизація сеансів для повідомлень -- [Безпека](/uk/gateway/security) — модель доступу та посилення захисту +- [Безпека](/uk/gateway/security) — модель доступу й посилення захисту