umbot
    Preparing search index...

    Interface TAppPlugin

    Реестр плагинов приложения.

    ⚠️ ВАЖНО: по умолчанию плагины i18n, nlu и regExp НЕ подключены. Если вы хотите использовать один из них — вы обязаны зарегистрировать его самостоятельно.

    === Как зарегистрировать плагин? ===

    1. Создайте реализацию как объект с методом init или как функцию:

      // Вариант 1: объект class MyI18nPlugin implements IPlugin { init(appContext: AppContext) { appContext.plugins['i18n'] = { getData(key: string, ...params: any[]): string { return Translated: ${key}; } }; } }

      // Вариант 2: функция const myNluPlugin: IPluginFn = (appContext: AppContext) => { appContext.plugins['nlu'] = (input: string, ctx?: any) => ({ intent: 'default', entities: {} }); }; myNluPlugin.isPlugin = true; // маркер обязательного наличия

    2. Подключите плагин к боту: bot.use(new MyI18nPlugin()); // или bot.use(myNluPlugin);

    === Требования к реализации ===

    • Плагин должен устанавливать значение в appContext.plugins['имя'].
    • Имя может быть: • i18n — должен соответствовать сигнатуре IAppPlugin<[string, ...any[]], string> или IAppPluginFn<[string, ...any[]], string>nlu — должен соответствовать IAppPlugin<[string, any?], INlu> или IAppPluginFn<[string, any?], INlu>regExp — должен соответствовать IAppPlugin<[], RegExpConstructor> или IAppPluginFn<[], RegExpConstructor> • любое другое имя — произвольная сигнатура (...args: any[]) => any

    === Примеры корректных реализаций ===

    appContext.plugins['i18n'] = (key, ...params) => Hello, ${params[0]}; appContext.plugins['nlu'] = (text, ctx) => ({ intent: 'greet', entities: {} }); appContext.plugins['regExp'] = () => RegExp; appContext.plugins['custom'] = (a, b, c) => a + b + c;

    interface TAppPlugin {
        i18n?: TAppPluginData<[key: string, ...params: unknown[]], string>;
        nlu?: TAppPluginData<
            [text: string, platformNlu: INlu, platform: string, request: unknown],
            INlu,
        >;
        regExp?: TAppPluginData<[], RegExpConstructor>;
        [name: string]: TAppPluginData<any, any> | undefined;
    }

    Indexable

    • [name: string]: TAppPluginData<any, any> | undefined

      Произвольные пользовательские плагины. Каждый — либо объект с getData, либо функция.

    Index

    Properties

    Properties

    i18n?: TAppPluginData<[key: string, ...params: unknown[]], string>

    Плагин интернационализации. Вызывается как: plugins.i18n?.getData('greeting', user) или, если функция: plugins.i18n?.('greeting', user)

    nlu?: TAppPluginData<
        [text: string, platformNlu: INlu, platform: string, request: unknown],
        INlu,
    >

    Плагин NLU.

    Принимает:

    • text — исходный текст запроса;
    • platformNlu — предварительно заполненная платформой структура INlu;
    • platform — имя платформы (например, 'alisa', 'telegram');
    • request — оригинальный объект запроса от платформы.

    Второй аргумент — предварительно заполненная платформой структура INlu (например, в Алисе — с original_utterance, session, user и т.д.). Плагин должен обогатить её intent'ом и entities.

    nlu: (text, platformNlu, platform, request) => {
    return {
    ...platformNlu,
    intent: detectIntent(text),
    entities: extractEntities(text)
    };
    }
    regExp?: TAppPluginData<[], RegExpConstructor>

    Плагин для получения конструктора регулярных выражений. Вызывается без аргументов: plugins.regExp?.getData() или plugins.regExp?.()