Dialogflow es 插槽填充一次填充多个插槽,并将字符串弄得一团糟,如;13:00“;

Dialogflow es 插槽填充一次填充多个插槽,并将字符串弄得一团糟,如;13:00“;,dialogflow-es,Dialogflow Es,我打算使用三个必需的插槽(我们称之为:slot\u a,slot\u b,slot\u c),所有类型均为@sys.number。当检测到意图时,系统会提示我询问丢失的插槽: 什么是插槽a 我:1 什么是slot_b 我:2 什么是槽c 我:3 这很有效。当我将语音添加到文本中时,问题就开始了,因为有时系统会理解“1:00”、“2:00”、“3:00”而不是简单的数字,当这些数字被赋予dialogflow时,它的行为如下所示: 什么是插槽a me:1(但转换为“1:00”) dialogflow

我打算使用三个必需的插槽(我们称之为:
slot\u a
slot\u b
slot\u c
),所有类型均为
@sys.number
。当检测到意图时,系统会提示我询问丢失的插槽:

什么是插槽a

我:1

什么是
slot_b

我:2

什么是槽c

我:3

这很有效。当我将语音添加到文本中时,问题就开始了,因为有时系统会理解“1:00”、“2:00”、“3:00”而不是简单的数字,当这些数字被赋予dialogflow时,它的行为如下所示:

什么是插槽a

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

dialogflow将“1”和“00”分开,并将“1”分配给
a
,将“0”分配给
b

什么是槽c

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

dialogflow已经有了
b
,因此它直接请求
c

这是在
it
locale中发生的,我不知道如何应对。让它将“1”转换为“1:00”是问题的前半部分,但我可以在实现过程中解决它,但是dialogflow在
上分裂,没有给我任何机会输入下一个丢失的插槽

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

我使用了右侧的“立即试用”区域,上面写着:

  • “无论如何”(触发意图)
  • “1:00”(按系统提示填写
    插槽a

  • 结果是
    slot\u b
    也被“0”填充,现在它要求我填充
    slot\u c
    ,我无法输入真正的
    slot\u b

    这里有两件事要做

    首先,“1:00”不是一个数字。它是什么取决于你想如何解释它。如果这是针对实体类型<代码> @ sys .Time<代码>,您可以考虑它一个时间,例如,它将适合于一个时隙。

    Dialogflow似乎在尝试对槽填充有所帮助,槽填充通常用于填充用户输入中的空白,而不必提示用户输入。因此,如果它可以将值填充到参数中,它就可以了。在本例中,它看到“1:00”,它需要填写两个数字,所以它会这样做

    如何解决这个问题取决于您正在尝试做什么。如果实体类型确实是时间,请使用
    @sys.time
    或类似的方法。如果您需要解析一个字符串,那么
    @sys.any
    可能更合适

    如果这真的应该是一个数字-你希望“1:00”做什么?丢弃“:00”零件?完全忽略它

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


    现在还不清楚为什么语音转换成文本会把一个数字变成一个时间,除非你还有其他的东西在等待一个时间。如果这是一个问题-这是一个更大的问题,需要检查。

    您能否更新您的问题,以显示应该匹配的意图?根据描述,很难理解发生了什么。@Capital done,这显然是一个玩具示例,但行为与我在真人身上的体验相同。听起来真正的问题是,无论你说什么,在stt中都转换为“1:00”。你到底在说什么?您正在使用哪个stt以及如何使用它?(现在我想,最好还是单独问一个问题。)tts是通过
    Detectinent
    API(通过nodejs dialogflow使用)直接完成的,语言代码是正确的,我对转换的总体质量感到满意,但是[2-24]范围内的数字经常失败(是的,尽管我使用了“1”在本例中,“1”实际上是正确识别的。我说的只是数字,没有语法文章,没有其他。用意大利语,嗯。。。这可能是模棱两可的,但任何人对它的第一个解释都应该是“数字”而不是“时间”。对话流的TTS是否考虑转换过程中的时隙类型?一旦我有时间返回这个问题,我会问一个具体的问题,TTS提供音频文件和任何可能需要复制的问题,现在我将接受你的答案,谢谢。我的插槽都没有<代码> @ sys。时间<代码>我不知道speech2text为什么会这样,不管怎样,你说得对,我不能期望太多将“1:00”转换为int,我根本没有想到的是它会填满多个插槽。由于dialog flow控制台的设计方式(它允许您为每个所需的插槽指定一个提示符),我相信一次只需要一个。我没有考虑过使用
    @sys.any
    ,这样至少我有机会在实践中正确解析它。我会等待更多的其他可能的答案,但这可能是一个被接受的。