Код найма-8
Код найма-8
Код найма-8

n8n: установка, настройка и интеграция с Python, Node.JS и PHP

Подробный туториал по установке и настройки n8n. Примеры интеграции с Python, Node.JS и PHP и взаимодействия с LLM Mistral AI.

677 открытий4К показов
n8n: установка, настройка и интеграция с Python, Node.JS и PHP

n8n — open-source платформа для автоматизации рабочих процессов (workflow), позволяющая создавать сложные цепочки задач без глубоких знаний программирования.

В статье рассмотрим:

- Установку локально и в облаке;

- Интеграцию с Python, Node.js и PHP;

- Примеры автоматизаций;

- Интеграцию с AI Mistral.

Установка n8n

Локальная установка

Нам потребуется Docker, проверьте установку:

			docker --version
		

Шаги установки:

1. Создайте том данных:

			sudo docker volume create n8n_data
		

2. Запустите контейнер:

			sudo docker run -d --name n8n \

-p 5678:5678 \

-v n8n_data:/home/node/.n8n \

docker.n8n.io/n8nio/n8n
		

После запуска откройте: `http://localhost:5678`

n8n: установка, настройка и интеграция с Python, Node.JS и PHP 1

Установка на удаленном сервере

Развертывание мы произведем в облаке Amvera, так как в нем n8n предоставляется как преднастроенный сервис с бесплатным доменом (он нам нужен), настроенными переменными и проксированием до заблокированных в РФ LLM (OpenAI, Gemini, Claude и др.).

1. Регистрируемся на Amvera;

2. Выбираем n8n в плитке на главной странице;

n8n: установка, настройка и интеграция с Python, Node.JS и PHP 2

3. Вводим название для проекта и выбираем тариф.

Готово, через 30 секунд запустится n8n с выделенным доменом и настроенными основными переменными.

Настройка n8n

Первоначальная настройка

1. Откройте n8n (локально: `localhost:5678`, в облаке: ваш домен)

2. Заполните данные администратора:

  • Email
  • Имя/Фамилия
  • Пароль

3. По желанию вы можете получить бесплатный лицензионный ключ:

  • Введите email → "Send me a free license key"
  • Активируйте в разделе Settings → Usage

Настройка для HTTP

1. Создайте новый workflow → Start from scratc

2. Добавьте триггер: Webhook - On webhook call

3. Настройте:

  • HTTP Method: POST
  • Path: `/n8n` (пример)
  • Respond Mode: Using 'Respond to Webhook' node
n8n: установка, настройка и интеграция с Python, Node.JS и PHP 3

4. Добавьте обработчик: CoreRespond to Webhook

5. Настройте ответ:

n8n: установка, настройка и интеграция с Python, Node.JS и PHP 4

Примеры использования

Пример на Python

В примере на Python мы сделаем калькулятор. Суть: отправляем выражение через POST, n8n делает вычисление, возвращаем результат.

Workflow:

