umbot — это TypeScript-фреймворк для разработки голосовых навыков и чат-ботов. Он даёт единую бизнес-логику для всех
платформ — но одинаково эффективен, даже если вы работаете только с одной.
Поддерживаются: Яндекс.Алиса, Сбер Салют (SmartApp), а также Telegram, VK, MAX и Viber из коробки.
Для существующих навыков Маруси есть отдельный адаптер.
В отличие от большинства решений, требующих отдельной реализации под каждую платформу, umbot абстрагирует различия в
форматах запросов и ответов, предоставляя разработчику единый, предсказуемый интерфейс. Это позволяет писать логику один
раз — и запускать её везде.
Фреймворк следует SemVer. Breaking changes возможны только в MAJOR-версиях.
umbot?Больше не нужно писать несколько версий одного приложения.
Больше не нужно разбираться в JSON-форматах Алисы, Сбера, Маруси, Telegram, MAX и т. д.
Бизнес-логика — одна. Платформа — любая.
Ключевые преимущества:
umbot рекомендует
заранее загружать необходимые ресурсы через класс Preload.Ключевая мысль:
umbot— это не «надстройка для мультиплатформенности», а базовый слой, который делает разработку под любую платформу (даже одну) быстрее, чище и готовой к масштабированию.
umbot предоставляет унифицированный интерфейс для работы с ответами, но при этом учитывает специфику каждой платформы:
AlisaAdapter.Этот подход гарантирует, что ваш навык/бот будет вести себя предсказуемо и не потребует специальных обходных путей при переходе между платформами.
umbot отличается от других решений?Большинство фреймворков (например, telegraf, alice-sdk и т.д.) ориентированы только на одну платформу. Чтобы
запустить приложение и в Алисе, и в Telegram, приходится:
umbot решает эту проблему:
одна бизнес-логика для всех платформ,
единый API для кнопок, карточек, голоса и текста,
автоматическая адаптация под формат каждой платформы "под капотом".
Это особенно ценно, если вы уже поддерживаете навык на Алисе и хотите быстро выйти в Сбер Салют, Telegram, MAX или VK — без переписывания или существенных доработок кода.
Даже если вы пока разрабатываете только под одну платформу, umbot избавляет от boilerplate, даёт единый API для работы
с состоянием, кнопками и медиа, а главное — не мешает, когда придёт время добавлять новые каналы.
umbot?umbot — это не просто обёртка под несколько платформ. Это архитектурное решение для проектов, где диалог инициирует
пользователь. Оно одинаково ценно как для одной платформы, так и для десятка.
Вы будете использовать umbot, если:
umbot делает расширение предсказуемым.umbot позволяет писать ядро один раз и забыть о boilerplate.Ключевая мысль:
umbot— это не «надстройка для мультиплатформенности», а базовый слой, который делает разработку под любую платформу (даже одну) быстрее, чище и готовой к масштабированию.
| Платформа | Идентификатор | Что поддерживается |
|---|---|---|
| Яндекс.Алиса | alisa |
Протокол навыков: текст, TTS, кнопки, карточки, звуки, состояние, авторизация |
| Сбер Салют | smart_app |
Протокол SmartApp API: текст, озвучка, кнопки, карточки, состояние |
| Telegram | telegram |
Базовый набор: текст, кнопки (inline и reply), фото и медиагруппы, голос, callback, inline-запросы, события сообщений |
| VK | vk |
Базовый набор: текст, клавиатура, карусель, голос, callback-кнопки |
| MAX | max_app |
Базовый набор: текст, inline-клавиатура, изображения, аудио, callback, deep-link bot_started |
| Viber | viber |
Базовый набор: текст, клавиатура, rich media. Боты Viber с 2024 года создаются только на коммерческих условиях |
| Маруся | marusia |
Протокол навыков. VK закрыла создание новых навыков (20.12.2024) — только для существующих |
| Ваша платформа | ... |
За счет адаптеров |
Для мессенджеров «базовый набор» — это то, что имеет смысл в общей логике для всех платформ. Специфичные возможности
(опросы, платежи, редактирование сообщений и т. п.) фреймворк не абстрагирует, но они доступны напрямую: через
controller.api и API-клиенты платформ (TelegramRequest, VkRequest, MaxRequest, ViberRequest из
umbot/plugins, у каждого есть универсальный метод call(method)).
Все платформы подключаются через вебхук: long polling не поддерживается, поэтому для проверки с реальным
мессенджером на локальной машине нужен туннель (ngrok и аналоги). Без сети логику можно проверить в консоли через
BotTest. Проверку подписи вебхука Telegram и MAX включает одна команда:
npx umbot webhook <telegram|max> <https-url>.
Нужна своя платформа?
Просто создайте свой адаптер согласно документации для нужной платформы и подключите его к приложению.
Это позволяет интегрироватьumbotв любую внутреннюю систему, корпоративный мессенджер или поддержать любую другую платформу, например WhatsApp или WeChat.
Отдельные npm-пакеты, которые подключаются одной строкой через bot.use(). Ядро остаётся лёгким: драйверы СУБД и
API сторонних платформ ставятся только тем, кому они нужны.
| Пакет | Назначение |
|---|---|
| umbot-knex-adapter | Реляционные БД через Knex.js: PostgreSQL, MySQL/MariaDB, SQLite, MSSQL |
| umbot-wechat-adapter | WeChat Official Account (Weixin) |
npm install umbot umbot-knex-adapter knex pg
import { Bot } from 'umbot';
import { TelegramAdapter } from 'umbot/plugins';
import { KnexAdapter } from 'umbot-knex-adapter';
const bot = new Bot()
.use(new TelegramAdapter(process.env.TELEGRAM_TOKEN))
.use(new KnexAdapter({ host: 'localhost', database: 'bot_db', options: { client: 'pg' } }));
Хотите написать свой адаптер? Технические задания с контрактами и чек-листами готовности:
Установите фреймворк:
npm install umbot
Создайте и запустите проект за пять команд:
npx umbot create echo
cd echo
npm i
npm run build
npm start
Поправьте файлы нужным вам образом. Например:
// index.ts
import { Bot } from 'umbot';
import { fullPlatforms } from 'umbot/plugins';
import { EchoController } from './controller/EchoController';
const bot = new Bot()
.use(fullPlatforms)
.setAppConfig({ json: './data', isLocalStorage: true })
.initBotController(EchoController)
.start('localhost', 3000);
// EchoController.ts
import { BotController, WELCOME_INTENT_NAME } from 'umbot';
export class EchoController extends BotController {
public action(intentName: string | null): void {
if (intentName === WELCOME_INTENT_NAME) {
this.text = 'Привет! Я повторяю за вами.';
} else {
this.text = `Вы сказали: ${this.userCommand}`;
}
}
}
Протестируйте приложение, и в случае необходимости опубликуйте его.
👉 Подробное руководство по запуску
В стресс-тестах на стандартном оборудовании (AMD Ryzen 5 5600G, Windows 10) фреймворк при 1003 командах показывает:
Важно:
Длительное тестирование (48 часов) не выявило утечек памяти или снижения производительности: средняя пропускная способность в последовательном сценарии осталась на уровне ~67 000 RPS, а потребление памяти стабильно.
Подробная документация доступна в следующих разделах:
Umbot Flow — визуальный редактор для создания ботов на фреймворке umbot. Собирайте логику на холсте, экспортируйте JSON-конфигурацию и генерируйте TypeScript-проект через CLI.
Цепочка:
Визуальный редактор → JSON-конфигурация → npx umbot create from-flow → TypeScript-проект → Ваш сервер
Быстрый старт с редактором:
flow.jsonnpx umbot create from-flow flow.json --output ./my-bot
my-botОписание JSON-формата — полная спецификация всех типов узлов, связей и правил генерации кода.
MIT License. См. LICENSE для деталей.
Если у вас есть вопросы или предложения:
Полный справочник — API v-3.1 · все версии.