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有时在日期/时间的情况下非常奇怪。有些时候效果很好,有些时候检测到错误模式的日期。因此,我最终向用户显示了一条来自我的机器人的确认消息,表示一切正常,并继续进行该过程。我也做了同样的事情,创建了后备计划,并在上周、上个月进行了培训