代码之家  ›  专栏  ›  技术社区  ›  Harry

如何使用amazonlex在一个话语中添加多个相同类型的插槽?

  •  2
  • Harry  · 技术社区  · 6 年前

    我的服务槽有如下服务:

    • 咨询
    • 治疗
    • 戒毒。。。

    我希望用户能够键入以下内容:

    I need {Service} and {Service}
    I need {Service}, {Service} and {Service}
    

    e、 我需要咨询和治疗

    但当我试图用这些话语来构建时,我得到了一个错误:

    插槽{Service}在“I need{Service}, {Service}和{Service}表示意图“FindService”。中的插槽 话语的形式必须是{slotName}。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Jay A. Little    6 年前

    我重现了你的错误:

    槽“{uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。话语中的时隙必须采用{slotName}形式。

    这是由于在花括号旁边有任何字符造成的 } ,

    “,”in outrance“,”in outrance“,”for intent“,”包含不支持的字符或单词。话语只能由Unicode字符、空格和有效的标点符号组成。有效的标点符号是:缩写、下划线、撇号和连字符的句点。如果您的话语中有一个槽占位符,请确保它是{slotName}格式,并且两端都有空格。

    槽名“Service”在意图“FindService”的语句“I need{Service}{Service}和{Service}”中被多次使用。

    您应该创建多个具有不同 slotNames slotType . 使用插槽名称,如: Service_one Service_two Service_three . 请注意,插槽名称中不能使用数字(0-9),否则会出现错误:

    为“slots.#.member.name”指定的值无效。成员必须满足正则表达式模式:^(A-Za-z?)+$

    在创建这3个独立的槽之后,您可以这样编写新的有效语句:

    I need {Service_one} and {Service_two}
    I need {Service_one} {Service_two} and {Service_three}
    

    设置没有错误。现在我不知道Lex会如何区分话语2的列表,尤其是让两个插槽紧挨在一起并寻找相同的slotType值。因此,您必须测试并观察Lex如何填充插槽,然后相应地构建Lambda验证代码。