umbot — это один из TypeScript-фреймворков для разработки чат-ботов и голосовых навыков с единой бизнес-логикой под
все
ведущие российские платформы и не только: Яндекс.Алиса, Маруся, Сбер SmartApp, а также Telegram,VK, MAX и
Viber.
В отличие от большинства решений, требующих отдельной реализации под каждую платформу, umbot абстрагирует различия в
форматах запросов и ответов, предоставляя разработчику единый, предсказуемый интерфейс. Это позволяет писать логику один
раз — и запускать её везде.
Фреймворк следует SemVer . Breaking changes возможны только в MAJOR-версиях.
[
](# Поддерживаемые платформы)
umbot?Больше не нужно писать несколько версий одного приложения.
Больше не нужно разбираться в JSON-форматах Алисы, Сбера, Маруси, Telegram и Max.
Ваша логика — одна. Платформы — любые.
Ключевые преимущества:
umbot занимает в среднем < 30 мс. (Оставляет минимум
2.5 сек на вашу логику).
При первичной загрузке медиафайлов время может превысить 1 секунду — рекомендуется использовать Preloadumbot — пишешь один раз, запускаешь везде.
umbot отличается от других решений?Большинство фреймворков (например, telegraf, alice-sdk и тд) ориентированы только на одну платформу. Чтобы
запустить бота и в Алисе, и в Telegram, приходится:
umbot решает эту проблему:
одна бизнес-логика для всех платформ,
единый API для кнопок, карточек, голоса и текста,
автоматическая адаптация под формат каждой платформы "под капотом".
Это особенно ценно, если вы уже поддерживаете навык на Алисе и хотите быстро выйти в Telegram или VK — без переписывания или существенных доработок кода.
umbot?| Платформа | Идентификатор | Статус |
|---|---|---|
| Яндекс.Алиса | alisa |
✅ Полная поддержка |
| Маруся | marusia |
✅ Полная поддержка |
| Сбер SmartApp | smart_app |
✅ Полная поддержка |
| Telegram | telegram |
✅ Полная поддержка |
| VK | vk |
✅ Полная поддержка |
| Max | max_app |
✅ Полная поддержка |
| Viber | viber |
✅ Полная поддержка |
| Ваша платформа | ... |
✅ За счет адаптеров |
💡 Нужна своя платформа?
Просто создайте свой адаптер согласно документации для нужной платформы и подключите его к приложению.
Это позволяет интегрироватьumbotв любую внутреннюю систему, корпоративный мессенджер или поддержать любую другую платформу, например
Установите фреймворк:
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(new 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}`;
}
}
}
Протестируйте приложение, и в случае необходимости опубликуйте его.
👉 Подробное руководство по запуску
Подробная документация доступна в следующих разделах:
Фреймворк поддерживает работу с re2. За счет использования данной библиотеки, можно добиться существенного ускорения обработки регулярных выражений, а также добиться сокращения по потреблению памяти. По памяти потребление уменьшается примерно в 3-7 раз, а время выполнения уменьшается в среднем в 2-15 раз. Для корректной установки на window нужно следовать инструкции, установив python3.13, а также инструменты visual studio. Установка на linux или mac происходит сильно проще. Установка:
npm install --save re2@latest
Дальше фреймворк сам определит установлен re2 или нет, и в случае если он установлен, все регулярные выражения будут обрабатываться через него.
Не рекомендуется использовать в релизной версии приложения файловую базу данных, так как данный подход может привести к падению приложения, при большом количестве записей. Связано это с тем, что в файловой базе данных, данные хранятся в оперативной памяти. Для корректного сохранения данных в БД укажите:
bot.use(new MyAdapter()))bot.setAppConfig({db:{...}}), либо в конструкторе при подключении
адаптера к приложениюMIT License. См. LICENSE для деталей.
Если у вас есть вопросы или предложения: