检测用户何时取消Alexa技能的链接

时间:2018-10-10 15:20:05

标签: alexa alexa-skills-kit

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

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

最好的方法是什么? Alexa文档没有讨论。

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

我明天要测试的另一件事是,在取消关联技能后,仅看到网关响应。但是对于我来说,这绝对不是一个好选择,因为我只会在进行物理更改并尝试提交并可能失败后才知道用户状态。这种情况可能会在几天或几周后发生,所以并不是那么可靠。

1 个答案:

答案 0 :(得分: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:..."
          }
        }
      }
    }
  }
}