Создание 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
Присвойте образу тег, который вы скачали на шаге 2:
docker tag docker.n8n.io/n8nio/n8n:1.86.0 <registry_name>.cr.cloud.ru/n8n:1.86.0Где <registry_name> — название реестра в Artifact Registry. Используйте реестр, созданный на этапе подготовки среды.
Загрузите образ в Artifact Registry:
docker push <registry_name>.cr.cloud.ru/n8n:1.86.0Где <registry_name> — название реестра в Artifact Registry. Используйте реестр, созданный на этапе подготовки среды.
Убедитесь, что в личном кабинете на странице созданного ранее реестра в сервисе Artifact Registry:
отображается созданный вами реестр артефактов;
в созданном реестре отображается репозиторий n8n;
в репозитории n8n отображается образ с тегом 1.86.0.

4. Создайте бакет в сервисе Object Storage
В сервисе Object Storage создайте новый бакет со следующими параметрами:
Название — <your_name>-n8n, например name-n8n.
Доменное имя — <your_name>-n8n, например name-n8n.
Класс хранения по умолчанию — Стандартный.
Максимальный размер — отключите или укажите на свое усмотрение.
Убедитесь, что в личном кабинете на странице сервиса Object Storage:
в списке бакетов отображается созданный вами бакет;
класс хранения созданного бакета — Стандартный.
5. Запустите контейнер с образом n8n
В личном кабинете создайте контейнер n8n из образа с помощью Container Apps:
Перейдите на страницу сервиса Container Apps и нажмите Создать.
Укажите Название создаваемого Container App, например container-app-n8n-name.
На вкладке Общие параметры укажите параметры создаваемого контейнера:
Название контейнера, например n8n-container.
URI образа — выберите загруженный ранее образ n8n с помощью кнопки Выбрать образ.
Порт контейнера — укажите 5678.
На вкладке Переменные добавьте следующие переменные и значения:
Ключ — 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 или другая временная зона.
На вкладке Тома создайте новый том со следующими параметрами:
Тип — Постоянный.
Название — например n8n-volume.
Бакет из Object Storage — выберите бакет сервиса Object Storage, который вы создали на шаге 4.
Путь (path) — /home/node/.n8n.
Нажмите Следующий шаг.
В поле Мин. кол-во экземпляров укажите значение 1.
Нажмите Создать.
Убедитесь, что в личном кабинете на странице созданного Container App:
отображается одна ревизия;
статус ревизии — «Создается».
Дождитесь, когда статус ревизии изменится на «Выполняется».

6. Зарегистрируйте бота в Telegram
Для работы вам потребуется зарегистрировать нового бота в Telegram и получить токен для него.
В Telegram найдите бота BotFather.
Выполните команду /newbot.
Задайте для бота имя (name) и имя пользователя (username).
Имя пользователя должно оканчиваться на Bot или _bot.
В нашем случае:
name: new-bot
username: nocodelabbot
В результате вы получите токен. Сохраните его — он потребуется на следующих этапах.
Токен является секретом. Не публикуйте его и не передавайте третьим лицам.
7. Запустите n8n
Со страницы созданного на шаге 5 Container App:
Нажмите на публичный URL.
Откроется интерфейс сервиса n8n с формой регистрации нового пользователя.
Заполните поля формы регистрации и нажмите Next.
В следующих окнах нажмите Get Started и Skip.
После регистрации в n8n вы будете перенаправлены в веб-интерфейс n8n.
8. Настройте параметры подключения к Telegram
В личном кабинете n8n создайте и настройте учетные данные для подключения к Telegram:
В правом верхнем углу личного кабинета раскройте меню Create Workflow и выберите Create Credentials.
В следующем окне в качестве типа создаваемой учетной записи выберите Telegram API и нажмите Continue.
Откроется диалоговое окно создания учетной записи.
В поле Access Token вставьте токен бота, полученный на шаге 6.
В правом верхнем углу диалогового окна нажмите Save.
Дождитесь, когда вверху окна появится подтверждение об успешном тестовом подключении, и закройте диалоговое окно.
9. Создайте триггер Telegram в n8n
В личном кабинете n8n создайте триггер для Telegram-бота:
В правом верхнем углу личного кабинета нажмите Create Workflow.
В центре рабочей области My workflow нажмите Add first step.
На вкладке выбора триггеров в поле поиска введите telegram и выберите Telegram в результатах поиска.
В появившемся списке выберите On message.
В открывшемся диалоговом окне убедитесь, что в поле Credential to connect with выбрана учетная запись, созданная на шаге 8.
Чтобы закрыть диалоговое окно, в левом верхнем углу интерфейса нажмите Back to canvas.
В центре рабочей области появится блок Telegram Trigger с новым триггером.
Нажмите дважды на добавленный триггер.
В открывшемся окне свойств триггера нажмите Test step.
Слева появится всплывающее уведомление о том, что n8n отслеживает сообщения, отправленные в Telegram-бота.
Отправьте любое сообщение в Telegram-бота.
После этого на странице триггера в секции Output появятся данные отправленного сообщения.

