Подключение n8n¶
Подключение n8n¶
n8n — это инструмент для автоматизации рабочих процессов, который позволяет соединять различные сервисы и приложения между собой без необходимости написания кода.
В этой инструкции мы разберём, как создать рабочий процесс в n8n и настроить его интеграцию с WiseBot.
Интеграция чат-бота WiseBot с n8n превращает бота в мощный инструмент автоматизации, расширяя его функционал без необходимости писать сложный backend-код.
В этой интеграции n8n выступает в качестве action server для WiseBot. Это означает, что n8n может обрабатывать запросы, поступающие от бота, совершать необходимые обращения к внешним сервисам и возвращать результаты обратно в WiseBot. Такой подход делает процесс добавления новых функций в бота простым и удобным, избавляя от необходимости писать серверный код вручную.
В качестве примера рассмотрим интеграцию с сервисом OpenWeatherMap для получения сведений о погоде в разных городах.
Этапы интеграции:
- Шаг 1. Создание узла Webhook для получения запроса из Wisebot
- Шаг 2. Добавление узла Switch
- Шаг 3. Добавление узла OpenWeatherMap
- Шаг 6. Настройка в Wisebot
Шаг 1. Создание узла Webhook для получения запроса из Wisebot¶
Создайте узел Webhook для приема данных из WiseBot.
- Откройте n8n.
-
Нажмите на кнопку Create Workflow (Создать рабочий процесс).
-
Откроется редактор рабочего процесса.
- Нажмите кнопку Tab или кнопку Add First step.
-
В появившемся окне выберите On webhook call.
-
Откроется форма настройки узла Webhook.
- В поле HTTP Method выберите метод POST.
-
В поле Respond выберите вариант Using ‘Respond to Webhook’ Node: Узел отвечает, как определено в узле "Ответить на вебхук".
-
Скопируйте Production URL. Он понадобится нам в дальнейшем.
-
Нажмите кнопку Back to canvas в верхнем левом углу.
В окне редактора отобразится настроенный узел Webhook.
Шаг 2. Добавление узла Switch¶
Создайте узел Switch для создания условий. Он позволит определить, какое действие необходимо выполнить в зависимости от команды WiseBot.
- Нажмите на кнопку Добавить
, размещенную справа от узла Webhook.
-
В появившемся окне выберите Flow → Switch. Чтобы быстро найти узел, воспользуйтесь поисковой строкой.
-
Откроется форма настройки узла Switch.
- В поле Mode выберите режим Rules.
- В поле value1 укажите
{{$json.body.next_action}}
с режимом Expression. -
В поле value2 добавьте названия action-скрипта, созданного в WiseBot.
В качестве примера добавим два скрипта:
action_weather
для определения погоды в различных городах,action_message
для текстовых сообщений.
Для добавления второго условия нажмите кнопку Add Routing Rule.
-
Нажмите кнопку Back to canvas в верхнем левом углу.
В окне редактора отобразится настроенный узел Switch.
Шаг 3. Добавление узла OpenWeatherMap¶
Создайте узел OpenWeatherMap для отправки запроса в сервис OpenWeatherMap через API для получения актуальных данных о погоде.
- Нажмите на кнопку Добавить
, размещенную у выхода «0» справа от узла Switch.
-
В появившемся окне выберите OpenWeatherMap. Чтобы быстро найти узел, воспользуйтесь поисковой строкой.
-
Откроется форма настройки узла Switch.
- В поле Operation выберите Current Weather.
- В поле Format выберите Metric.
- В поле Location Selection выберите City Name.
- В поле City введите
{{$json.body.tracker.slots.city_weather}}
с режимом Expression. -
В поле Language введите ru.
-
Нажмите кнопку Back to canvas в верхнем левом углу.
В окне редактора отобразится настроенный узел OpenWeatherMap.
Шаг 4. Добавление узла Code¶
После того как данные от OpenWeatherMap получены, необходимо их обработать и подготовить для отправки в WiseBot. Для этого создайте узел Code и добавьте в него кастомную логику на JavaScript.
1. Создание узла для преобразования данных¶
- Нажмите на кнопку Добавить
, размещенную справа от узла OpenWeatherMap.
- В появившемся окне выберите Code. Чтобы быстро найти узел, воспользуйтесь поисковой строкой.
- Откроется форма настройки узла.
-
Вставьте следующий код:
// Получаем первый (единственный) входящий элемент const item = $input.first(); const data = item.json; // Функция для создания стандартного ответа const createResponse = (text) => ({ responses: [ { text } ], events: [ { event: "slot", name: "city_weather", value: null } ] }); // Если пришла ошибка, возвращаем сообщение об ошибке if (data.error) { item.json = createResponse("Город не найден"); return item; } // Извлекаем данные о погоде с помощью деструктуризации const { name: cityName, main: { temp, humidity }, weather, wind: { speed: windSpeed } } = data; const description = weather[0].description; const roundedTemp = Math.round(temp); // Формируем красиво оформленный текст ответа const formattedText = `Погода в городе *${cityName}*:\n 🌡 Температура: *${roundedTemp}°C*\n ☁️ *${description}*\n 💧 Влажность: *${humidity}%*\n 💨 Скорость ветра: *${windSpeed} м/с*`; // Возвращаем сформированный объект для WiseBot item.json = createResponse(formattedText); return item;
-
Нажмите кнопку Back to canvas в верхнем левом углу.
2. Создание узла для получения текстового сообщения¶
Этот узел отвечает на текстовые запросы без обращения к API.
- Нажмите на кнопку Добавить
, размещенную у выхода «1» справа от узла Switch.
- В появившемся окне выберите Code. Чтобы быстро найти узел, воспользуйтесь поисковой строкой.
- Откроется форма настройки узла.
-
Вставьте следующий код:
-
Нажмите кнопку Back to canvas в верхнем левом углу.
В окне редактора отобразятся добавленные узлы.
Шаг 5. Создание узла Webhook для отправки данных в WiseBot¶
- Нажмите на кнопку Добавить
, размещенную справа от первого или второго узла Code.
- В появившемся окне выберите Respond to Webhook. Чтобы быстро найти узел, воспользуйтесь поисковой строкой.
- Откроется форма настройки узла.
-
В поле Respond With выберите First Incoming Item.
-
Нажмите кнопку Back to canvas в верхнем левом углу.
-
Подключите узел Respond to Webhook к оставшемуся узлу Respond to Webhook.
-
Сохраните проект по кнопке Save и включите переключатель активности.
Шаг 6. Настройка в Wisebot¶
-
Создайте истории с action-скриптами.
Для погоды необходима форма для получения названия города. Слот
city_weather
должен иметь типtext
. -
Убедитесь, что названия action-скриптов
action_weather
,action_message
и слотcity_weather
добавлены в Домен по умолчанию. -
В разделе Конечные точки поменяйте адрес у
action_endpoint
на адрес Production URL, скопированный на первом шаге. Нажмите Сохранить и подтвердите перезапуск инстанса для выбранного окружения.
Протестируйте работу action-скриптов в виджете бота.
Скрипт action_weather
:
Скрипт action_message
:
Теперь рабочий процесс получает запросы, обрабатывает их и отправляет ответы обратно в чат-бот!