我打算让bot向用户询问日期。用户可能会说today
,last week
,last monday
等。
如果用户说的是last week
或last month
之类的东西(基本上是不能转换为确切日期的东西),则漫游器应再次提示please enter exact date to proceed
。
案例1:采用@ sys.date
我已将此实体标记为必填项,并设置了提示please enter the date
,现在用户每次在上星期说,@sys.date
都没有检测到它,并且用户一次又一次收到相同的提示。 / p>
案例2:采用@ sys.date-time
如果我使用@sys.date-time
,我将能够获得各种输入。
如果用户说上周,过去几个月等,那么我将获得startDate
的参数值,如果用户今天说了,参数中将有直接值。
这也可以在webhook for slotfilling
中处理,我们可以将参数值设置为null
并再次调用相同的意图,因为我无法弄清楚如何设置不同的提示 < / p>
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
答案 0 :(得分:1)
我建议创建其他意图,使其具有训练短语,例如:上周或上个月。然后让此响应提示用户在日期上更具体。