Java 如何识别用户是否在Alexa中首次启动技能?
我们有没有办法确定用户是否是第一次使用某项技能?不使用后端数据库存储访问信息 例如,请求对象指定用户是否已授予权限。是否有一种方法可以确定用户是否是第一次使用该技能Java 如何识别用户是否在Alexa中首次启动技能?,java,echo,amazon,alexa,alexa-skills-kit,Java,Echo,Amazon,Alexa,Alexa Skills Kit,我们有没有办法确定用户是否是第一次使用某项技能?不使用后端数据库存储访问信息 例如,请求对象指定用户是否已授予权限。是否有一种方法可以确定用户是否是第一次使用该技能 { "version":"1.0", "session":{ "new":true, "sessionId":"amzn1.echo-api.session.abc", "application":{ "applicationId":"amzn1.ask.sabc3"
{
"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
}
}
如果没有像亚马逊S3这样的存储机制,恐怕不可能知道用户是否第一次使用了该技能
{
"version": "1.0",
"session": {
"new": true,
"sessionId": "amzn1.echo-api.session.[unique-value-here]",
"application": {
"applicationId": "amzn1.ask.skill.[unique-value-here]"
},
"attributes": {
},
.
.
.
}
是的,请求对象告诉您,如果用户是否提供了权限,但无法从访问令牌确定该用户是否第一次使用了该技能。您可以通过并行检查以下两个条件来识别:
{
"version": "1.0",
"session": {
"new": true,
.
.
.
}
在请求正文中,会话下您将有“新建”键。如果为真,则用户是第一次启动技能
{
"version": "1.0",
"session": {
"new": true,
.
.
.
}
同样,在请求正文中,会话下将有“attributes”键。它必须是空的
{
"version": "1.0",
"session": {
"new": true,
"sessionId": "amzn1.echo-api.session.[unique-value-here]",
"application": {
"applicationId": "amzn1.ask.skill.[unique-value-here]"
},
"attributes": {
},
.
.
.
}
最后,我不得不去把dynamoDB添加到图片中。存储设备ID和上次访问时间戳的数据库。我明白了,我明白了。谢谢你的回复!我认为这不是真的。session.new属性和空session.attributes仅显示新会话。不是新用户。你能添加额外的链接/代码/流吗?因为我们很多人都是新手。