如何识别用户是否是第一次在 Alexa 中启动技能?
How to identify if a user is launching a skill for the first time in Alexa?
有什么方法可以识别用户是否是第一次启动技能?不使用后端数据库存储访问信息?
例如,请求对象指定用户是否授予了权限。有没有办法同时识别用户是否是第一次启动该技能?
{
"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
}
}
恐怕不可能知道用户是否是第一次启动该技能,没有像Amazon S3[=这样的存储机制16=].
是的,请求对象会告诉您用户是否提供了权限,但无法从访问令牌中确定该用户是第一次使用该技能。
您可以通过并行检查以下两个条件来识别:
在请求正文中,在会话下您将拥有 "new" 键。如果是 true 则用户是第一次启动技能。
{
"version": "1.0",
"session": {
"new": true,
.
.
.
}
再次在请求正文中,在会话下会有 "attributes" 键。它必须是 empty.
{
"version": "1.0",
"session": {
"new": true,
"sessionId": "amzn1.echo-api.session.[unique-value-here]",
"application": {
"applicationId": "amzn1.ask.skill.[unique-value-here]"
},
"attributes": {
},
.
.
.
}
最后,我不得不将 dynamoDB 添加到图片中。数据库存储 deviceId 和 lastvisit 时间戳。
有什么方法可以识别用户是否是第一次启动技能?不使用后端数据库存储访问信息?
例如,请求对象指定用户是否授予了权限。有没有办法同时识别用户是否是第一次启动该技能?
{
"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
}
}
恐怕不可能知道用户是否是第一次启动该技能,没有像Amazon S3[=这样的存储机制16=].
是的,请求对象会告诉您用户是否提供了权限,但无法从访问令牌中确定该用户是第一次使用该技能。
您可以通过并行检查以下两个条件来识别:
在请求正文中,在会话下您将拥有 "new" 键。如果是 true 则用户是第一次启动技能。
{
"version": "1.0",
"session": {
"new": true,
.
.
.
}
再次在请求正文中,在会话下会有 "attributes" 键。它必须是 empty.
{
"version": "1.0",
"session": {
"new": true,
"sessionId": "amzn1.echo-api.session.[unique-value-here]",
"application": {
"applicationId": "amzn1.ask.skill.[unique-value-here]"
},
"attributes": {
},
.
.
.
}
最后,我不得不将 dynamoDB 添加到图片中。数据库存储 deviceId 和 lastvisit 时间戳。