亚马逊lex中的自定义插槽类型,没有枚举值

时间:2017-06-07 13:09:57

标签: amazon-web-services aws-lambda bots chatbot amazon-lex

我正在尝试构建一个机器人来更改存储在数据库中的userinfo。

我的第一个想法是创建两个插槽类型,例如{toChange}{newValue},用户可以说“将我的名字改为Peter Griffin”或“我的新电子邮件是user@mail.com”。

原来Lex无法处理这些自定义字符串输入。我必须为用户可以拥有的每个值创建一个插槽类型:{name} AMAZON.Person{address} AMAZON.PostalAddress等等,让Lambda处理正确的插槽以引出

问题是Lex不提供电子邮件的插槽类型或IBAN格式的银行帐号(也没有任何其他格式)。

如果我使用带有空枚举列表的自定义插槽类型,我只能输入文本,而不能输入数字。此外空白和特殊人物喜欢。并且@不被识别,Lex又要求输入。

有没有办法实现这个目标?我想到了在@之前询问邮件的第一部分,然后要求提供商并最后填写国家代码。但这远远不是用户友好的。

[编辑]

在测试过程中,我发现现在没有对AMAZON.PostalAddress的亚马逊方面进行验证。我可以输入任何我想要的东西,它会被接受,比如说一个电子邮件地址或一个帐号:闪烁:

目前这种方法运行良好,但绝对不能保证将来会保持这种状态,所以我的问题仍然存在。

PS:像这样,我可以使用{toChange}{newValue}来跟踪我的第一种方法,其中第一种方法是带有enumation值的自定义插槽类型,后者是AMAZON.PostalAddress插槽

1 个答案:

答案 0 :(得分:0)

我这样做的方式是,
创建一个自定义插槽类型,如

{   "name": "emailAddressSlotType",
    "description": "see name",
    "enumerationValues": [
        { "value": "bobbySmith@yahoo.com" },
        { "value": "FreakyDonkeyLover@gmail.com" },
        { "value": "smithyBob@hotmail.com" }
    ]
}      

枚举值只是示例电子邮件地址。然后,您需要使用Lambda validationCodeHook等方法对其进行验证 见:this probably ......我还在继续工作