umbot

umbot — это TypeScript-фреймворк для разработки голосовых навыков и чат-ботов. Он даёт единую бизнес-логику для всех платформ — но одинаково эффективен, даже если вы работаете только с одной. Поддерживаются: Яндекс.Алиса, Маруся, Сбер Салют, а также Telegram, VK, MAX и Viber из коробки.

В отличие от большинства решений, требующих отдельной реализации под каждую платформу, umbot абстрагирует различия в форматах запросов и ответов, предоставляя разработчику единый, предсказуемый интерфейс. Это позволяет писать логику один раз — и запускать её везде.

Фреймворк следует SemVer. Breaking changes возможны только в MAJOR-версиях.

npm version License: MIT TypeScript Security Supported Platforms


💡 Почему umbot?

Больше не нужно писать несколько версий одного приложения.
Больше не нужно разбираться в JSON-форматах Алисы, Сбера, Маруси, Telegram, Max и тд.
Бизнес-логика — одна. Платформа — любая.

Ключевые преимущества:

umbot — пишешь один раз, запускаешь везде.

Единый API, адаптированный под платформу

umbot предоставляет унифицированный интерфейс для работы с ответами, но при этом учитывает специфику каждой платформы:

Этот подход гарантирует, что ваш навык/бот будет вести себя предсказуемо и не потребует специальных обходных путей при переходе между платформами.

Чем umbot отличается от других решений?

Большинство фреймворков (например, telegraf, alice-sdk и тд) ориентированы только на одну платформу. Чтобы запустить приложение и в Алисе, и в Telegram, приходится:

umbot решает эту проблему:
одна бизнес-логика для всех платформ,
единый API для кнопок, карточек, голоса и текста,
автоматическая адаптация под формат каждой платформы “под капотом”.

Это особенно ценно, если вы уже поддерживаете навык на Алисе и хотите быстро выйти в Марусю, Max или VK — без переписывания или существенных доработок кода.

Даже если вы пока разрабатываете только под одну платформу, umbot избавляет от boilerplate, даёт единый API для работы с состоянием, кнопками и медиа, а главное — не мешает, когда придёт время добавлять новые каналы.

Для кого umbot?

umbot — это не просто обёртка под несколько платформ. Это архитектурное решение для проектов, где диалог инициирует пользователь. Оно одинаково ценно как для одной платформы, так и для десятка.

Вы будете использовать umbot, если:

Ключевая мысль: umbot — это не «надстройка для мультиплатформенности», а базовый слой, который делает разработку под любую платформу (даже одну) быстрее, чище и готовой к масштабированию.


Поддерживаемые платформы

Платформа Идентификатор Статус
Яндекс.Алиса alisa ✅ Полная поддержка
Маруся marusia ✅ Полная поддержка
Сбер Салют (SmartApp) smart_app ✅ Полная поддержка
Telegram telegram ✅ Полная поддержка
VK vk ✅ Полная поддержка
Max max_app ✅ Полная поддержка
Viber viber ✅ Полная поддержка
Ваша платформа ... ✅ За счет адаптеров

💡 Нужна своя платформа?
Просто создайте свой адаптер согласно документации для нужной платформы и подключите его к приложению.
Это позволяет интегрировать umbot в любую внутреннюю систему, корпоративный мессенджер или поддержать любую другую платформу, например whatsapp.


🚀 Быстрый старт

Установите фреймворк:

npm install umbot

Создайте и запустите проект за четыре команды:

npx umbot create echo
cd echo
npm i
npm run start

Поправьте файлы нужным вам образом. Например:

// index.ts
import { Bot } from 'umbot';
import { EchoController } from './EchoController';

const bot = new Bot()
    .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): void {
        if (intentName === WELCOME_INTENT_NAME) {
            this.text = 'Привет! Я повторяю за вами.';
        } else {
            this.text = `Вы сказали: ${this.userCommand}`;
        }
    }
}

Протестируйте приложение, и в случае необходимости опубликуйте его.

👉 Подробное руководство по запуску

Производительность

В стресс-тестах на стандартном оборудовании (AMD Ryzen 5 5600G, Windows 10) фреймворк при 1003 командах показывает:

Важно:

Длительное тестирование (48 часов) не выявило утечек памяти или снижения производительности: средняя пропускная способность в последовательном сценарии осталась на уровне 66 000 RPS, а потребление памяти стабильно.

📚 Документация

Подробная документация доступна в следующих разделах:

Полезные ссылки

🛠 Инструменты разработчика

📝 Лицензия

MIT License. См. LICENSE для деталей.

🤝 Поддержка

Если у вас есть вопросы или предложения: