---
title: "Як написати власний текст сповіщення та налаштувати вебхуки"
slug: "webhooks-and-messages"
kind: "HELP_ARTICLE"
category: "alerts"
locale: "uk"
canonical: "https://app.forecastcity.com/uk/help/alerts/webhooks-and-messages"
published: "2026-09-08T17:58:35.210Z"
updated: "2026-10-28T00:26:49.564Z"
description: "Дізнайтеся, що містить текст сповіщення ForecastCity, додавайте власні слова й змінні та надсилайте сповіщення на вебхук у форматах Raw JSON, Discord чи Slack."
---

# Як написати власний текст сповіщення та налаштувати вебхуки

Кожне сповіщення надсилає одне повідомлення в усі позначені місця доставки. Автоматичний текст сповіщення вказує, що сталося, ціну в ту мить і чи продовжує сповіщення працювати. Додайте нотатку про свій торговий план, щоб бачити заплановані дії ще до відкриття графіка. Налаштувати сповіщення та його текст просто, швидко й точно. Введіть текст у редакторі або скажіть чи напишіть **AI Trading Assistant** голосом або текстом.

Якщо ви використовуєте власне програмне забезпечення, Discord або Slack, вебхук надсилає кожне сповіщення і туди без потреби копіювати щось вручну. У цьому посібнику розглянуто обидві можливості.

Приклад: сповіщення для EURUSD, яке спрацьовує, коли ціна перетинає рівень 1.09 знизу вгору на графіку 5m.

## Що містить автоматичний текст сповіщення

Коли поле **Message** порожнє, сповіщення самостійно формує текст під час спрацьовування. Для нашого прикладу повідомлення має такий вигляд:

```
EURUSD crossed above 1.09
Price 1.0901.
This alert is now off. It was set to fire once.
```

Перший рядок описує, що сталося, словами редактора сповіщень. Другий рядок наводить числові значення на ту мить. Останній рядок вказує, чи продовжує сповіщення працювати. У прикладі використано варіант **Once only**, тому сповіщення тепер вимкнено. Із іншими варіантами Trigger останній рядок має вигляд «This alert stays on.» (це сповіщення продовжує працювати).

Інші сповіщення будуються в тому самому порядку. Ось кілька прикладів першого рядка разом із рядком числових даних під ним:

-   Лінія: «GBPJPY touched 1h Resistance R1» та «Price 210.16, line at 210.20.» (ціна торкнулася лінії опору 1h Resistance R1; ціна 210.16, лінія на 210.20).
    
-   Пробій лінії: «GBPJPY broke above 1h Resistance R1» та «The 1h candle closed at 210.32, above the line at 210.20.» (ціна пробила лінію опору знизу вгору; годинна свічка закрилася на 210.32, вище лінії на 210.20).
    
-   Індикатор: «BTCUSD: 1h RSI(14) crossed above 70» та «RSI(14) was 71.4 when the 1h candle closed at 105240.50.» (індикатор RSI(14) на 1h перетнув 70 знизу вгору; значення становило 71.4 на момент закриття свічки).
    
-   Зміна прогнозу: «GBPJPY: 1h forecast turned bearish» та «Before: bullish above 209.80. Now: bearish below 209.40.» (прогноз на 1h змінився на ведмежий; раніше бичачий вище 209.80, тепер ведмежий нижче 209.40).
    

Сповіщення з кількома умовами повідомляє, скільки умов виконано. Далі воно наводить по одному рядку для кожної виконаної умови:

```
BTCUSD: both conditions met
• Price crossed above 105000: the 1h candle closed at 105240.50
• 1h RSI(14) is above 55 (now 58.2)
This alert stays on.
```

Якщо умов більше, перший рядок матиме вигляд, наприклад, «all 3 conditions met» (усі 3 умови виконано) або «2 of 3 conditions met» (виконано 2 з 3 умов). Коли виконано лише одну умову, наприклад зі зв'язкою **or**, перший рядок називає цю умову, а нижче йдуть її значення.

## Як написати власний текст сповіщення

1.  Відкрийте редактор сповіщень і перейдіть на вкладку **Options**.
    
2.  Натисніть рядок **Message**. Поки поле порожнє, у ньому відображається Auto. Під ним відкриється текстове поле.
    