10. Добавьте в чат статус «… печатает / … typing»
Нажмите Back to canvas.
Нажмите + справа от стартового триггера.
На вкладке выбора триггеров введите в поле поиска telegram и выберите Telegram в результатах поиска.
В появившемся списке выберите Send a chat action.
В открывшемся диалоговом окне убедитесь, что:
в поле Credential to connect with выбрана учетная запись, которую вы создали на шаге 8;
в левой области окна отображены параметры, которые вы получили на шаге 9 для стартового триггера, после того как нажали Test step.
Если вы не видите этих данных, то нажмите Back to canvas, повторно откройте стартовый триггер и протестируйте шаг.
Перетащите параметр message | chat | id в поле Chat ID.
Нажмите Test step.
В правой части окна отобразится результат выполнения true.
11. Настройте ответ пользователю от бота
В рамках лабораторной работы настройте бота, чтобы он отправлял текст сообщения пользователя обратно:
Нажмите Back to canvas.
Нажмите + справа от созданного на предыдущем шаге действия Send a chat action.
В открывшейся справа вкладке вновь найдите и выберите Telegram.
В списке Actions выберите Send a text message.
В открывшемся диалоговом окне введите параметры:
Chat ID — укажите {{ $node["Telegram Trigger"].json["message"]["chat"]["id"] }};
Text — укажите {{ $node["Telegram Trigger"].json["message"]["text"] }}.
Чтобы вернуться к рабочей области, в левом верхнем углу нажмите Back to canvas.
В верхней строке нажмите Save.
В верхней строке активируйте бот.
Созданный вами Telegram-бот активирован.
12. Убедитесь, что бот работает
Отправьте в Telegram любое сообщение боту. Бот должен прислать обратно ваше сообщение.

Что дальше
В этой лабораторной работе вы развернули платформу для создания рабочих процессов без написания кода в сервисе Container Apps и создали с ее помощью Telegram-бота.
Дальше вы можете:
настроить логику работы бота с помощью действий, доступных в n8n;
Узнавайте больше о работе с сервисами и получайте практические навыки управления облаком, выполняя лабораторные работы.
- Перед началом работы
- 1. Подготовьте среду
- 2. Скачайте публичный образ на локальный компьютер
- 3. Загрузите образ контейнера в Artifact Registry
- 4. Создайте бакет в сервисе Object Storage
- 5. Запустите контейнер с образом n8n
- 6. Зарегистрируйте бота в Telegram
- 7. Запустите n8n
- 8. Настройте параметры подключения к Telegram
- 9. Создайте триггер Telegram в n8n
- 10. Добавьте в чат статус «… печатает / … typing»
- 11. Настройте ответ пользователю от бота
- 12. Убедитесь, что бот работает
- Что дальше