如何定义可以是任何名称或字符串值的自定义插槽?

Posted

技术标签:

【中文标题】如何定义可以是任何名称或字符串值的自定义插槽?【英文标题】:How to define a custom slot that can be any name orstring value? 【发布时间】:2018-07-03 12:43:04 【问题描述】:

我正在构建一个板球统计 alexa 技能,它需要 playerName 来过滤信息。我无法使用AMAZON.US_FIRST_NAME,原因如下:

它只检测名字而不是全名 playerName 来自全球各地,因此 AMAZON.US_FIRST_NAME 不适合。

即使我想使用AMAZON.LITERAL(亚马逊不推荐),我也需要有槽值。但是槽值可以是任何玩家名称,因此示例话语会很大。

一种方法是使用槽值对所有playerName 进行硬编码。但是,由于槽值的数量可能很大,因此这样做是否是最佳实践?

有什么解决方法吗?

【问题讨论】:

我会建议你只使用 AMAZON.US_FIRST_NAME 并且当用户告诉玩家的名字时,你可以提示用户有多个名字的首字母,获取信息请提供姓氏或俱乐部或国家名称或出生日期(如果记得)。 【参考方案1】:

使用自定义插槽https://developer.amazon.com/docs/custom-skills/custom-interaction-model-reference.html#custom-slot-type-values,目前您可以拥有 50,000 个自定义插槽值(我觉得对于玩家名称来说已经足够了)。 例如

意图架构


  "intents": [
    
      "slots": [
        
          "name": "PLAYER_NAME",
          "type": "PLAYERS"
        
      ],
      "intent": "GetPlayerData"
    
  ]

Custom_Slot_Value 输入球员

萨钦,

索拉巴, ....

【讨论】:

是的,这是迄今为止硬编码玩家姓名的唯一解决方案。根据数据更新,playerName 可以有新的值,那是它不起作用的时候。 您始终可以使用 ASK CLI 界面来更新它(编写 cron 作业以从数据库中读取玩家名称等)developer.amazon.com/docs/smapi/ask-cli-command-reference.html。它是节拍版本,所以我相信亚马逊将来会提供很好的例子...... 但它没有捕获包含名字和姓氏的正常名称,例如“Pardep Jain”它只会选择第一个或有时其他名称 @PardeepJain - 请在输入日志中检查 pardeep 打印的值是多少? 它显示“Pradeep”、“Pardip”、“pradeep jaan”等,但不显示“Pardeep Jain”。另一个名字“Danny Stone”也是如此,而技能显示“danny”、“dannys tone”、“dannies”等

以上是关于如何定义可以是任何名称或字符串值的自定义插槽?的主要内容,如果未能解决你的问题,请参考以下文章

C#中的“定义字符串变量”是啥意思。

如何将 Qt 信号/插槽名称存储到数据结构中?

我的自定义插槽类型出现意外值

如何使用 PySpark 中的自定义函数在同一 ML 管道中传递分桶器?

如何从 Alexa Skill 中的用户随机输入中提取自定义插槽

任何人都知道快速获取枚举值的自定义属性的方法吗?