我正在尝试构建一个机器人来更改存储在数据库中的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
插槽
答案 0 :(得分:0)
我这样做的方式是,
创建一个自定义插槽类型,如
{ "name": "emailAddressSlotType",
"description": "see name",
"enumerationValues": [
{ "value": "bobbySmith@yahoo.com" },
{ "value": "FreakyDonkeyLover@gmail.com" },
{ "value": "smithyBob@hotmail.com" }
]
}
枚举值只是示例电子邮件地址。然后,您需要使用Lambda validationCodeHook等方法对其进行验证 见:this probably ......我还在继续工作