У меня есть чат-бот для программирования уроков. Есть 2 намерения.
Intent_1 обучающие фразы:
- Я хочу выучить Python
ищу Java тренировку около 3k за месяц
...
Мне нужно 3 обязательных параметра - прог. язык, время_период, стоимость. В этом намерении нет входных или выходных контекстов. Я не использовал заполнение слотов, так как есть другие похожие цели с такими же параметрами, которые могут быть активированы. Я активирую выходной контекст get_missing_parameters
из webhook, если какой-либо из параметров отсутствует.
Код Webhook:
let [language, time, cost] = [agent.parameters.language, agent.parameters.time,
agent.parameters.cost];
if((!language) || (!time) || (!cost)){
context = {'name': 'get_missing_parameters', 'lifespan': 5, 'parameters': {}};
agent.setContext(context);
}
const missingParams = [];
if(!language){missingParams.push('language');}
if(!time){missingParams.push('time');}
if(!cost){missingParams.push('approximate cost you are looking at');}
if(missingParams.length == 1){agent.add(`Ok great, please tell me ${missingParams[0]}`);}
else if(missingParams.length == 2){agent.add(`Please tell me ${missingParams[0]} and
${missingParams[1]}`);}
else if(missingParams.length == 3){agent.add(`Please tell me ${missingParams[0]},
${missingParams[1]} and ${missingParams[2]}`);}
}
Итак, если пользователь вводит "Я хочу выучить python через 3 месяца ", агент ответит" Хорошо, пожалуйста, скажите мне примерную стоимость, которую вы просматриваете ".
Intent_2 имеет get_missing_parameters
в качестве входного контекста, который запускается из приведенного выше кода, когда отсутствует хотя бы параметр 1.
Intent_2 должен собирать остальные параметры. Проблема в том, что для некоторых пользовательских вводов Intent_1 запускается, поскольку обучающие фразы очень похожи (даже несмотря на то, что Intent_2 имеет активный входной контекст).
Как убедиться, что только Intent_2 запущен на 100% времени?