umbot
Version:
Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф
130 lines (129 loc) • 6.17 kB
JavaScript
;
/**
* @author Maxim-M <maximco36895@yandex.ru>
*
* **umbot** — кроссплатформенный TypeScript-фреймворк для разработки голосовых навыков и чат-ботов. Он даёт единую бизнес-логику для всех платформ — но одинаково эффективен, даже если вы работаете только с одной.
* Поддерживаются: `Яндекс.Алиса`, `Маруся`, `Сбер Салют`, а также `Telegram`, `VK`, `MAX` и `Viber` из коробки.
*
* ## 🚀 Основные возможности
* - Создание голосовых навыков для Алисы, Маруси и Сбер Салют (SmartApp)
* - Разработка чат-ботов для Telegram, Viber, VK и MAX
* - Создание навыка/бота для любой платформы
* - Единая логика для голосовых и текстовых интерфейсов (навыки/чат-боты)
* - Гибкая система команд, интентов и многошаговых диалогов
* - Встроенная работа с состоянием (локальное хранилище, БД Mongo из коробки)
* - UI-компоненты: кнопки, карточки, звуки, TTS
* - Middleware, плагины, метрики и логирование
* - Расширяемость: легко добавить новую платформу через адаптер
*
* Основная работа приложения основана на использовании {@link Bot}, который отвечает за всё взаимодействие с платформами и обработку запросов.
*
* Подробнее о каждом компоненте читайте в соответствующих разделах документации.
*
* @example
* ```ts
* // Минимальный пример работы
* import { Bot, FALLBACK_COMMAND, HELP_INTENT_NAME, WELCOME_INTENT_NAME } from 'umbot';
* import { fullPlatforms } from 'umbot/plugins';
*
* const bot = new Bot()
* .use(fullPlatforms) // Подключаем все доступные платформы
* .setAppConfig({ json: './data', isLocalStorage: true }) // Директория для данных и локальное хранилище
* .addCommand(WELCOME_INTENT_NAME, ['привет'], (_: string, bc: BotController) => {
* bc.text = 'Привет! Я новый навык.';
* bc.buttons.addBtn('Помощь');
* })
* .addCommand(HELP_INTENT_NAME, ['помощь'], (_: string, bc: BotController) => {
* bc.text = 'Я умею отвечать на команды и показывать кнопки';
* })
* .addCommand(FALLBACK_COMMAND, [], (_: string, bc: BotController) => {
* bc.text = bc.userCommand || 'Вы ничего не сказали';
* }) // Если команда не найдена
* .start('localhost', 3000);
* ```
*
* @packageDocumentation
* @module index
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
// ===== Ядро приложения =====
/**
* Основные компоненты ядра фреймворка
*
* Включает:
* - Базовые классы и интерфейсы
* - Систему обработки команд
* - Управление состоянием
* - Обработку ошибок
*/
__exportStar(require("./core"), exports);
// ===== Взаимодействие с web api =====
/**
* Модули для работы с внешними API
*
* Предоставляет:
* - Интерфейсы для API
* - Классы для HTTP-запросов
* - Интеграции с сервисами
* - Обработку ответов
*/
__exportStar(require("./api"), exports);
// ===== Второстепенные компоненты =====
/**
* Вспомогательные компоненты
*
* Включает:
* - Кнопки и клавиатуры
* - Карточки и изображения
* - Звуки и аудио
* - UI элементы
*/
__exportStar(require("./components"), exports);
// ===== Поддерживаемые платформы =====
// ===== Базовый контроллер для написания логики приложения =====
/**
* Контроллеры приложения
*
* Предоставляет:
* - Базовый класс BotController
* - Методы для обработки команд
* - Управление состоянием
* - Шаблоны ответов
*/
__exportStar(require("./controller"), exports);
// ===== Модели для взаимодействия с бд =====
/**
* Модели данных
*
* Содержит:
* - Классы для работы с БД
* - Интерфейсы моделей
* - Миграции
* - Запросы
*/
__exportStar(require("./models"), exports);
// ===== Дополнительные утилиты =====
/**
* Вспомогательные утилиты
*
* Включает:
* - Работа с текстом
* - Форматирование данных
* - Валидация
* - Хелперы
*/
__exportStar(require("./utils"), exports);