Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何识别用户是否在Alexa中首次启动技能?_Java_Echo_Amazon_Alexa_Alexa Skills Kit - Fatal编程技术网

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仅显示新会话。不是新用户。你能添加额外的链接/代码/流吗?因为我们很多人都是新手。