Evolution
Тема интерфейса

Создание Telegram-бота без написания кода с помощью n8n и Container Apps

В этой лабораторной работе вы развернете платформу для создания рабочих процессов без написания кода и создадите Telegram-бота, который будет повторять сообщения пользователя.

Для развертывания вы будете использовать следующие сервисы:

  • Artifact Registry — cервис для хранения, совместного использования и управления Docker-образами и Helm-чартами.

  • Container Apps — сервис для запуска контейнерных приложений в облаке, не требует знания Kubernetes и создания виртуальных машин.

  • n8n — платформа с открытым кодом для автоматизации рабочих процессов и интеграции сервисов.

  • Object Storage — сервис для хранения данных любого типа и объема, будет использоваться в качестве постоянного хранилища для запущенного контейнера.

Шаги:

Перед началом работы

1. Подготовьте среду

Подготовьте среду, если не сделали этого ранее.

2. Скачайте публичный образ на локальный компьютер

Выполните в любом удобном терминале команду скачивания образа:

docker pull docker.n8n.io/n8nio/n8n:1.86.0 --platform linux/amd64

Где:

  • docker.n8n.io/n8nio/n8n:1.86.0 — публичный образ, который нужно скачать.

  • platform linux/amd64 — флаг указывает, что образ должен быть собран для платформы linux/amd64. Это требуется для создания контейнера.

3. Загрузите образ контейнера в Artifact Registry

  1. Присвойте образу тег, который вы скачали на шаге 2:

    docker tag docker.n8n.io/n8nio/n8n:1.86.0 <registry_name>.cr.cloud.ru/n8n:1.86.0

    Где <registry_name> — название реестра в Artifact Registry. Используйте реестр, созданный на этапе подготовки среды.

  2. Загрузите образ в Artifact Registry:

    docker push <registry_name>.cr.cloud.ru/n8n:1.86.0

    Где <registry_name> — название реестра в Artifact Registry. Используйте реестр, созданный на этапе подготовки среды.

Убедитесь, что в личном кабинете на странице созданного ранее реестра в сервисе Artifact Registry:

  • отображается созданный вами реестр артефактов;

  • в созданном реестре отображается репозиторий n8n;

  • в репозитории n8n отображается образ с тегом 1.86.0.

../_images/artifact_registry.png

4. Создайте бакет в сервисе Object Storage

В сервисе Object Storage создайте новый бакет со следующими параметрами:

  • Название<your_name>-n8n, например name-n8n.

  • Доменное имя<your_name>-n8n, например name-n8n.

  • Класс хранения по умолчаниюСтандартный.

  • Максимальный размер — отключите или укажите на свое усмотрение.

Убедитесь, что в личном кабинете на странице сервиса Object Storage:

  • в списке бакетов отображается созданный вами бакет;

  • класс хранения созданного бакета — Стандартный.

5. Запустите контейнер с образом n8n

В личном кабинете создайте контейнер n8n из образа с помощью Container Apps:

  1. Перейдите на страницу сервиса Container Apps и нажмите Создать.

  2. Укажите Название создаваемого Container App, например container-app-n8n-name.

  3. На вкладке Общие параметры укажите параметры создаваемого контейнера:

    • Название контейнера, например n8n-container.

    • URI образа — выберите загруженный ранее образ n8n с помощью кнопки Выбрать образ.

    • Порт контейнера — укажите 5678.

    ../_images/container-general.png
  4. На вкладке Переменные добавьте следующие переменные и значения:

    • КлючN8N_PROTOCOL, Значениеhttps.

    • КлючN8N_HOST, Значение<container_app_name>.containerapps.ru, например container-app-n8n-name.containerapps.ru.

    • КлючWEBHOOK_URL, Значениеhttps://<container_app_name>.containerapps.ru, например https://container-app-n8n-name.containerapps.ru.

    • КлючGENERIC_TIMEZONE, ЗначениеEurope/Moscow или другая временная зона.

    ../_images/container-vars.png
  5. На вкладке Тома создайте новый том со следующими параметрами:

    • ТипПостоянный.

    • Название — например n8n-volume.

    • Бакет из Object Storage — выберите бакет сервиса Object Storage, который вы создали на шаге 4.

    • Путь (path)/home/node/.n8n.

    ../_images/container-volume.png
  6. Нажмите Следующий шаг.

  7. В поле Мин. кол-во экземпляров укажите значение 1.

  8. Нажмите Создать.

  9. Убедитесь, что в личном кабинете на странице созданного Container App:

    • отображается одна ревизия;

    • статус ревизии — «Создается».

  10. Дождитесь, когда статус ревизии изменится на «Выполняется».

../_images/container-exist.png

6. Зарегистрируйте бота в Telegram

Для работы вам потребуется зарегистрировать нового бота в Telegram и получить токен для него.

  1. В Telegram найдите бота BotFather.

  2. Выполните команду /newbot.

  3. Задайте для бота имя (name) и имя пользователя (username).

    Имя пользователя должно оканчиваться на Bot или _bot.

    В нашем случае:

    • name: new-bot

    • username: nocodelabbot

