如何确定用户是否是首次在Alexa中启动一项技能?

时间:2018-12-06 15:57:53

标签: java echo amazon alexa alexa-skills-kit

我们有什么方法可以识别用户是否是初次使用技能?不使用后端数据库存储访问信息?

例如,请求对象指定用户是否已授予许可。有没有办法确定用户是否是第一次使用该技能?

{
   "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
   }
}

3 个答案:

答案 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": {
    },
    .
    .
    .
}