Глава 2. Ваш первый воркфлоу
Теория без практики — ничто. В этой главе мы построим реальный воркфлоу: будем запрашивать текущую погоду в Москве и отправлять сообщение в Telegram. Никаких API-ключей для погоды не понадобится.
Что мы построим
Manual Trigger → HTTP Request (погода) → Code (форматирование) → TelegramЧетыре ноды, один сценарий, десять минут.
Шаг 1. Создайте новый воркфлоу
Откройте n8n в браузере. На боковой панели нажмите + New Workflow. Откроется пустой холст с одной нодой — Manual Trigger.
TIP
Manual Trigger позволяет запускать воркфлоу вручную — нажатием кнопки. Это удобно для разработки и тестирования.
Шаг 2. Добавьте ноду HTTP Request
Нажмите на кружок справа от Manual Trigger (или кнопку + на холсте). В поиске введите HTTP Request и выберите эту ноду.
Заполните параметры:
| Поле | Значение |
|---|---|
| Method | GET |
| URL | https://api.open-meteo.com/v1/forecast?latitude=55.75&longitude=37.62¤t=temperature_2m,relative_humidity_2m,wind_speed_10m,weather_code&timezone=Europe/Moscow |
Что такое Open-Meteo?
open-meteo.com — бесплатный API погоды с открытым исходным кодом. Координаты 55.75, 37.62 — это Москва. API-ключ не нужен.
Нажмите Test step — нода выполнится и вернёт JSON с данными о погоде. В разделе Output вы увидите структуру ответа.
Шаг 3. Изучите структуру данных
После выполнения HTTP Request посмотрите на вывод:
{
"latitude": 55.75,
"longitude": 37.625,
"timezone": "Europe/Moscow",
"current": {
"time": "2024-04-19T12:00",
"temperature_2m": 14.8,
"relative_humidity_2m": 54,
"wind_speed_10m": 11.4,
"weather_code": 3
}
}Поле current содержит текущие показатели. weather_code — числовой код состояния погоды по стандарту WMO (0 = ясно, 3 = облачно, 61 = дождь и т.д.).
Шаг 4. Добавьте ноду Code
Подключите к HTTP Request ноду Code. В ней мы отформатируем данные в читабельное сообщение на русском.
Выберите язык JavaScript и вставьте код:
const current = $input.first().json.current;
// Таблица кодов WMO для описания погоды
const wmoDesc = {
0: 'Ясно ☀️', 1: 'Преимущественно ясно 🌤', 2: 'Переменная облачность ⛅',
3: 'Облачно ☁️', 45: 'Туман 🌫', 48: 'Туман с изморозью 🌫',
51: 'Лёгкая морось 🌦', 61: 'Небольшой дождь 🌧', 63: 'Дождь 🌧',
71: 'Небольшой снег 🌨', 73: 'Снег 🌨', 80: 'Ливень 🌦',
95: 'Гроза ⛈', 99: 'Гроза с градом ⛈'
};
const temp = current.temperature_2m;
const humidity = current.relative_humidity_2m;
const wind = current.wind_speed_10m;
const code = current.weather_code;
const desc = wmoDesc[code] || `Код погоды: ${code}`;
const message = [
`🌤 Погода в Москве сейчас:`,
``,
`🌡 Температура: ${temp}°C`,
`${desc}`,
`💧 Влажность: ${humidity}%`,
`💨 Ветер: ${wind} км/ч`,
].join("\n");
return [{ json: { message } }];Нажмите Test step. В выводе появится объект с полем message — готовое текстовое сообщение.
$input.first()
$input.first() возвращает первый элемент из входных данных предыдущей ноды. Подробнее о структуре данных и встроенных переменных — в следующей главе.
Шаг 5. Добавьте ноду Telegram
Нужен Telegram-бот
Для этого шага необходим бот-токен. Создайте бота через @BotFather в Telegram командой /newbot. Скопируйте выданный токен.
Добавьте ноду Telegram и настройте:
- Credentials → нажмите Create New → вставьте токен бота в поле
Access Token. - Resource:
Message - Operation:
Send Message - Chat ID: ваш числовой ID (узнать можно через @userinfobot)
- Text: нажмите на поле, переключитесь в режим Expression и введите:
{{ $json.message }}Шаг 6. Запустите воркфлоу
Нажмите кнопку Test workflow вверху холста. Если все ноды подсветились зелёным — воркфлоу выполнился успешно. Проверьте Telegram: там должно быть сообщение с погодой.
Шаг 7. Сохраните и активируйте
Нажмите Save (Ctrl+S), дайте воркфлоу имя, например Погода в Москве.
Если хотите запускать его по расписанию — замените Manual Trigger на Schedule Trigger:
| Поле | Значение |
|---|---|
| Trigger Interval | Days |
| Hour | 9 |
| Minute | 0 |
После настройки включите тумблер Active вверху страницы. Теперь воркфлоу будет запускаться автоматически каждый день в 9:00.
Отладка ошибок
Если нода выполнилась с ошибкой, она подсветится красным. Кликните по ней, чтобы увидеть текст ошибки. Чаще всего причина — в неверных credentials или в том, что поле данных называется не так, как ожидалось.
Используйте Pin Data — кликните правой кнопкой по ноде и «заморозьте» вывод. Тогда при повторных запусках нода не будет делать реальный HTTP-запрос, а вернёт сохранённые данные. Очень удобно для разработки.
В следующей главе мы подробно разберём, как данные путешествуют между нодами, и научимся писать выражения.