【问题标题】:How to identify if a user is launching a skill for the first time in Alexa?如何识别用户是否是首次在 Alexa 中启动技能?
【发布时间】:2019-05-08 08:58:48
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    如果没有像Amazon S3这样的存储机制,恐怕不可能知道用户是不是第一次启动该技能。

    是的,请求对象会告诉您用户是否提供了权限,但无法从访问令牌中确定该用户是第一次使用该技能。

    【讨论】:

    • 我明白了,我明白了。感谢您的回复!
    【解决方案2】:

    最后,我不得不将 dynamoDB 添加到图片中。存储 deviceIdlastvisit 时间戳的数据库。

    【讨论】:

    • 您能否添加其他链接/代码/流程,因为我们中的许多人都是新手。
    【解决方案3】:

    您可以通过并行检查以下两个条件来识别:

    在请求正文中,在会话下,您将拥有 "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": {
        },
        .
        .
        .
    }
    

    【讨论】:

    • 我认为这不是真的。 docs here 。 session.new 属性和空 session.attributes 只显示新会话。不是新用户。
    猜你喜欢
    • 2023-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多