Настройка правил активации


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

Функция-обработчик в качестве параметра получает контекст ctx, содержащий поле nluResults. Объект nluResults содержит следующие поля:

  • patterns — массив результатов от паттерн-матчера;
  • examples — массив результатов от примеров;
  • intents — массив результатов от интентов;
  • externalIntents — значение интента полученного из протокола от ассистента;
  • selected — результат, выбранный по умолчанию.
Для изменения источника результата измените значение поля selected.

Пример

theme:/

    init:                                                       //объявляем обработчик

        bind("selectNLUResult", function(ctx) {                 //задаем обработчик для фазы `selectNLUResult`
            log(ctx.nluResults);                                // выводим результаты в лог

        if (ctx.nluResults.intents.length > 0){
          ctx.nluResults.selected = ctx.nluResults.intents[0];  // используем результат от интентов
          return;
        }

        if (ctx.nluResults.patterns.length > 0){
          ctx.nluResults.selected = ctx.nluResults.patterns[0];  // если результата от интентов нет, используем паттерны
          return;
        }

        if (ctx.nluResults.examples.length > 0){
          ctx.nluResults.selected = ctx.nluResults.examples[0];  // если результата от интентов и паттернов нет, используем примеры
        }

        if (ctx.nluResults.externalIntents.length > 0){
          ctx.nluResults.selected = ctx.nluResults.externalIntents[0];  // используем результат от интентов из протокола
          return;
        }
        })
  1. В секции init объявляем обработчик. Вы также можете задать обработчик в отдельном js-файле и подключить его в сценарии при помощи require.
  2. Задаем обработчик для фазы selectNLUResult.
  3. Выведем результаты в лог: log(ctx.nluResults).
  4. Далее задаем порядок использования результатов:

    • использовать результат от интентов: ctx.nluResults.selected = ctx.nluResults.intents[0];
    • использовать результат от паттерн-матчера: ctx.nluResults.selected = ctx.nluResults.patterns[0];
    • использовать результат от примеров: ctx.nluResults.selected = ctx.nluResults.examples[0].
    • использовать результат от интента полученного из протокола: ctx.nluResults.selected = ctx.nluResults.externalIntents[0];.

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней