如何定义可以是任何名称或字符串值的自定义插槽?
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”等以上是关于如何定义可以是任何名称或字符串值的自定义插槽?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PySpark 中的自定义函数在同一 ML 管道中传递分桶器?