我正在建立一个聊天机器人,允许用户选择一项或多项服务。我想要的是用户一次说出许多相同类型的广告位。
“我的服务”插槽提供以下服务:
我希望用户能够输入以下内容:
I need {Service} and {Service}
I need {Service}, {Service} and {Service}
例如我需要咨询和治疗
但是当我尝试使用这些话语构建时,会出现此错误:
广告位“ {Service}”无效,“我需要{Service}, {Service}和{Service}”表示意图“ FindService”。 语音的格式必须为{slotName}。
答案 0 :(得分:1)
我能够重新创建您的错误:
插槽“ {_____}”对意图“ ___”的发音“ __________”无效。发话的广告位必须采用{slotName}的形式。
这是由于花括号旁边有任何字符引起的,并且Lex在“ {slotName}”的两边都需要空格。您将必须完全删除逗号,因为如果仅通过在,
和slotNames
之间放置空格来解决此问题,则会出现此错误:
意图“ ___”的话语“ ________”中的”,“”包含不受支持的字符或单词。语音只能包含Unicode字符,空格和有效的标点符号。有效的标点符号为:缩写句号,下划线,撇号和连字符。如果您的发言中有插槽占位符,请确保其为{slotName}格式,并且两端都有空格。
此外,删除逗号后,您仍然应该收到另一个错误:
插槽名称“ Service”多次用于意图“ FindService”的“我需要{Service} {Service}和{Service}”。
为解决此问题,您应使用不同的slotType
创建多个插槽,但所有插槽都使用相同的Service_one
。使用插槽名称,例如:Service_two
Service_three
I need {Service_one} and {Service_two}
I need {Service_one} {Service_two} and {Service_three}
。
请注意,您不能在插槽名称中使用数字(0-9),否则会出现错误:
为“ slots。#。member.name”指定的值无效。成员必须满足正则表达式模式:^(A-Za-z?)+ $
在创建了这3个单独的广告位之后,您可以像这样编写新的有效发音:
def array():
a = []
size = int(input("Enter the size of array: "))
for i in range(size):
b = int(input("enter array element: "))
a.append(b)
return a
该设置没有错误。现在,我不知道Lex如何区分发声#2列表,特别是让两个插槽紧挨着并寻找相同的slotType值。因此,您将必须进行测试,并观察Lex如何填充插槽,然后相应地构建Lambda验证代码。