umbot
    Preparing search index...

    API Reference

    Данный справочник содержит описание всех публичных классов, методов и интерфейсов фреймворка umbot. Для начала работы смотрите раздел 'Быстрый старт'.

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

    Свойство Тип Описание
    text string Текст ответа пользователю
    tts string | null Текст для озвучки (на голосовых платформах, если null — может быть автоматически подставлен из text)
    buttons Buttons Компонент кнопок (инициализируется лениво через getter)
    card Card Компонент карточек/галерей (инициализируется лениво через getter)
    nlu Nlu Данные NLU (инициализируется лениво через getter)
    sound Sound Звуковые эффекты (инициализируется лениво через getter)
    userId string | number | null Идентификатор пользователя
    userToken string | null Токен авторизации пользователя (если платформа его предоставляет)
    userMeta unknown | null Доп. информация о пользователе (зависит от платформы)
    messageId number | string | null ID сообщения (часто используется для определения “первого” сообщения)
    userCommand string | null Команда пользователя в нижнем регистре
    originalUserCommand string | null Оригинальная команда пользователя
    payload object | string | null | undefined Дополнительные параметры запроса (payload)
    userData TUserData Данные пользователя (БД или локальное хранилище, в зависимости от setAppConfig)
    state TPlatformState | null Локальное хранилище платформы (если платформа поддерживает и включено isLocalStorage)
    isAuth boolean Флаг “нужно запросить авторизацию” (поддержка зависит от платформы)
    userEvents IUserEvent | null События пользователя (авторизация/оценка), если платформа присылает
    isScreen boolean Есть ли экран у пользователя (если платформа сообщает)
    isEnd boolean Завершить диалог/сессию (поддержка зависит от платформы)
    skipAutoReply boolean Если true, фреймворк не будет пытаться “авто-отправить” ответ (актуально для платформ, где вы сами отправляете сообщения через API)
    requestObject Record<string, unknown> | string | unknown | null Оригинальный объект запроса от платформы
    thisIntentName string | null Имя шага/интента, которое нужно сохранить как “следующий шаг”
    oldIntentName string | null Имя предыдущего шага/интента (из userData.oldIntentName или из state.oldIntentName)
    emotion string | null Эмоция ответа (если платформа поддерживает)
    appeal 'official' | 'no_official' | null Стиль обращения (если платформа поддерживает)
    isSendRating boolean Запросить у пользователя оценку (если платформа поддерживает)
    Метод Параметры Возвращаемое значение Описание
    action intentName: string | null, isCommand?: boolean, isStep?: boolean void Ваш основной обработчик. Вызывается фреймворком (переопределяется в наследнике)
    run - void | Promise Запуск обработки запроса (вызывается фреймворком; вручную обычно не вызывают)

    Компонент для работы с кнопками интерфейса.

    Метод Параметры Возвращаемое значение Описание
    addBtn text: string, url?: string, payload?: unknown Buttons Добавление кнопки
    addLink text: string, url?: string, payload?: unknown Buttons Добавление кнопки-ссылки
    clear - void Очистка всех кнопок

    Компонент для работы с карточками и галереями.

    Метод Параметры Возвращаемое значение Описание
    addImage image: string | null, title?: string, desc?: string, button?: string | object | null Card Добавление изображения/элемента (4-й параметр — кнопка элемента)
    addOneImage image: string | null, title?: string, desc?: string, button?: string | object | null Card Заменяет текущую карточку одним изображением
    setTitle text: string Card Добавление заголовка
    setDescription text: string Card Добавление описания
    addButton button: string | object Card Добавление кнопки к элементу карточки
    clear - void Очистка карточки

    Компонент для работы со звуками.

    Метод Параметры Возвращаемое значение Описание
    addSound soundToken: string Sound Добавление звука

    Конфигурация приложения.

    interface IAppConfig {
    error_log?: string; // Путь к директории логов
    json?: string; // Путь к директории JSON
    db?: IAppDB; // Конфигурация базы данных
    isLocalStorage?: boolean; // Использование локального хранилища
    }

    Параметры приложения.

    interface IAppParam {
    welcome_text?: string | string[]; // Текст приветствия
    help_text?: string | string[]; // Текст помощи
    intents?: IAppIntent[] | null; // Массив интентов
    }

    Интерфейс для хранения пользовательских данных.

    interface IUserData {
    oldIntentName?: string; // Название предыдущего интента
    [key: string]: unknown; // Дополнительные данные
    }
    const WELCOME_INTENT_NAME = 'welcome'; // Интент приветствия
    const HELP_INTENT_NAME = 'help'; // Интент помощи
    import { BotController, WELCOME_INTENT_NAME } from 'umbot';

    class MyController extends BotController {
    public action(intentName: string | null): void {
    switch (intentName) {
    case WELCOME_INTENT_NAME:
    this.text = 'Привет! Чем могу помочь?';
    this.buttons.addBtn('Помощь').addBtn('О приложении');
    break;

    case 'about':
    this.text = 'Это пример приложения на umbot';
    this.card.setTitle('О приложении').addImage('image_token');
    break;

    default:
    this.text = 'Извините, я вас не понял';
    break;
    }
    }
    }
    import { Bot } from 'umbot';

    const bot = new Bot();

    // Добавление простой команды
    bot.addCommand('greeting', ['привет', 'здравствуй']);

    // Добавление команды с колбэком
    bot.addCommand(
    'numbers',
    ['\\b\\d{3}\\b'],
    (userCommand, botController) => {
    if (botController) {
    botController.text = `Вы ввели число: ${userCommand}`;
    }
    },
    true,
    );
    interface GameData extends IUserData {
    score: number;
    level: number;
    example?: string;
    result?: number | string;
    isGame?: boolean;
    }

    class GameController extends BotController<GameData> {
    public action(intentName: string | null): void {
    // Инициализация данных при первом запуске
    if (!this.userData.score) {
    this.userData = {
    score: 0,
    level: 1,
    };
    }

    // Обработка команд
    switch (intentName) {
    case 'addScore':
    this.userData.score += 10;
    this.text = `Ваш счет: ${this.userData.score}`;
    break;
    }
    }
    }
    class ButtonController extends BotController {
    public action(intentName: string | null): void {
    switch (intentName) {
    case 'showButtons':
    // Добавление кнопок
    this.buttons.addBtn('Помощь').addBtn('Назад').addBtn('Выход');
    this.text = 'Выберите действие:';
    break;
    }
    }
    }
    class CardController extends BotController {
    public action(intentName: string | null): void {
    switch (intentName) {
    case 'showCard':
    // Создание карточки
    this.card
    .setTitle('Заголовок карточки')
    .addImage('image_token', ' ', 'Описание изображения');
    this.text = 'Вот ваша карточка:';
    break;
    }
    }
    }
    class NluController extends BotController {
    public action(intentName: string | null): void {
    // Получение интента из NLU
    const nluIntent = this.nlu.getIntent();
    if (nluIntent) {
    this.text = `Распознанный интент: ${nluIntent}`;
    } else {
    this.text = 'Не удалось распознать интент';
    }
    }
    }
    class AuthController extends BotController {
    public action(intentName: string | null): void {
    // Проверка авторизации
    if (this.isAuth) {
    this.text = 'Вы авторизованы';
    this.userToken = this.userToken || 'default_token';
    } else {
    this.text = 'Требуется авторизация';
    this.isAuth = true;
    }
    }
    }
    class RatingController extends BotController {
    public action(intentName: string | null): void {
    // Проверка оценки
    if (this.isSendRating) {
    this.text = 'Спасибо за оценку!';
    this.isSendRating = false;
    } else {
    this.text = 'Пожалуйста, оцените наш сервис';
    this.isSendRating = true;
    }
    }
    }