amazon-lex - AWS Lex AlphaNumeric 内置插槽类型不接受字符串
问题描述
我一直在研究具有多个意图的 AWS Lex 机器人。目前我遇到一个问题,插槽类型为 AMAZON.AlphaNumberic的插槽只接受数字。
当我输入诸如“测试”之类的单词时,它不会继续到下一个插槽,但是当输入诸如“1”之类的数字时,它会转到下一个插槽。
我不确定为什么会发生这种情况,但它只是在几天前才开始这样做。
我尝试过:将 Slot Type 更改为AMAZON.NUMBER,重建 Bot 并使用 Number 进行测试,然后继续到下一个 Slot。将 Slot Type 改回AMAZON.AlphaNumeric并重建。错误仍然出现。
编辑:我现在意识到,当第一个插槽类型是AMAZON.AlphaNumeric时,它只接受数字,但第二个插槽是AMAZON.AlphaNumeric类型,它接受字符串和带数字的字符串的值。
解决方案
不要使用AMAZON.AlphaNumeric
插槽来捕获用户输入的任何输入。您现在观察到的行为可能会随着您的机器人复杂性随着插槽和意图的增加而改变,因为您无法预测机器人在后端的训练方式。
AMAZON.AlphaNumeric插槽应该用于选择由字母和数字组成的组合(没有空格)。如果您可以为预期的输入定义一个正则表达式,然后扩展槽以验证值,那就更好了。如果您的字符串仅包含数字或字母,请按照文档中的说明定义正则表达式。
由于您似乎正在尝试获取街道地址,因此最好使用AMAZON.StreetAddress
内置插槽类型。
推荐阅读
- awk - 根据字符串的出现对列重新编号
- apache-kafka-streams - 使用 1 个分区时何时在 KTable 上使用 GlobalKTable
- sql - 在 isNull 上连接 NULL+字符串
- c++ - C++ 伪随机数生成平台依赖
- r - 在 R 中合并连续的日期范围
- python - 配置 setup.py 以提供多种安装模式
- ruby - 如何使用 Selenium / Ruby 触发双击
- apache-spark - 获取 'com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'ml.combust.mleap.spark'` 错误
- delphi - 有什么办法可以说 TThread.synchronize 在等待超过 xxx 秒后失败?
- bash - Bash 转义特殊字符