Разработчик смартапа может сам определить механизм срабатывания стейтов при совместном использовании интентов, паттернов и групп примеров.
Функция-обработчик в качестве параметра получает контекст 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;
}
})
- В секции
init
объявляем обработчик. - Задаем обработчик для фазы
selectNLUResult
. - Выведем результаты в лог:
log(ctx.nluResults)
. - Далее задаем порядок использования результатов:
- использовать результат от интентов:
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];
.
- использовать результат от интентов: