Навык для Алисы без своего сервера: serverless на Yandex Cloud

Как запустить навык Алисы в Yandex Cloud Functions без своего сервера: генерация serverless-проекта через CLI umbot, деплой, публичный вызов и лимиты.

Навык для Алисы без своего сервера: serverless на Yandex Cloud

26 Сентября, 2026 Автор: Максим М

Навык для Алисы без своего сервера: serverless на Yandex Cloud

Разбираемся, как запустить навык Яндекс.Алисы в Yandex Cloud Functions без своего сервера: генерация проекта, деплой, оплата за вызовы и границы подхода.

Классическая схема навыка для Алисы — виртуалка или VPS с HTTPS-сервером, который круглосуточно ждёт запросы от Яндекс.Диалогов. Для навыка с парой сотен пользователей в день это дорогой способ держать ждущий процесс: вы платите за аптайм, а не за работу. Serverless переворачивает модель: код выполняется только в момент запроса, вы платите за вызовы. Разберём, как запустить навык для Алисы на Yandex Cloud Functions, что генерирует для этого фреймворк umbot — и где у подхода границы.

Зачем serverless навыку

  • Нет сервера в привычном смысле: не нужны VPS, pm2, обновления ОС и мониторинг ждущего процесса.
  • Оплата за вызовы: у навыка с неравномерной нагрузкой (утренний и вечерний пик, тихая ночь) счёт заметно ниже, чем у круглосуточной виртуалки.
  • Масштабирование автоматически: сотни одновременных пользователей не нужно «прокидывать» руками — облако поднимет нужное число экземпляров функции.
  • Встроенный HTTPS: облако отдаёт функцию по валидному HTTPS-адресу — требование Яндекс.Диалогов выполняется само.

Действующие тарифы Cloud Functions смотрите на странице сервиса Yandex Cloud; у сервиса есть бесплатный месячный объём вызовов и вычислительного времени (на момент написания — порядка миллиона вызовов в месяц), под который небольшой навык обычно целиком попадает. Сверьте цифры на странице тарифов перед запуском.

Как генерирует umbot CLI

Фреймворк umbot умеет генерировать serverless-приложение для Yandex Cloud Functions. Важно про механику: флаг --usecloud работает только вместе с командой create from-flow — то есть со схемой диалога, собранной в визуальном редакторе Umbot Flow:

npx umbot create from-flow flow.json --usecloud

В сгенерированный проект добавляются: экспорт handler в точке входа (обработчик Cloud Functions), scripts/deploy.js для деплоя через yc CLI, справочный serverless.yml и скрипты deploy и build в package.json. Если проект создаётся обычным npx umbot create, serverless-конфигурация не генерируется — приложение рассчитано на запуск HTTP-сервером.

Пошагово: от схемы до работающего навыка

Понадобятся аккаунт в Yandex Cloud с платёжным аккаунтом (без него функции не создаются, даже если вы укладываетесь в бесплатные лимиты) и установленный yc CLI.

  1. Соберите диалог на холсте Umbot Flow и экспортируйте flow.json.
  2. Сгенерируйте проект: npx umbot create from-flow flow.json --usecloud, затем npm install.
  3. Проверьте сценарий локально: сгенерированный проект запускается и обычным HTTP-сервером, и через BotTest в консоли — облако для этого не нужно.
  4. Авторизуйтесь в облаке (yc init) и один раз создайте функцию. Имя должно совпадать с тем, что указано в scripts/deploy.js:
    yc serverless function create --name my-skill
  5. Сделайте функцию публичной — иначе Яндекс.Диалоги получат отказ в доступе:
    yc serverless function allow-unauthenticated-invoke my-skill
  6. Заполните .env и выполните npm run deploy: скрипт соберёт проект, упакует его и создаст новую версию функции через yc CLI (среда Node.js 22, 128 МБ памяти, таймаут 10 секунд). Переменные из .env передаются в окружение функции.
  7. В консоли Яндекс.Диалогов в поле Webhook URL укажите адрес функции вида https://functions.yandexcloud.net/<ID функции> (ID показывает yc serverless function get my-skill).

Важная деталь: в Диалогах есть и отдельный вариант подключения «Функция в Яндекс Облаке». Для проекта umbot выбирайте именно Webhook URL — сгенерированный handler рассчитан на HTTP-вызов функции (тело запроса и заголовки), а при прямой интеграции облако передаёт запрос Алисы в другом формате.

Ограничения serverless-подхода

  • Файловая система только на чтение: писать можно лишь во временный каталог /tmp, который не переживает смену экземпляра. Файловые логи и файловая БД (FileAdapter) поэтому неприменимы — состояние хранится во внешней БД, например через MongoAdapter.
  • Состояние диалога: на Алисе и Марусе isLocalStorage: true работает надёжно (состояние приходит в запросе платформы), а на чат-платформах без БД-адаптера данные теряются при смене экземпляра функции — подключайте БД.
  • Холодные старты: первый после паузы вызов медленнее. Для голосового навыка с практическим лимитом около 3 секунд это значит: либо держите функцию в тепле, либо меряйте реальные задержки до публикации.
  • Логи: файлы писать некуда — настраивайте вывод в stdout (облако собирает само) или внешний логгер.

Когда serverless не нужен

Честности ради: навыку с ровной дневной нагрузкой в тысячи запросов обычный VPS может обойтись дешевле и предсказуемее — за фиксированную цену вы получаете и тёплый процесс без холодных стартов, и файловую систему для кэшей. Serverless выигрывает у проектов с редкими и пиковыми обращениями: промо-навыки, внутренние инструменты, корпоративные сценарии «раз в день спросили — один раз посчитали».

Куда дальше

Рекомендую к прочтению следующие статьи:

Бот для мессенджера MAX: создание на typescript и Node.js

Бот для мессенджера MAX: создание на typescript и Node.js

Создание бота для мессенджера MAX на Node.js: регистрация, подключение вебхука, отличия API от Telegram и VK, лимиты отправки и пример бота на фреймворке umbot.

Читать статью

Как тестировать навык Алисы без публикации: BotTest и Jest

Как тестировать навык Алисы без публикации: BotTest и Jest

Локальное тестирование навыка Яндекс.Алисы без публикации: диалог в консоли через BotTest, автотесты на Jest с сохранением состояния и проверка вебхука.

Читать статью

Как перенести бота из Telegram в MAX: пошаговый план

Как перенести бота из Telegram в MAX: пошаговый план

Перенос чат-бота из Telegram в мессенджер MAX: регистрация через business.max.ru, соответствие API, вебхук, лимиты и как не поддерживать два разных проекта.

Читать статью

Бот для ВКонтакте на Node.js: Callback API и пример на TypeScript

Бот для ВКонтакте на Node.js: Callback API и пример на TypeScript

Как создать чат-бота для сообщества ВКонтакте на Node.js: настройка Callback API, подтверждение сервера, секретный ключ, клавиатура и хранение данных.

Читать статью

Как навык Алисы запоминает пользователя: state и база данных

Как навык Алисы запоминает пользователя: state и база данных

Где хранить данные пользователя в навыке Алисы: session_state, application_state и user_state, лимит 1 КБ, частые ошибки и когда нужна своя база данных.

Читать статью

Комментарии

Оставить комментарий

Как со мной связаться?

Свяжитесь со мной по любому поводу!
Я с радостью отвечу на все вопросы!

Телефон:

+7(909) 281 35-20

Дополнительная почта:

info@maxim-m.ru

Я в социальных сетях:

ВверхВверх 👆