验证后重新提示DialogFlow参数

时间:2018-09-30 07:28:22

标签: dialogflow chatbot

我打算让bot向用户询问日期。用户可能会说todaylast weeklast monday等。
如果用户说的是last weeklast 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

,有很多这样的情况

1 个答案:

答案 0 :(得分:1)

我建议创建其他意图,使其具有训练短语,例如:上周或上个月。然后让此响应提示用户在日期上更具体。