У меня есть намерение, когда бот запрашивает дату у пользователя.Пользователи могут сказать today
, last week
, last monday
и т. Д.
Если пользователь говорит такие вещи, как last week
или last month
(в основном вещи, которые нельзя преобразовать в точную дату), тогда бот долженподскажите еще раз please enter exact date to proceed
.
Случай 1: принятие @ sys.date
Я пометил эту сущность как обязательную и установил приглашение please enter the date
, теперь каждый раз, когда пользователь говорит на прошлой неделе, это@sys.date
не обнаруживается, и пользователь снова и снова получает одно и то же приглашение.
Случай 2: получение @ sys.date-time
Если я возьму @sys.date-time
я могу получить все виды входных данных.
Если пользователь сказал на прошлой неделе, в прошлом месяце и т. Д., Тогда я получу startDate
в значении параметра, если пользователь сказал сегодня, в параметре будет прямое значение.
Это также может быть обработано в webhook for slotfilling
, мы можем установить значение параметра в null
и снова вызвать то же самое намерение, поскольку я не могу выяснить , как установить другое приглашение
params = req['queryResult']['parameters']
date = params['date']
if 'startDate' in date:
print('inside startDate')
res = json.dumps({
'followupEventInput' : {
'name' : 'e_date',
"parameters": {
"date": '',
}
}
})
По приведенному выше коду, намерение снова запускается, но подсказка снова такая же, как мы установили в консоли DialogFlow.
Мне пришлось взять @sys.date
как сущность, потому что она предлагает опцию date.recent
, которая подходит для моего случая использования, взяв @sys.date-time
или @sys.date-period
дату, когда DialogFlow перехватывает неверно.Например, если сегодня вторник и пользователь сказал последний понедельник, тогда Dialogflow поймает понедельник прошлой недели, а не самый последний понедельник.И таких случаев много, если мы не принимаем date.recent