2

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

我的第一个想法是创建两种插槽类型,例如{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插槽。

4

1 回答 1

0

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

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

枚举值只是示例电子邮件地址。然后,您需要使用 Lambda validationCodeHook 之类的东西对其进行验证。
看:这可能......我还在研究我的

于 2017-06-08T21:28:52.160 回答