我们有什么方法可以识别用户是否是初次使用技能?不使用后端数据库存储访问信息?
例如,请求对象指定用户是否已授予许可。有没有办法确定用户是否是第一次使用该技能?
{
"version":"1.0",
"session":{
"new":true,
"sessionId":"amzn1.echo-api.session.abc",
"application":{
"applicationId":"amzn1.ask.sabc3"
},
"user":{
"userId":"amzn1.ask.account.AGQ"
}
},
"context":{
"System":{
"application":{
"applicationId":"amzn1.ask.skill.bb"
},
"user":{
"userId":"amzn1.ask.account.AGQ"
},
"device":{
"deviceId":"amzn1.ask.device.AHH",
"supportedInterfaces":{
}
},
"apiEndpoint":"https://api.amazonalexa.com",
"apiAccessToken":"eysed"
}
},
"request":{
"type":"LaunchRequest",
"requestId":"amzn1.echo-api.request.09b",
"timestamp":"2018-10-15T17:03:03Z",
"locale":"en-US",
"shouldLinkResultBeReturned":false
}
}
答案 0 :(得分:4)
恐怕不可能知道用户是否是第一次使用这种技能,而没有像 Amazon S3 这样的存储机制。
是的,请求对象告诉您用户是否提供了权限,但是无法从访问令牌中确定该用户是第一次使用该技能。
答案 1 :(得分:1)
最后,我不得不将dynamoDB添加到图片中。存储 deviceId 和 lastvisit 时间戳的数据库。
答案 2 :(得分:-1)
您可以通过并行检查以下两个条件来识别:
在请求正文中,在会话下,您将具有“新” 键。如果为 true ,则该用户是首次启动一项技能。
{
"version": "1.0",
"session": {
"new": true,
.
.
.
}
再次在请求正文中,在会话下将有“属性” 键。它必须为空。
{
"version": "1.0",
"session": {
"new": true,
"sessionId": "amzn1.echo-api.session.[unique-value-here]",
"application": {
"applicationId": "amzn1.ask.skill.[unique-value-here]"
},
"attributes": {
},
.
.
.
}