当前位置: 首页 > 知识库问答 >
问题:

检测用户何时解除alexa skill的链接

叶俊郎
2023-03-14

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

例如,当我从Google Smarthome应用程序解除关联时,Google Home会发送请求。如果用户不再使用该技能,我需要知道它来禁用向亚马逊阿列克谢网关发送更新。

最好的方法是什么?Alexa留档不谈论它。

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

我明天要测试的另一件事是,在解除技能链接后,只需查看网关响应。但对于我来说,这无论如何都不是一个好的选择,因为我只会在物理更改后知道用户状态,并试图提交它,但可能会失败。这可能会在几天或几周后发生,所以它不是那么可靠。

共有1个答案

杜阳泽
2023-03-14

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

SkillDisabled事件仅包含用户id(即没有访问令牌)。因此,您还需要监听SkillAccountLinked事件,以便将该用户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:..."
          }
        }
      }
    }
  }
}
 类似资料:
  • 问题内容: 我需要根据他们的IP或http标头了解用户当前所在的时区。 关于这个问题,我有很多答案,但是我听不懂那些答案。有人说使用。但是这是什么意思? 我的(index.php)页面的根目录中有一个。因此,为此,我必须动态获取时区并将其设置为。 问题答案: 总结一下Matt Johnson在代码方面的答案:

  • 问题内容: 嗨,我正在创建一个Web应用程序,如果用户注册,我们将在其中显示创建日期。 为此,我们在sql表中使用当前时间戳记,其中显示了服务器时间,但是我们不知道如何根据用户时区转换时间。 因为我们没有 得到用户所在的国家 。 可以帮我解决这个问题吗 提前致谢 :) 问题答案: 使用JavaScript解决方案 http://www.onlineaspect.com/2007/06/08/aut

  • 比方说,我有一个名为VC2的视图控制器类的实例。在VC2中,有一个“cancel”(取消)按钮会自动关闭。但当“取消”按钮触发时,我无法检测或接收任何回调。VC2是一个黑匣子。 视图控制器(称为VC1)将使用呈现视图控制器:动画:完成方法呈现VC2。 VC1在VC2被解除时必须检测哪些选项? 编辑:从@rory mckinnel的评论和@NicolasMiari的回答中,我尝试了以下方法: 在VC

  • 问题内容: 我想在用户单击允许他们下载文件的超链接后将用户重定向到其他网页。但是,由于它们需要在打开/保存文件对话框中进行选择,因此在它们接受下载之前,我不希望它们重定向。 我如何检测到他们执行了此操作? 问题答案: 正如我多年维护download.js所发现的那样,根本 无法 通过JS 来告诉用户 (或可能通常参见下文),用户选择如何使用下载“打开/保存”对话框。这是一个常见的功能请求,多年来我

  • 问题内容: 我有一个JComboBox的子类。我尝试使用以下代码添加一个键侦听器。 但是,这不能正确检测用户何时按下一个键。实际上根本没有调用它。我添加的这个监听器是否错误?还有其他添加方式吗? 问题答案: 关键事件不是在框本身上触发的,而是在其编辑器上触发的。您需要将keyListener添加到JComboBox的编辑器中,而不是直接添加到框中: 编辑:固定方法调用。

  • 问题内容: 好的。 我可以从我的理解中得知某人正在滚动。因此,我试图找出有人停下来时该如何捕捉。从上面的示例中,您可以看到发生滚动时,我正在从一组元素中删除一个类。但是,我想在用户停止滚动时重新打开该类。 这样做的原因是,我打算在页面滚动时进行中转节目,以使页面具有我正在尝试的特殊效果。但是我尝试在滚动时删除的一个类与该效果冲突,因为它对某种性质是透明的。 问题答案: 更新资料 我写了一个扩展来增