我正在尝试构建一个机器人来更改存储在数据库中的用户信息。
我的第一个想法是创建两种插槽类型,例如{toChange}
用户{newValue}
可以说“将我的名字更改为 Peter Griffin”或“我的新电子邮件是 user@mail.com”。
事实证明 Lex 无法处理这些自定义字符串输入。我必须为用户可以拥有的每个值创建一个槽类型:{name}
with AMAZON.Person
,{address}
withAMAZON.PostalAddress
等等,并让 Lambda 处理正确的槽来引出。
问题是 Lex 不提供 IBAN 格式(或任何其他格式)的电子邮件或银行帐号的插槽类型。
如果我使用带有空枚举列表的自定义插槽类型,我只能输入文本,而不是数字。此外,空格和特殊字符如 . 和 @ 无法识别,Lex 再次要求输入。
有没有办法做到这一点?我想到了一些事情,比如在@之前询问邮件的第一部分,然后询问提供者,最后填写国家代码。但这离用户友好还很远。
[编辑]
在测试过程中,我发现亚马逊方面目前还没有验证AMAZON.PostalAddress
。我可以直接输入我想要的任何内容,它会被接受,比如让我们说一个电子邮件地址或一个帐号:twinkle:
目前这种方法效果很好,但绝对不能保证它会在未来保持这种状态,所以我的问题仍然是开放的。
PS:像这样,我能够使用 and 遵循我的第一种方法{toChange}
,{newValue}
其中第一种是具有枚举值的自定义插槽类型,而后者是一个AMAZON.PostalAddress
插槽。