Произвольные пользовательские плагины.
Каждый — либо объект с 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.
OptionalregПлагин для получения конструктора регулярных выражений.
Вызывается без аргументов: plugins.regExp?.getData() или plugins.regExp?.()
Реестр плагинов приложения.
⚠️ ВАЖНО: по умолчанию плагины
i18n,nluиregExpНЕ подключены. Если вы хотите использовать один из них — вы обязаны зарегистрировать его самостоятельно.=== Как зарегистрировать плагин? ===
Создайте реализацию как объект с методом
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; // маркер обязательного наличия
Подключите плагин к боту: 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;