【发布时间】:2017-11-08 20:44:35
【问题描述】:
我正在尝试构建一个机器人来更改存储在数据库中的用户信息。
我的第一个想法是创建两个插槽类型,例如 {toChange} 和 {newValue},用户可以在其中说“将我的名字更改为 Peter Griffin”或“我的新电子邮件是 user@mail.com”。
原来 Lex 无法处理这些自定义字符串输入。我必须为用户可以拥有的每个值创建一个槽类型:{name} 和 AMAZON.Person,{address} 和 AMAZON.PostalAddress 等等,然后让 Lambda 处理正确的槽来引出。
问题在于 Lex 不提供 IBAN 格式(或任何其他格式)的电子邮件或银行帐号的插槽类型。
如果我使用带有空枚举列表的自定义槽类型,我只能输入文本,不能输入数字。此外,空格和特殊字符如 .和 @ 无法识别,Lex 再次要求输入。
有没有办法做到这一点?我想到了一些事情,比如在@之前询问邮件的第一部分,然后询问提供者,最后填写国家代码。但这远非用户友好。
[编辑]
在测试过程中,我发现亚马逊方面目前还没有对AMAZON.PostalAddress 进行验证。我可以按字面意思输入任何我想要的东西,它会被接受,比如让我们说一个电子邮件地址或一个帐号:twinkle:
目前这种方法效果很好,但绝对不能保证它将来会保持这种状态,所以我的问题仍然悬而未决。
PS:像这样,我可以使用{toChange} 和{newValue} 遵循我的第一种方法,其中第一种是具有枚举值的自定义插槽类型,后者是AMAZON.PostalAddress 插槽。
【问题讨论】:
-
我尝试使用 AMAZON.PostalAddress 但似乎他们已经应用了一些验证,现在它没有使用任何字符串。 :(
标签: amazon-web-services aws-lambda bots chatbot amazon-lex