Dialogflow es DialogFlow参数验证后重新编译
我的意图是机器人向用户询问日期。用户可能会说Dialogflow es DialogFlow参数验证后重新编译,dialogflow-es,chatbot,Dialogflow Es,Chatbot,我的意图是机器人向用户询问日期。用户可能会说今天,上周,上周一等等。 如果用户说的是上周或上月(基本上是无法转换为确切日期的事情),则bot应再次提示请输入确切日期继续 案例1:采用@sys.date 我已将此实体标记为所需,并设置提示请输入日期,现在每次用户上周说,它都不会被@sys.date检测到,并且用户一次又一次地收到相同的提示 案例2:采用@sys.date-time 如果我使用@sys.date-time我可以获得所有类型的输入。 如果用户说上周、上个月等,那么我将在参数值中获得st
今天
,上周
,上周一
等等。如果用户说的是上周或上月(基本上是无法转换为确切日期的事情),则bot应再次提示
请输入确切日期继续
案例1:采用@sys.date
我已将此实体标记为所需,并设置提示请输入日期
,现在每次用户上周说,它都不会被@sys.date
检测到,并且用户一次又一次地收到相同的提示
案例2:采用@sys.date-time
如果我使用@sys.date-time
我可以获得所有类型的输入。如果用户说上周、上个月等,那么我将在参数值中获得
startDate
,如果用户说今天,参数中将有直接值。这也可以在
webhook中处理,用于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有时在日期/时间的情况下非常奇怪。有些时候效果很好,有些时候检测到错误模式的日期。因此,我最终向用户显示了一条来自我的机器人的确认消息,表示一切正常,并继续进行该过程。我也做了同样的事情,创建了后备计划,并在上周、上个月进行了培训