如何使用 Alexa SDK DynamoDB 持久性适配器存储全局属性(每个技能)
How to store global attributes (per skill) using Alexa SDK DynamoDB persistence adapter
Alexa SDK (ask-sdk) 附带一个 persistence adapter 允许以半透明的方式将属性作为 key/value 对存储在 DynamoDB 实例中。我试过了,它为每个用户存储属性,即生成的 table 的主键是用户 ID。这对于存储用户设置很有用,但对于存储全局数据没有用,例如排行榜。
我如何使用此适配器在技能级别(而不是每个用户 ID)全局存储属性?
在这里回答我自己的问题。解决方案是在持久性适配器中使用更改 "key generator function",它基本上告诉适配器将什么用作数据库中的主键。
这是一个完整的演示,展示了如何使用 Alexa node.js SDK DynamoDB 持久性适配器和 S3 持久性适配器:
https://gist.github.com/germanviscuso/70c979f671660fea811ccfb63801f936
在上面的示例中,密钥生成器函数更改为 return 技能 ID 而不是用户 ID,因此属性将全局存储(在技能级别),而不是在用户级别。
Alexa SDK (ask-sdk) 附带一个 persistence adapter 允许以半透明的方式将属性作为 key/value 对存储在 DynamoDB 实例中。我试过了,它为每个用户存储属性,即生成的 table 的主键是用户 ID。这对于存储用户设置很有用,但对于存储全局数据没有用,例如排行榜。
我如何使用此适配器在技能级别(而不是每个用户 ID)全局存储属性?
在这里回答我自己的问题。解决方案是在持久性适配器中使用更改 "key generator function",它基本上告诉适配器将什么用作数据库中的主键。
这是一个完整的演示,展示了如何使用 Alexa node.js SDK DynamoDB 持久性适配器和 S3 持久性适配器:
https://gist.github.com/germanviscuso/70c979f671660fea811ccfb63801f936
在上面的示例中,密钥生成器函数更改为 return 技能 ID 而不是用户 ID,因此属性将全局存储(在技能级别),而不是在用户级别。