Навык для Алисы без своего сервера: 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.
-
Соберите диалог на холсте
Umbot Flow и
экспортируйте
flow.json. -
Сгенерируйте проект:
npx umbot create from-flow flow.json --usecloud, затемnpm install. -
Проверьте сценарий локально: сгенерированный проект запускается и обычным HTTP-сервером, и
через
BotTestв консоли — облако для этого не нужно. -
Авторизуйтесь в облаке (
yc init) и один раз создайте функцию. Имя должно совпадать с тем, что указано вscripts/deploy.js:yc serverless function create --name my-skill -
Сделайте функцию публичной — иначе Яндекс.Диалоги получат отказ в доступе:
yc serverless function allow-unauthenticated-invoke my-skill -
Заполните
.envи выполнитеnpm run deploy: скрипт соберёт проект, упакует его и создаст новую версию функции через yc CLI (среда Node.js 22, 128 МБ памяти, таймаут 10 секунд). Переменные из.envпередаются в окружение функции. -
В консоли Яндекс.Диалогов в поле 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 выигрывает у проектов с редкими и пиковыми обращениями: промо-навыки, внутренние инструменты, корпоративные сценарии «раз в день спросили — один раз посчитали».
Куда дальше
- Документация по деплою umbot — serverless, Docker, nginx, CI/CD.
- Документация CLI — все команды и флаги генератора проектов.
- Услуга разработки навыков — если serverless нужен, а инфраструктура — не ваша забота.
Рекомендую к прочтению следующие статьи:
Бот для мессенджера MAX: создание на typescript и Node.js
Создание бота для мессенджера MAX на Node.js: регистрация, подключение вебхука, отличия API от Telegram и VK, лимиты отправки и пример бота на фреймворке umbot.
Читать статью
Как тестировать навык Алисы без публикации: BotTest и Jest
Локальное тестирование навыка Яндекс.Алисы без публикации: диалог в консоли через BotTest, автотесты на Jest с сохранением состояния и проверка вебхука.
Читать статью
Как перенести бота из Telegram в MAX: пошаговый план
Перенос чат-бота из Telegram в мессенджер MAX: регистрация через business.max.ru, соответствие API, вебхук, лимиты и как не поддерживать два разных проекта.
Читать статью
Бот для ВКонтакте на Node.js: Callback API и пример на TypeScript
Как создать чат-бота для сообщества ВКонтакте на Node.js: настройка Callback API, подтверждение сервера, секретный ключ, клавиатура и хранение данных.
Читать статью
Как навык Алисы запоминает пользователя: state и база данных
Где хранить данные пользователя в навыке Алисы: session_state, application_state и user_state, лимит 1 КБ, частые ошибки и когда нужна своя база данных.
Читать статью
Комментарии
Оставить комментарий
Как со мной связаться?
Свяжитесь со мной по любому поводу!
Я с радостью отвечу на все вопросы!
Телефон:
+7(909) 281 35-20Почта:
maximco36895@yandex.ruДополнительная почта:
info@maxim-m.ruЯ в социальных сетях: