Произвольные пользовательские плагины.
Каждый — либо объект с getData, либо функция.
Optionali18nПлагин интернационализации.
Вызывается как: plugins.i18n?.getData('greeting', user)
или, если функция: plugins.i18n?.('greeting', user)
OptionalnluПлагин NLU.
Принимает:
text — исходный текст запроса;platformNlu — предварительно заполненная платформой структура INlu;platform — имя платформы (например, 'alisa', 'telegram');request — оригинальный объект запроса от платформы.Второй аргумент — предварительно заполненная платформой структура INlu (например, в Алисе — с original_utterance, session, user и т.д.). Плагин должен обогатить её intent'ом и entities.
OptionalregExpПлагин для получения конструктора регулярных выражений.
Вызывается без аргументов: plugins.regExp?.getData() или plugins.regExp?.()
Реестр плагинов приложения.
По умолчанию плагины
i18n,nluиregExpне подключены — зарегистрируйте их самостоятельно, если они нужны.Как зарегистрировать плагин:
Создайте реализацию как объект с методом
initили как функцию:// Вариант 1: объект class MyI18nPlugin implements IPlugin { init(appContext: AppContext) {
appContext.plugins['i18n'] = {
getData(key: string, ...params: unknown[]): string {
return
Translated: ${key}; } }; } }// Вариант 2: функция const myNluPlugin: IPluginFn = (appContext: AppContext) => { appContext.plugins['nlu'] = (text: string, ctx?: unknown) => ({ intent: 'default', entities: {} }); }; myNluPlugin.isPlugin = true; // маркер обязательного наличия
Подключите плагин к приложению: bot.use(new MyI18nPlugin()); // или bot.use(myNluPlugin);
Требования к реализации:
appContext.plugins['имя'].i18n— должен соответствовать сигнатуреTAppPluginData<[key: string, ...params: unknown[]], string>•nlu— должен соответствовать сигнатуреTAppPluginData<[text: string, platformNlu: INlu, platform: string, request: unknown], INlu>•regExp— должен соответствовать сигнатуреTAppPluginData<[], RegExpConstructor>• любое другое имя — произвольная сигнатураAnyPluginDataПримеры корректных реализаций:
appContext.plugins['i18n'] = (key: string, ...params: unknown[]) =>
Hello, ${params[0]}; appContext.plugins['nlu'] = (text, platformNlu, platform, request) => ({ intent: 'greet', entities: {} }); appContext.plugins['regExp'] = () => RegExp; appContext.plugins['custom'] = (a, b, c) => a + b + c;