3.  Введіть свій текст сповіщення. Поле вміщує до 400 символів.
    
4.  Щоб додати поточне значення, розгорніть список **Available variables** під полем. Скопіюйте змінну точно разом із подвійними фігурними дужками.
    

![Розгорнутий рядок Message на вкладці Options із порожнім полем, поясненням під ним і списком Available variables.](https://m.forecastcity.com/t/tnt_forecastcity/media/b4/b480142e20ce43cec05e3313cedc9941ceea0b334c3b3dda3ae8680099c0f69b.png)

Поле Message відкрите й досі порожнє, тому сповіщення надсилає автоматичний текст.

1.  **Automatic message**: порожнє поле. Введіть сюди власні слова або залиште його порожнім.
    
2.  Рядок під полем: «Leave it blank and the alert says what happened and at what price. A message of your own is sent first, with that under it.», тобто якщо залишити поле порожнім, сповіщення напише, що сталося і за якої ціни, а ваш власний текст надсилається першим рядком над цими даними.
    
3.  **Available variables**: поточні значення, які можна додати до тексту сповіщення.
    

Ваші слова стають першим рядком, а автоматичний текст іде слідом за ними. Для нашого прикладу такий текст:

```
{{symbol}} on {{timeframe}}: check the 1h trend before entering.
```

надійде в такому вигляді:

```
EURUSD on 5m: check the 1h trend before entering.
EURUSD crossed above 1.09. Price 1.0901.
This alert is now off. It was set to fire once.
```

Ціна та умова вже містяться в рядках під вашими словами. Використовуйте власний текст для того, чого немає в автоматичних рядках, наприклад для нагадування про торговий план.

Введений текст також стає назвою сповіщення у списку Alerts. Без власного тексту у списку відображається назва, сформована з умови. Для цінового рівня назва коротка, наприклад «EURUSD crossing up 1.09». Лінія або кілька умов записуються так, як їх формулює редактор, наприклад «GBPJPY: 1h Price touches 1h Resistance R1». Коли ви змінюєте умову, ця назва змінюється разом із нею. Коли ви знову відкриваєте сповіщення, поле **Message** залишається порожнім. Сповіщення, збережені раніше без тексту, також показують назву в такому форматі.

## Що показує кожне місце доставки

Кожне місце доставки отримує те саме повідомлення, оформлене відповідно до формату цього місця:

<table><thead><tr><th>Місце доставки</th><th>Що відображається</th></tr></thead><tbody><tr><td>Повідомлення в застосунку</td><td>Перший рядок жирним шрифтом, а числові дані під ним.</td></tr><tr><td><strong>Notify my devices</strong></td><td>Перший рядок як заголовок, а інші рядки під ним.</td></tr><tr><td><strong>Send to MetaTrader</strong></td><td>Перший рядок як заголовок, а інші рядки під ним. MetaTrader показує власний час поруч із повідомленням.</td></tr><tr><td><strong>Telegram</strong></td><td>Текст повідомлення, час у вашому часовому поясі та посилання на графік.</td></tr><tr><td><strong>Send email</strong></td><td>Текст повідомлення з датою й часом у вашому часовому поясі.</td></tr><tr><td><strong>Webhook URL</strong></td><td>Discord і Slack отримують повідомлення із часом у UTC. Із форматом <strong>Raw JSON</strong> ваша програма отримує змінні, наведені нижче.</td></tr></tbody></table>

Telegram записує час у такому вигляді: «24 Sep, 11:02 London time». Якщо часовий пояс неправильний, виберіть потрібний у полі **Timezone** на сторінці **Your profile**. Коли ForecastCity не знає вашого часового поясу, час вказується в UTC.

Посилання в повідомленні Telegram, листі email, push-повідомленні на телефоні або спливному вікні MetaTrader відкриває графік цього інструмента з панеллю Alerts. Для більшості сповіщень 4CM-AI воно відкриває графік із вікном **Alert observation** цього спрацьовування.

## Як додати поточні значення за допомогою змінних

Під час спрацьовування сповіщення кожна змінна замінюється відповідним значенням. Ось змінні зі списку **Available variables**:

<table><thead><tr><th>Змінна</th><th>Що підставляється</th><th>Приклад</th></tr></thead><tbody><tr><td><code>{{symbol}}</code></td><td>Інструмент (тикер)</td><td>EURUSD</td></tr><tr><td><code>{{price}}</code> і <code>{{close}}</code></td><td>Ціна в момент спрацьовування сповіщення</td><td>1.0901</td></tr><tr><td><code>{{condition_text}}</code></td><td>Що сталося, без назви інструмента</td><td>Price crossed above 1.09</td></tr><tr><td><code>{{condition}}</code></td><td>Умова у вигляді короткого коду</td><td>CROSSING_UP 1.09</td></tr><tr><td><code>{{timeframe}}</code></td><td>Таймфрейм сповіщення</td><td>5m</td></tr><tr><td><code>{{time_iso}}</code></td><td>Дата й час у UTC</td><td>2026-09-24 10:02 UTC</td></tr><tr><td><code>{{time}}</code></td><td>Той самий час у секундах для програм</td><td>1790244120</td></tr><tr><td><code>{{time_now}}</code></td><td>Момент надсилання повідомлення у вигляді числа</td><td>1790244121</td></tr><tr><td><code>{{exchange}}</code></td><td>Джерело котирувань</td><td>TwelveData</td></tr><tr><td><code>{{status}}</code></td><td>Чи продовжує сповіщення працювати</td><td>This alert stays on.</td></tr><tr><td><code>{{alert_url}}</code></td><td>Посилання на графік цього інструмента з вашими сповіщеннями</td><td>вебадреса</td></tr><tr><td><code>{{name}}</code></td><td>Ваш текст сповіщення з підставленими значеннями змінних або назва зі списку Alerts</td><td>EURUSD crossing up 1.09</td></tr></tbody></table>

Для лінії змінна `{{condition_text}}` має вигляд «Price touched 1h Resistance R1». Якщо умов кілька, вона з'єднує виконані умови словом and. Після спрацьовування сповіщення з варіантом **Once only** змінна `{{status}}` містить «This alert is now off. It was set to fire once.». Для сповіщення з кількома умовами, лінією або індикатором змінна `{{condition}}` має значення `TREE`. Ця змінна призначена як код для програм.

Для сповіщень 4CM-AI змінна `{{forecast_summary}}` підсумовує зміну прогнозу, а `{{forecast_symbol}}` містить тикер прогнозу. Змінна `{{forecast_cycle}}` є лічильником, який збільшується щоразу, коли сповіщення починає новий цикл спостереження. Повідомлення зі змінною `{{forecast_summary}}` не отримує автоматичних рядків унизу, оскільки підсумок уже описує, що сталося.

Змінні `{{price}}` і `{{close}}` залишаються порожніми для більшості сповіщень 4CM-AI, оскільки вони не прив'язані до однієї ціни. Змінна `{{time_iso}}` використовує час UTC, тому він може відрізнятися від годинника на вашому екрані. Неіснуюча змінна залишається точно такою, як ви її ввели: написана з помилкою `{{prices}}` надійде як `{{prices}}`.

## Як надсилати сповіщення на вебхук

Вебхук надсилає кожне сповіщення на вебадресу, де його приймає ваша власна програма, канал Discord або канал Slack. Ваш тарифний план має включати підтримку вебхуків.

1.  На вкладці Options у розділі Notifications позначте прапорець **Webhook URL**. З'являться поле адреси, вибір Format і поле тіла запиту.
    
2.  Вставте адресу, яку слухає ваш одержувач. Вона має починатися з `http://` або `https://`.
    
3.  Виберіть для **Format** значення **Raw JSON** і залиште поле тіла запиту порожнім.
    
4.  Натисніть кнопку **Create** або **Save**, якщо ви редагували сповіщення.
    

![Позначений прапорець Webhook URL з адресою, вибраним форматом Raw JSON і порожнім полем тіла запиту.](https://m.forecastcity.com/t/tnt_forecastcity/media/9e/9e711afc65b24ebfe70a8e091cc4006b5f9d7d57d50d61b67e5ee920f8ab4877.png)

Опцію Webhook URL позначено, вказано адресу та вибрано формат Raw JSON. Порожнє поле тіла запиту надсилає дані за замовчуванням.

1.  Адреса, яку слухає ваш одержувач. Використовуйте стандартні порти: 80 або 443.
    
2.  **Format**: значення Raw JSON для власного програмного забезпечення або Discord чи Slack для відповідних сервісів.
    

Коли поле тіла запиту порожнє, одержувач отримує об'єкт JSON з усіма змінними з таблиці, а також поля `alertId` і `triggerId`. Ці два поля ідентифікують саме сповіщення та конкретне спрацьовування. Перегляньте одну реальну доставку, перш ніж створювати логіку, яка покладається на ці поля.

Під полем редактор показує адресу сервера, з якої надходять наші запити. Додайте її до списку дозволених, якщо ваш одержувач приймає запити лише з відомих адрес.

### Вимоги до адреси вебхука

-   Публічна адреса на стандартному порті: 80 для http, 443 для https. Повідомлення на інші порти, на localhost або на адреси в приватній мережі не надсилаються.
    
-   Без імені користувача чи пароля всередині адреси.
    
-   Відповідь протягом 3 секунд безпосередньо від цієї адреси. Перенаправлення (redirect) на іншу адресу вважається помилкою.
    

Редактор перевіряє лише те, що адреса починається з `http://` або `https://`. Інші вимоги перевіряються під час надсилання повідомлення, тому протестуйте свою адресу за допомогою реального сповіщення. Для цінових і технічних сповіщень у разі тимчасової помилки одержувача система робить ще до двох спроб доставки. Повідомлення сповіщення 4CM-AI не надсилається повторно після тайм-ауту або помилки сервера, оскільки ваш одержувач міг уже відреагувати на нього.

## Як написати власне тіло запиту вебхука

Поле тіла запиту приймає шаблон із тими самими змінними, що й текст сповіщення. Воно вміщує до 2000 символів. У поле можна ввести більше тексту, але під час збереження довше тіло запиту буде відхилено.

Для формату **Raw JSON** одержувач, який очікує компактний об'єкт, може отримувати таке тіло запиту:

```
{"symbol":"{{symbol}}","condition":"{{condition_text}}","time":"{{time_iso}}","source":"ForecastCity"}
```

Змінні підставляються як звичайний текст. Значення, що містить лапки або перенос рядка, може порушити структуру JSON. Тіло запиту, яке не є коректним JSON, надсилається як звичайний текст.

Для каналу Discord виберіть для **Format** значення **Discord** і вкажіть адресу вебхука каналу. Потім напишіть короткий рядок у полі тіла запиту, наприклад:

```
{{symbol}}: {{condition_text}}. Open your alerts: {{alert_url}}
```

Для Slack виберіть **Slack** і напишіть текст так само. ForecastCity обгортає ваш текст у формат, якого очікує відповідний сервіс. Якщо залишити поле порожнім, обидва сервіси отримають текст сповіщення, як показано вище, із часом у UTC в останньому рядку.

## Як перевірити результат

1.  Дочекайтеся спрацьовування сповіщення, а потім відкрийте вкладку **Log** на панелі Alerts.
    
2.  Порівняйте те, що отримав ваш одержувач, із записом на вкладці Log: що сталося, інструмент і час.
    

Вкладка Log показує, що сповіщення спрацювало. Вона не показує, чи прийняв одержувач повідомлення, тому перевірте також журнал самого одержувача. Якщо ви бачите фігурні дужки на кшталт `{{prices}}`, у назві змінної допущено помилку. Якщо одержувач відхиляє тіло запиту, перевірте синтаксис JSON.

## Корисно знати

-   Текст сповіщення надсилається в усі позначені місця доставки. Тіло запиту вебхука надсилається лише на вебхук.
    
-   Discord відображає до 1900 символів, а Slack до 3000. Довший текст обрізається.
    

## Пов'язані посібники

-   [Як вибрати, куди надходить сповіщення](<https://app.forecastcity.com/uk/help/alerts/notification-delivery>)
    
-   [Як з'ясувати, чому сповіщення не надійшло](<https://app.forecastcity.com/uk/help/alerts/trigger-log-and-troubleshooting>)
    
-   [Як створити перше цінове сповіщення](<https://app.forecastcity.com/uk/help/alerts/first-price-alert>)
