检测用户何时取消链接 alexa 技能
Detecting when user unlinks alexa skill
我正在实施 Alexa 智能家居技能,我想知道一段时间后用户是否仍在使用该应用程序。
Google 例如,当我取消我的应用程序与 Google Smarthome 应用程序的链接时,Home 会发送一个请求。如果用户不再使用该技能,我需要知道它禁止向 Amazon Alexa 网关发送更新。
最好的方法是什么? Alexa 文档没有谈论它。
我能否仅依靠检查用户是否拥有过期的 OAuth 令牌?例如。如果过期超过一天,将用户标记为不活跃。
我明天要测试的另一件事是在取消技能链接后查看网关响应。但就我而言,无论如何这都不是一个好的选择,因为我只会在物理更改并尝试提交它并可能失败后才知道用户状态。这可能会在几天或几周后发生,所以它不那么可靠。
您可以与 Alexa 技能事件集成,并在用户禁用技能时收到通知。
https://developer.amazon.com/docs/smapi/skill-events-in-alexa-skills.html#skill-disabled-event.
SkillDisabled
事件仅包含 user_id(即没有访问令牌)。所以你还需要监听 SkillAccountLinked
事件,这样你就可以 link 那 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:..."
}
}
}
}
}
}
我正在实施 Alexa 智能家居技能,我想知道一段时间后用户是否仍在使用该应用程序。
Google 例如,当我取消我的应用程序与 Google Smarthome 应用程序的链接时,Home 会发送一个请求。如果用户不再使用该技能,我需要知道它禁止向 Amazon Alexa 网关发送更新。
最好的方法是什么? Alexa 文档没有谈论它。
我能否仅依靠检查用户是否拥有过期的 OAuth 令牌?例如。如果过期超过一天,将用户标记为不活跃。
我明天要测试的另一件事是在取消技能链接后查看网关响应。但就我而言,无论如何这都不是一个好的选择,因为我只会在物理更改并尝试提交它并可能失败后才知道用户状态。这可能会在几天或几周后发生,所以它不那么可靠。
您可以与 Alexa 技能事件集成,并在用户禁用技能时收到通知。 https://developer.amazon.com/docs/smapi/skill-events-in-alexa-skills.html#skill-disabled-event.
SkillDisabled
事件仅包含 user_id(即没有访问令牌)。所以你还需要监听 SkillAccountLinked
事件,这样你就可以 link 那 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:..."
}
}
}
}
}
}