Разработчик чат-бота может сам определить механизм срабатывания стейтов при совместном использовании интентов, паттернов и групп примеров.
Функция-обработчик в качестве параметра получает контекст 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;
}
})