nav-img
Evolution

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

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

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

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

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

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

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

Шаги:

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

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

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

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

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

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

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

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

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

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

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

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

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

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-бота.

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

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