在 AWS LEX 中为插槽值强制执行自定义枚举
Enforcing custom enumeration in AWS LEX for slot values
我希望能够为 LEX 将尝试近似的插槽指定有效选项的自定义列表,或者在无法近似有效选项的情况下拒绝无效响应。
起初我试图通过自定义槽类型来做到这一点。尽管他们的示例可能会让您相信这些是枚举,但事实并非如此。用户仍然可以输入他们喜欢的任何值。
A custom slot type is not the equivalent of an enumeration. Values outside the list may still be returned if recognized by the spoken language understanding system. Although input to a custom slot type is weighted towards the values in the list, it is not constrained to just the items on the list. Your code still needs to include validation and error checking when using slot values.
我知道在他们完成完整提交后,我可以通过 lambda 验证他们的提交,但到那时为时已晚。用户已提交完整的意向消息。中途无法捕捉并更正。
我是否缺少输入插槽选项或自定义插槽类型配置选项的方法?有什么方法可以 强制执行 插槽的自定义选项列表吗? (类似于intents的utterances,或者内置的slot类型,如果没有匹配,会再次询问同样的问题。)
谢谢!
I'm unable to capture it midway and correct them.
您可以在不完成意图并重新开始的情况下捕获 lambda 中的错误。以下是我使用 Python 验证输入的方法。
如果您在 lambda 中检测到验证错误,您可以引出相同的插槽并传递您的错误消息。这允许您设置复杂的验证规则并让您的机器人 return 对用户做出特定的响应。
def validate(input):
if input not in ['foo', 'bar']:
return elicit_slot("Your response must be foo or bar")
def elicit_slot(error_message):
return {
'dialogAction': {
'type': 'ElicitSlot',
'intentName': current_intent,
'slots': current_slots,
'slotToElicit': slot_with_validation_error,
'message': {'contentType': 'PlainText', 'content': error_message }
}
}
我希望能够为 LEX 将尝试近似的插槽指定有效选项的自定义列表,或者在无法近似有效选项的情况下拒绝无效响应。
起初我试图通过自定义槽类型来做到这一点。尽管他们的示例可能会让您相信这些是枚举,但事实并非如此。用户仍然可以输入他们喜欢的任何值。
A custom slot type is not the equivalent of an enumeration. Values outside the list may still be returned if recognized by the spoken language understanding system. Although input to a custom slot type is weighted towards the values in the list, it is not constrained to just the items on the list. Your code still needs to include validation and error checking when using slot values.
我知道在他们完成完整提交后,我可以通过 lambda 验证他们的提交,但到那时为时已晚。用户已提交完整的意向消息。中途无法捕捉并更正。
我是否缺少输入插槽选项或自定义插槽类型配置选项的方法?有什么方法可以 强制执行 插槽的自定义选项列表吗? (类似于intents的utterances,或者内置的slot类型,如果没有匹配,会再次询问同样的问题。)
谢谢!
I'm unable to capture it midway and correct them.
您可以在不完成意图并重新开始的情况下捕获 lambda 中的错误。以下是我使用 Python 验证输入的方法。
如果您在 lambda 中检测到验证错误,您可以引出相同的插槽并传递您的错误消息。这允许您设置复杂的验证规则并让您的机器人 return 对用户做出特定的响应。
def validate(input):
if input not in ['foo', 'bar']:
return elicit_slot("Your response must be foo or bar")
def elicit_slot(error_message):
return {
'dialogAction': {
'type': 'ElicitSlot',
'intentName': current_intent,
'slots': current_slots,
'slotToElicit': slot_with_validation_error,
'message': {'contentType': 'PlainText', 'content': error_message }
}
}