【问题标题】:Detecting when user unlinks alexa skill检测用户何时取消链接 alexa 技能
【发布时间】:2018-10-10 15:20:05
【问题描述】:

我正在实施 Alexa 智能家居技能,我想知道一段时间后用户是否仍在使用该应用。

例如,当我取消我的应用与 Google Smarthome 应用的链接时,Google Home 会发送一个请求。如果用户不再使用该技能,我需要知道它以禁用向 Amazon Alexa 网关发送更新。

最好的方法是什么? Alexa 文档没有提及它。

我能否仅依靠检查用户是否有过期的 OAuth 令牌?例如。如果过期超过一天,则将用户标记为非活动用户。

我明天要测试的另一件事是在取消链接技能后查看网关响应。但就我而言,无论如何这都不是一个好的选择,因为我只会在物理更改并尝试提交它并让它可能失败后才知道用户状态。这可能会在几天或几周后发生,因此并不那么可靠。

【问题讨论】:

    标签: alexa alexa-skills-kit


    【解决方案1】:

    您可以与 Alexa 技能事件集成,并在用户禁用技能时收到通知。 https://developer.amazon.com/docs/smapi/skill-events-in-alexa-skills.html#skill-disabled-event.

    SkillDisabled 事件仅包含 user_id(即没有访问令牌)。因此,您还需要监听 SkillAccountLinked 事件,以便将该 user_id 与您自己的用户标识符相关联。

    您的智能家居技能清单应如下所示:

    {
      "manifest": {
        "publishingInformation": {
          "locales": {
            "en-US": {
              "summary": "...",
              "examplePhrases": [
                "Alexa, ...",
                "Alexa, ...",
                "Alexa, ..."
              ],
              "keywords": [],
              "name": "...",
              "smallIconUri": "...",
              "description": "...",
              "largeIconUri": "..."
            }
          },
          "isAvailableWorldwide": false,
          "testingInstructions": "...",
          "category": "SMART_HOME",
          "distributionCountries": [
            "US"
          ]
        },
        "apis": {
          "smartHome": {
            "endpoint": {
              "uri": "arn:aws:lambda:..."
            },
            "protocolVersion": "3"
          }
        },
        "manifestVersion": "1.0",
        "permissions": [
          {
            "name": "alexa::async_event:write"
          }
        ],
        "privacyAndCompliance": {
          "allowsPurchases": false,
          "locales": {
            "en-US": {
              "termsOfUseUrl": "...",
              "privacyPolicyUrl": "..."
            }
          },
          "isExportCompliant": true,
          "containsAds": false,
          "isChildDirected": false,
          "usesPersonalInfo": false
        },
        "events": {
          "endpoint": {
            "uri": "arn:aws:lambda:..."
          },
          "subscriptions": [
            {
              "eventName": "SKILL_ENABLED"
            },
            {
              "eventName": "SKILL_DISABLED"
            },
            {
              "eventName": "SKILL_PERMISSION_ACCEPTED"
            },
            {
              "eventName": "SKILL_PERMISSION_CHANGED"
            },
            {
              "eventName": "SKILL_ACCOUNT_LINKED"
            }
          ],
          "regions": {
            "NA": {
              "endpoint": {
                "uri": "arn:aws:lambda:..."
              }
            }
          }
        }
      }
    }
    

    【讨论】:

    • 我认为它不适用于Smart home 类型的技能
    • 它适用于我的智能家居技能。附言您确实需要将 Alexa Skills Kit 触发器添加到您的 lambda。
    • 除了已经为 lambda 添加的“Alexa Smart Home”触发器外,还添加了“Alexa Skills Kit”,在 CloudWatch 中看不到任何新事件。你有没有额外设置什么?我的 lambda 只包含解析请求的“index.js”文件。
    • 您已经根据文档更新了技能清单,对吧?如果您在添加Alexa Skills Kit 触发器之前尝试更新它,更新将会失败。检查更新状态以确保上传成功。
    • 谢谢,可以添加活动,但现在有一个后续问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 2020-05-09
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多