【问题标题】:Custom slot types in amazon lex without enumeration valuesamazon lex 中没有枚举值的自定义插槽类型
【发布时间】: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


【解决方案1】:

我的做法是,
创建一个自定义插槽类型,如

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

枚举值只是示例电子邮件地址。然后,您需要使用 Lambda validationCodeHook 之类的东西对其进行验证。
见:this probably...我还在做我的工作

【讨论】:

  • 我使用了类似的方法,但是当用户输入像 abc@example.ai 这样的非 'dot com' 电子邮件地址时,这会失败。输入的值不被视为电子邮件。
  • 好吧,你可以添加很多 enumerationValues 来解决这个问题,我猜...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-31
相关资源
最近更新 更多