Версия 3.0.0 — это крупное обновление с фокусом на модульность, гибкость и современные стандарты. Мы перешли на плагинную архитектуру, обновили требования к среде выполнения и упростили расширение функционала. Ниже — список ключевых изменений и инструкция по миграции.
Версия 2.x.x находится в фазе поддержки: принимаются только исправления критических ошибок.
Следующая стабильная версия станет 3.0.0, в версии ожидаются следующие доработки:
addStep), привязанные к имени шага или сценария (через controller.oldIntentName),
теперь обрабатываются напрямую без дополнительного поиска по списку команд. Это ускоряет обработку таких случаев.Статусы:
| Задача | статус | Комментарий |
|---|---|---|
| Плагинная архитектура | готово | Базовые плагины находятся в umbot/plugins |
| Кастомный RegExp | готово | Добавляется разработчиком через взаимодействие с appContext.plugins.regExp |
| Поддержка активных рассылок | готово | Добавлен метод send |
| Указание NLU-провайдера | готово | Добавляется разработчиком через взаимодействие с appContext.plugins.nlu |
| Поддержка i18n | готово | Добавляется разработчиком через взаимодействие с appContext.plugins.i18n |
| Обновление версии nodeJS | готово | Также обновлен typescript |
| Оптимизация поиска по regex | В работе | |
| Команда по имени шага/сценария | готово | Добавлен метод addStep |
| Переопределить ответ webhook | готово | В метода run и webhook добавлен 3 callback аргумент |
Список доработок будет обновляться. Ориентировочная дата релиза: 12 апреля 2026 г.
До версии 3.0, вся работа с платформами была заложена в логику самого фреймворка. В версии 3.0 мы перешли на архитектуру на основе адаптеров, поэтому для корректной работы приложения, необходимо перейти на новую механику работы. Сделать это можно следующими способами:
import { fullPlatforms } from 'umbot/plugins';
import { Bot } from 'umbot';
const bot = new Bot();
bot.use(fullPlatforms); // Подключаем все платформы
import { AlisaAdapter, MarusiaAdapter } from 'umbot/plugins';
import { Bot } from 'umbot';
const bot = new Bot();
bot.use(new AlisaAdapter()); // Подключаем платформу для Алисы
bot.use(new MarusiaAdapter()); // Подключаем платформу для Маруси
Адаптеры можно комбинировать — например, одновременно подключить Алису и Telegram-бота.
Список всех доступных "из коробки" адаптеров:
import { adapters } from 'umbot/plugins';
Также можно подключить либо голосовые платформы, либо платформы для чат-ботов, для этого есть соответствующие методы:
Для единого и понятного формата, все звуки и звуковые эффекты были перенесены в SoundConstants. Данный подход позволяет создавать различные звуковые эффекты, без завязки на платформу. Как это работало раньше
import { AlisaSound } from 'umbot';
botController.tts = `${AlisaSound.S_AUDIO_GAME_WIN} `.repeat(i).trim();
Как работает сейчас
import { SoundConstants } from 'umbot';
botController.tts = `${SoundConstants.S_AUDIO_GAME_WIN} `.repeat(i).trim();
Далее фреймворк обращается к адаптеру, и сам адаптер приводит текст к корректному виду. В случае, если платформа не поддерживает различные эффекты, фреймворк самостоятельно удалит все лишние эффекты.
Раньше
import { Bot, Alisa, T_ALISA } from 'umbot';
const bot = new Bot(T_ALISA);
const botClass = new Alisa(bot._appContext);
bot.run(botClass, T_ALISA);
сейчас
import { Bot } from 'umbot';
import { AlisaAdapter, T_ALISA } from 'umbot/plugins';
const bot = new Bot(T_ALISA);
bot.use(new AlisaAdapter());
bot.run(T_ALISA);
Начиная с версии 3.0, из коробки, в фреймворке нет подключения к базе данных по умолчанию, из-за чего необходимо самостоятельно подключить необходимый адаптер для работы. Сделать это можно следующим образом:
import { Bot } from 'umbot';
import { FileAdapter, MongoAdapter } from 'umbot/plugins';
const bot = new Bot();
bot.use(new FileAdapter()); // Подключаем файловую бд
bot.use(
new MongoAdapter({
host: process.env.host,
user: process.env.user,
pass: process.env.pass,
database: process.env.database,
}),
); // Подключаем MongoDb
Также появилась возможность указать свой собственный адаптер для работы с базой данных.
⚠️ Важно: одновременно можно использовать только один адаптер базы данных. Если зарегистрировано несколько — будет использован последний.
Метод bot.run() больше не принимает класс платформы в качестве первого аргумента — все платформы теперь регистрируются
через bot.use().
Раньше
import { Bot, Alisa, T_ALISA } from '../../src';
const bot = new Bot();
bot.run(Alisa, T_ALISA, content);
Сейчас
import { Bot } from '../../src';
import { T_ALISA, AlisaAdapter } from '../../src/plugins';
const bot = new Bot();
bot.use(new AlisaAdapter());
bot.run(T_ALISA, content);
До версии 3.0 способ указания своей платформы был не удобен по следующим причинам:
После перехода на адаптеры, подобных проблем удалось избежать. Сама документация по указанию своей платформы улучшена и стала понятнее. Также можно создать множество своих платформ и подключить их.
Старый способ задания платформы выглядит следующим образом:
TemplateTypeModel, определяя нужные методы.import { BotTest, IBotTestParams } from '../../../src/test';
import skillStorageConfig from '../../config/skillStorageConfig';
import skillDefaultParam from '../../config/skillDefaultParam';
import { UserAppController } from './controller/UserAppController';
import { UserApp } from './UserTemplate/Controller/UserApp';
import userDataConfig from './UserTemplate/userDataConfig';
const bot = new BotTest();
bot.setAppConfig(skillStorageConfig());
bot.setPlatformParams(skillDefaultParam());
bot.initBotController(UserAppController);
//bot.run(userApp);
/**
* Отображаем ответ навыка и хранилище в консоли.
*/
const params: IBotTestParams = {
isShowResult: true,
isShowStorage: false,
isShowTime: true,
userBotClass: UserApp,
userBotConfig: userDataConfig,
};
bot.test(params);
В новой версии, необходимо также наследоваться от базового класса, но только не от TemplateTypeModel, а от
BasePlatformAdapter, которых
находится в umbot/plugins. Далее, согласно документации определить необходимые методы, после чего подключить созданный
адаптер к приложению через bot.use.
Демо пример можно посмотреть тут.
Итоговый код получается следующий:
import { BotTest, IBotTestParams } from '../../../src/test';
import skillStorageConfig from '../../config/skillStorageConfig';
import skillDefaultParam from '../../config/skillDefaultParam';
import { UserAppController } from './controller/UserAppController';
import { UserAdapter } from './UserTemplate/Adapter/UserAdapter';
const bot = new BotTest();
bot.use(new UserAdapter()); // Подключаем пользовательский адаптер для платформы
bot.setAppConfig(skillStorageConfig());
bot.setPlatformParams(skillDefaultParam());
bot.initBotController(UserAppController);
//bot.run();
/**
* Отображаем ответ навыка и хранилище в консоли.
*/
const params: IBotTestParams = {
isShowResult: true,
isShowStorage: false,
isShowTime: true,
};
bot.test(params);
До версии 3.0
DbControllerModel определяя все нужные методы. bot.use(new DbConnect())В новой версии, необходимо наследоваться от BaseDbAdapter, которых находится в umbot/plugins. Далее, согласно
документации определить необходимые методы, после чего подключить созданный адаптер к приложению через bot.use.
Демо пример можно
посмотреть тут.