插槽填充一次填充多个插槽,并使诸如“ 13:00”之类的字符串混乱

时间:2019-02-18 16:56:55

标签: dialogflow

我有一个意图,其中有三个类型均为slot_a的必需插槽(我们叫它们为slot_bslot_c@sys.number)。检测到意图后,系统会提示我要求缺少的插槽:

  

slot_a是什么?

我:1

  

slot_b是什么?

我:2

  

slot_c是什么?

我:3

这很好用。当我添加语音到文本时,问题就开始了,因为有时系统会理解“ 1:00”,“ 2:00”,“ 3:00”,而不是简单的数字,并且当将这些数字提供给dialogflow时,其行为如下:

  

slot_a是什么?

我:1(但转换为“ 1:00”)

对话框流程将“ 1”和“ 00”分开,并将“ 1”分配给a,将“ 0”分配给b

  

slot_c是什么?

我:3(但转换为“ 3:00”)

对话流已经有b,因此它直接要求c

这是在it-IT语言环境中发生的,我不知道该如何应对。将其从“ 1”转换为“ 1:00”是问题的上半部分,但是我可以在实现中解决它,但是然后dialogflow在:上分裂,并且没有任何输入的机会下一个丢失的插槽。

编辑 添加意图的屏幕截图:

enter image description here

我使用了右侧的立即尝试区域,内容为:

  1. “随便什么”(触发意图)
  2. “ 1:00”(根据系统提示我填写slot_a

结果是slot_b也用“ 0”填充,现在它要我填充slot_c,而我却无法输入真实的slot_b

1 个答案:

答案 0 :(得分:2)

这里有几件事在玩。

第一个是“ 1:00”不是数字。它是什么取决于您要如何解释它。如果这是针对实体类型@sys.time的,例如,您可以将其视为一个时间,它将适合一个插槽。

Dialogflow似乎正试图帮助填充插槽,通常是为了填补用户输入中的空白,而不必提示它们。因此,如果它可以将值填充到参数中,则可以。在这种情况下,它看到的是“ 1:00”,因此需要填写两个数字。

如何解决此问题取决于您要执行的操作。如果实体类型确实是时间,请使用@sys.time或类似的名称。如果您需要解析一个字符串,那么@sys.any可能更合适。

如果这确实是一个数字-您希望“ 1:00”做什么?舍弃“:00”部分?完全忽略吗?

在最坏的情况下,您可能需要自己手动提示每个人,而不是尝试使用插槽填充。这为您提供了更多处理输入的灵活性。

除非您还有其他期望时间的东西,否则不清楚语音到文本为何将数字说话变成时间。如果这是问题,那么这是更大的问题,需要检查。