1. Добавьте CoreCode node между Webhook и Respons:

			```javascript

return { result: eval($input.first().json.body.expression) };
		

Клиент (Python):

			python

import requests

while True:

    expression = input("Введи выражение: ")

    response = requests.post("http://localhost:5678/webhook/n8n", json={"expression": expression})

    print(response.text)
		

Запустим код и посмотрим результат:

n8n: установка, настройка и интеграция с Python, Node.JS и PHP 5

Пример на PHP

В примере на PHP мы сделаем валидацию данных. Суть: отправляем данные через POST, n8n проверяет данные, возвращает результат.

Workflow (Code node):

			javascript

let errors = {};
let isValid = true;

if (!$input.first().json.body.name || $input.first().json.body.name.trim() === '') {
  errors.name = "Имя обязательно";
  isValid = false;
}

if (!$input.first().json.body.email || !/^\S+@\S+\.\S+$/.test($input.first().json.body.email)) {
  errors.email = "Некорректный email";
  isValid = false;
}

return {
  result: {
    json: {
      status: isValid ? "Валиден" : "Ошибки",
      errors,
      originalData: $input.first().json.body
    }
  }
};
		

Клиент (PHP):

			php
$webhookUrl = 'http://localhost:5678/webhook/n8n';
$data = ['name' => 'test', 'email' => 'test@gmail.com'];

$ch = curl_init($webhookUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Content-Length: ' . strlen(json_encode($data)),
]);
$response = curl_exec($ch);
curl_close($ch);
$decodedResponse = json_decode($response, true);

echo "Отправленные данные:<br>";
echo "Имя: " . $decodedResponse['json']['originalData']['name'] . "<br>";
echo "Почта: " . $decodedResponse['json']['originalData']['email'] . "<br><br>";
echo "Статус: " . $decodedResponse['json']['status'] . "<br><br>";

if ($decodedResponse['json']['status'] === "Ошибки" && isset($decodedResponse['json']['errors'])) {
    echo "Обнаружены ошибки:<br>";
    $errors = $decodedResponse['json']['errors'];
    
    if (isset($errors['name'])) {
        echo "[Имя]: " . $errors['name'] . "<br>";
    }
    if (isset($errors['email'])) {
        echo "[Почта]: " . $errors['email'] . "<br>";
    }
}
		

Можем зайти на нашу страницу, все работает нормально:

n8n: установка, настройка и интеграция с Python, Node.JS и PHP 6

Пример на Node.js

Примером на node.js будет фильтр запрещенных слов. Суть: отправляем текст, n8n проверяет на наличие плохих слов, возвращает результат.

Workflow (Code node):

			Javascript
const badWords = ["дурак", "лох", "дибил"];
const text = $input.first().json.body.text;
const hasBadWords = badWords.some(word => text.includes(word));

return {
  result: {
    isClean: !hasBadWords,
    originalText: text,
    badWordsFound: hasBadWords ? badWords.filter(word => text.includes(word)) : []
  }
};
		

Клиент (Node.js):

			javascript
const axios = require("axios");

async function checkText(text) {
  const N8N_URL = "http://localhost:5678/webhook/n8n";
  const response = await axios.post(N8N_URL, { text });
  return response.data;
}

function displayResults(results) {
  if (results && typeof results === 'object' && results.hasOwnProperty('isClean')) {
    const { isClean, originalText, badWordsFound } = results;
    console.log(`Исходный текст: "${originalText}"`);
    
    if (isClean) {
      console.log("Статус: Текст чистый, плохих слов не найдено");
    } else {
      console.log("Статус: Найдены плохие слова!");
      console.log(`Количество плохих слов: ${badWordsFound.length}`);
      console.log(`Список плохих слов: ${badWordsFound.join(", ")}`);
    }
  } 
}
checkText("Мало того что дурак так еще и лох").then(displayResults);
		

Перед запуском установим библиотеку командой `npm install axios`

n8n: установка, настройка и интеграция с Python, Node.JS и PHP 7

Интеграция n8n с Mistral AI

Мы интегрируем нейросеть Mistral в телеграмм-бота на C# с помощью n8n. Перед тем как начать, нам нужно получить токен.

1. Зарегистрируйтесь на Mistral

2. Создайте агента Сreate an agent

3. Перейдите в раздел API Keys

4. Создайте и скопируйте API-ключ (звездочки наложены):

n8n: установка, настройка и интеграция с Python, Node.JS и PHP 8

Теперь нужно создать credentials для работы с созданной моделью. Для этого в правом верхнем углу нажмите Create credentials. В списке найдите Mistral Cloud API. В открывшемся окне вставьте скопированный ключ и сохраните.

Осталось настроить workflow.

1. Добавляем Webhook:

  • Method: POST
  • PATH: n8n
  • Respond: Using 'Respond to Webhook' Node

2. Добавляем AI Agent:

  • Source for Prompt: Define below
  • Prompt: `{{ $json.body.text }}`

3. Подключаем Chat Model к созданному агенту:

  • Credential to connect with: Mistral Cloud API
  • Model: mistral-large-2411

4. Добавляем Respond to Webhook

Вот так выглядит готовый workflow:

n8n: установка, настройка и интеграция с Python, Node.JS и PHP 9

Можем приступить к созданию бота. Для начала введите эти команды по очередности:

			bash

dotnet new console -n tg-bot

dotnet add package Telegram.Bot

dotnet add package Newtonsoft.Json
		

Переходим в папку с кодом и редактируем файл `Program.cs`:

			csharp
using Telegram.Bot;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
using System.Text;

using var cts = new CancellationTokenSource();
var bot = new Telegram.Bot.TelegramBotClient("TOKEN");
var http = new HttpClient();
bot.OnMessage += OnMessage;

async Task OnMessage(Message msg, UpdateType type)
{
    if (msg.Text.StartsWith('/'))
    {
        if (msg.Text == "/start")
        {
            await bot.SendMessage(msg.Chat.Id, "Привет! Я чат-бот с AI Mistral. Просто напиши мне вопрос или задачу и я с радостью помогу тебе решить его.");
        }
        return;
    }

    string url = "https://localhost:5678/webhook-test/ai"; // замените на свой url
    var payload = new { text = msg.Text };
    var content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json");
    var response = await http.PostAsync(url, content);
    string responseBody = await response.Content.ReadAsStringAsync();
    var result = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(responseBody);

    await bot.SendMessage(msg.Chat.Id, $"Ответ: {result.output}");
}

Console.WriteLine("Бот запущен...");
await Task.Delay(-1, cts.Token);
		

Запустите бота с помощью команды `dotnet run`.

Автоматизируем с помощью n8n

В примере автоматизации мы сделаем бота, который будет отправлять уведомления при заполнении формы, полностью без кода.

Для работы с Telegram Node понадобиться создать credentials Telegram API. Туда вставляем токен бота, полученный в @BotFater. Сохраняем и переходим к настройке workflow.

Создаем новый workflow.

1. Добавляем On form submission. В качестве примера я создам самую простую форму:

n8n: установка, настройка и интеграция с Python, Node.JS и PHP 10

Перейдите по ссылке в Producrion URL чтобы заполнить форму.

2. Добавляем Telegram Node:

  • Credential to connect with: Telegram account
  • Resource: Message
  • Operation: Send message
  • Chat ID: вставьте свой telegram id

Text:

			    Новая заявка!

    Имя: {{ $json['Ваше имя'] }}

    Возраст: {{ $json['Ваш возраст'] }}

    Опыт: {{ $json['Ваш опыт разработки на Python (лет)'] }}
		

Готово! При новых заявках бот будет присылать уведомления.

Деплой бота в Amvera Cloud

Перед тем как начать деплой, мы должны создать конфигуационнный файл `amvera.yml`. Для этого создаем его в рабочем каталоге с ботом и вводим следующее:

			meta:
  environment: csharp
  toolchain:
    name: dotnet
    version: "8.0"
build:
  image: mcr.microsoft.com/dotnet/sdk:8.0
run:
  image: mcr.microsoft.com/dotnet/sdk:8.0
  buildFileName: publish/tg-bot
  persistenceMount: /data
  containerPort: "80"
  servicePort: "80"
		

Строго говоря, этот файл проще создать в конфигураторе в интерфейсе.

2. Структура проекта будет такой:

tg-bot/

├── Program.cs

├── tg-bot.csproj

├── amvera.yml

├── bin/

└── obj/

Идем В Amvera Cloud и создаем приложение ПриложенияСоздать приложение. Вводим название и выбираем тариф.

Далее загружаем все файлы, что есть у нас в каталоге, с ботом. В конце будет окно с настройкой конфигуцрации, выглядит оно так:

n8n: установка, настройка и интеграция с Python, Node.JS и PHP 11

Нажимаем Завершить и ждем когда приложение будет запущено.

Заключение

n8n — мощный инструмент для создания интеграций и автоматизаций. Надеюсь, статья была вам полезна и буду рад обсудить в комментариях любые вопросы!

Следите за новыми постами
Следите за новыми постами по любимым темам
677 открытий4К показов