umbot
    Preparing search index...

    Module umbot[v-3.0] - v3.0.14

    umbot

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

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

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

    npm version License: MIT TypeScript Security Supported Platforms


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

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

    • ✅ Одна кодовая база для любой платформы. Хотите только Алису? Легко. Решите добавить Марусю или Telegram — просто добавьте нужный адаптер, логика остаётся.
    • ⚡ В типичных сценариях (до 1 000 команд) полная обработка запроса внутри фреймворка, включая поиск и выполнение команд, занимает менее 30 мс даже в самом сложном случае (fallback). В большинстве случаев это время составляет < 10 мс. Это оставляет разработчику более 2.5 секунд на выполнение собственной бизнес-логики — это критически важно для платформ с жёсткими тайм-аутами (Алиса, Маруся, Сбер и др.).
    • При первичной загрузке медиафайлов время ответа может превысить 1 секунду — поэтому umbot предусмотрел это, и рекомендует использовать предзагрузку необходимых ресурсов за счет использования класса Preload.
    • 🔒 Безопасная обработка регулярных выражений с защитой от ReDoS из коробки
    • 💾 Встроенное состояние, кэширование медиа, кнопки, карточки — «из коробки»
    • 🛠 TypeScript, CLI, автодополнение, 80%+ покрытие тестами
    • 🧰 Дополнительные утилиты для навигации и поиска текста, ускоряющие разработку.

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

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

    • Голосовые платформы (Алиса, Маруся, Салют) — поддерживается весь доступный функционал (кнопки, аудиосообщения, карточки и т.д.).
    • Чат-боты (Telegram, VK, Viber и др.) — поддерживается только необходимый и востребованный набор функций (карточки, кнопки, аудиосообщения). Специфические элементы вроде опросов или кастомных интерфейсов мессенджеров исключены, так как они не имеют аналогов в голосовых платформах и редко нужны в кроссплатформенной логике.

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

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

    • писать две (или больше) версии логики,
    • поддерживать разные форматы ответов,
    • дублировать обработку состояний, кнопок, медиа
    • знать API каждой платформы.

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

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

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

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

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

    • Вы разрабатываете под одну платформу (Алиса, Салют, Маруся, VK и др.). Вы получите чистое разделение логики и транспорта, избавитесь от дублирования кода внутри проекта и заложите архитектуру, которая безболезненно масштабируется, когда потребуется вторая платформа. Инструмент не усложнит — он упорядочит.
    • Вы поддерживаете несколько платформ одновременно. Вы перестанете синхронизировать изменения вручную. Новая функциональность появляется сразу везде, а поддержка разных API сводится к единому интерфейсу.
    • Вы проектируете систему с прицелом на будущее. Вы не хотите переписывать ядро, когда бизнес попросит добавить Telegram, корпоративный портал или голосового ассистента. umbot делает расширение предсказуемым.
    • Вы работаете в корпоративной среде с внутренними мессенджерами. Вы унифицируете разработку чат-ботов, упрощаете онбординг и переиспользование компонентов между командами.
    • Вы цените чистоту кода и не терпите копипасту. Вы устали переносить обработчики из проекта в проект или мучительно адаптировать бизнес-логику под каждый новый API. umbot позволяет писать ядро один раз и забыть о boilerplate.

    Ключевая мысль: 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 командах показывает:

    • Пропускная способность (реалистичный сценарий)41 000 RPS
      (эмуляция полного цикла: входящий запрос → нормализация → логика → ответ)
    • Пиковая пропускная способность (burst)40 000 RPS
      (одновременная обработка тысяч параллельных вызовов)
    • Последовательная пропускная способность (ядро)66 000 RPS
      (максимальная скорость одного потока)

    Важно:

    • Тесты проводились без сетевых вызовов и операций с базами данных, поэтому цифры показывают потенциал ядра фреймворка.
    • В реальном проекте итоговый RPS будет определяться внешними факторами (сеть, БД, логика приложения).

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

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

    • CLI команды

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

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

    Documents

    cli/README
    src/docs/adapter/dbAdapter
    src/docs/adapter/platformAdapter
    src/docs/adapter/readme
    src/docs/api-reference
    src/docs/BENCHMARKS
    src/docs/configuration
    src/docs/deployment
    src/docs/FAQ
    src/docs/getting-started
    src/docs/GUIDE
    src/docs/http-client
    src/docs/middleware
    src/docs/next-release
    src/docs/performance-and-guarantees
    src/docs/platform-integration
    src/docs/testing

    Modules

    build
    index
    middleware
    plugins
    preload
    test