取消插槽填充后,Dialogflow重新获得上下文,而用户没有填充所有必需的参数/插槽

时间:2019-06-20 14:29:19

标签: dialogflow chatbot dialogflow-fulfillment

我们正在尝试为汽车经销商建立聊天机器人。当用户要求诸如“我正在寻找福特2017年款”之类的查询时,在向用户显示最终结果之前,我们还有一些空位需要填写。因此,为了解决这个问题,我们创建了带有必需参数的意图。我们还提供了一些自定义UI按钮,以帮助用户进行广告位填充过程。但是,有时用户可以选择提供自己的输入,有时用户可以输入广告位值以外的其他文字。

例如:

  • 用户:我正在寻找2017年或之后推出的福特最新车型。
  • Bot:您要寻找的型号:我们显示一些选项
  • 用户:逃脱
  • Bot:您要寻找的价格范围是多少:我们会显示一些选项
  • 用户:我正在寻找适合四口之家的东西。

在这种情况下,由于用户未提供预期的插槽/参数,插槽填充被破坏了。另外,如果我们能以某种方式回复这种细微差别并继续进行插槽填充,那将是一个很好的用户体验。

编辑: 我们已经在插槽填充期间加入了一些机制,以处理用户输入所需插槽值以外的其他输入的情况。但是有时此机制无法正常工作,有时用户可能会输入触发新意图的语句。

如何使用对话框流程处理此类情况?

1 个答案:

答案 0 :(得分:0)

我建议不要使用Dialogflow的内置插槽填充。我以前遇到过这个问题,现在我只是为要从用户收集的每个“变量”创建不同的意图。 如果让用户知道您希望他们回答的格式,您仍然可以使用插槽填充。KLM聊天机器人可以完美地做到这一点,您应该检查一下。

更新:这是处理不同参数输入的方法。每当用户响应某件事时,您都不会期望'question.invalidInput'被触发,并且您可以在其中提醒该用户所期望的格式。

Intent: question
Trainings phrase: 'May I enter?'
Output context: 'await_olderThan21'
Response: 'Are you older than 21?'

Intent: question.yes
Training phrase: 'yes'
Input context: 'await_olderThan21'
Output context: ''
Response: 'Yes, you may enter'

Intent: question.no
Training phrase: 'no'
Input context: 'await_olderThan21'
Output context: ''
Response: 'No, you may not.'

Intent: question.invalidInput
Training phrase: @sys.any
Input context: 'await_olderThan21'
Output context: 'await_olderThan21'
Response: 'Invalid answer. Please reply with yes or no.'

例如:

User: I am looking for ford latest models 2017 or afterwards.
Bot: Which model are you looking for: We display some options
User: escape
Bot: What is the price range you are looking for: We display some options
User: I looking for something which will suffice for a family of 4.
Bot *fallback*: Please enter the maximum amount you would like to spend on a car (in dollar)

通过这种方式,用户知道如何响应,您会注意到您的预期行为会减少。

始终尝试按照所需的方向引导用户。

希望这会有所帮助!