В результате вы получите токен. Сохраните его — он потребуется на следующих этапах.

Внимание

Токен является секретом. Не публикуйте его и не передавайте третьим лицам.

7. Запустите n8n

Со страницы созданного на шаге 5 Container App:

  1. Нажмите на публичный URL.

    Откроется интерфейс сервиса n8n с формой регистрации нового пользователя.

  2. Заполните поля формы регистрации и нажмите Next.

  3. В следующих окнах нажмите Get Started и Skip.

После регистрации в n8n вы будете перенаправлены в веб-интерфейс n8n.

8. Настройте параметры подключения к Telegram

В личном кабинете n8n создайте и настройте учетные данные для подключения к Telegram:

  1. В правом верхнем углу личного кабинета раскройте меню Create Workflow и выберите Create Credentials.

  2. В следующем окне в качестве типа создаваемой учетной записи выберите Telegram API и нажмите Continue.

    Откроется диалоговое окно создания учетной записи.

  3. В поле Access Token вставьте токен бота, полученный на шаге 6.

    ../_images/n8n-token.png
  4. В правом верхнем углу диалогового окна нажмите Save.

  5. Дождитесь, когда вверху окна появится подтверждение об успешном тестовом подключении, и закройте диалоговое окно.

9. Создайте триггер Telegram в n8n

В личном кабинете n8n создайте триггер для Telegram-бота:

  1. В правом верхнем углу личного кабинета нажмите Create Workflow.

  2. В центре рабочей области My workflow нажмите Add first step.

  3. На вкладке выбора триггеров в поле поиска введите telegram и выберите Telegram в результатах поиска.

    ../_images/n8n-trigger.png
  4. В появившемся списке выберите On message.

  5. В открывшемся диалоговом окне убедитесь, что в поле Credential to connect with выбрана учетная запись, созданная на шаге 8.

    ../_images/n8n-onmessage.png
  6. Чтобы закрыть диалоговое окно, в левом верхнем углу интерфейса нажмите Back to canvas.

    В центре рабочей области появится блок Telegram Trigger с новым триггером.

  7. Нажмите дважды на добавленный триггер.

  8. В открывшемся окне свойств триггера нажмите Test step.

    Слева появится всплывающее уведомление о том, что n8n отслеживает сообщения, отправленные в Telegram-бота.

    ../_images/n8n-tg-notification.png
  9. Отправьте любое сообщение в Telegram-бота.

После этого на странице триггера в секции Output появятся данные отправленного сообщения.

../_images/n8n-message-data.png

10. Добавьте в чат статус «… печатает / … typing»

  1. Нажмите Back to canvas.

  2. Нажмите + справа от стартового триггера.

  3. На вкладке выбора триггеров введите в поле поиска telegram и выберите Telegram в результатах поиска.

  4. В появившемся списке выберите Send a chat action.

  5. В открывшемся диалоговом окне убедитесь, что:

    • в поле Credential to connect with выбрана учетная запись, которую вы создали на шаге 8;

    • в левой области окна отображены параметры, которые вы получили на шаге 9 для стартового триггера, после того как нажали Test step.

    ../_images/n8n-check-trigger.png

    Если вы не видите этих данных, то нажмите Back to canvas, повторно откройте стартовый триггер и протестируйте шаг.

  6. Перетащите параметр message | chat | id в поле Chat ID.

    ../_images/n8n-dnd-id.png
  7. Нажмите Test step.

    В правой части окна отобразится результат выполнения true.

11. Настройте ответ пользователю от бота

В рамках лабораторной работы настройте бота, чтобы он отправлял текст сообщения пользователя обратно:

  1. Нажмите Back to canvas.

  2. Нажмите + справа от созданного на предыдущем шаге действия Send a chat action.

  3. В открывшейся справа вкладке вновь найдите и выберите Telegram.

  4. В списке Actions выберите Send a text message.

  5. В открывшемся диалоговом окне введите параметры:

    • Chat ID — укажите {{ $node["Telegram Trigger"].json["message"]["chat"]["id"] }};

    • Text — укажите {{ $node["Telegram Trigger"].json["message"]["text"] }}.

    ../_images/n8n-parameters.png
  6. Чтобы вернуться к рабочей области, в левом верхнем углу нажмите Back to canvas.

  7. В верхней строке нажмите Save.

  8. В верхней строке активируйте бот.

    ../_images/n8n-active.png

Созданный вами Telegram-бот активирован.

12. Убедитесь, что бот работает

Отправьте в Telegram любое сообщение боту. Бот должен прислать обратно ваше сообщение.

../_images/check-bot.png

Что дальше

В этой лабораторной работе вы развернули платформу для создания рабочих процессов без написания кода в сервисе Container Apps и создали с ее помощью Telegram-бота.

Дальше вы можете:

Узнавайте больше о работе с сервисами и получайте практические навыки управления облаком, выполняя лабораторные работы.