Обнаружение, когда пользователь отменяет связь навыка alexa - PullRequest
0 голосов
/ 10 октября 2018

Я внедряю навык Alexa Smart Home и хочу узнать, использует ли приложение какое-то время через какое-то время.

Например, Google Home отправляет запрос, когда я отменяю связь с моим приложением изприложение Google Smarthome.Мне нужно знать, чтобы отключить отправку обновлений на шлюз Amazon Alexa, если пользователь больше не использует этот навык.

Какой лучший способ сделать это?В документации Alexa об этом не говорится.

Могу ли я рассчитывать только на проверку наличия у пользователя просроченных токенов OAuth?Например, если срок действия истек более суток, пометьте пользователя как неактивного.

Еще одна вещь, которую я собираюсь проверить завтра, это просто увидеть ответ шлюза после отмены связи навыка.Но для моего случая это не было бы хорошим вариантом в любом случае, так как я буду знать состояние пользователя только после физического изменения и попыток отправить его и, возможно, оно потерпит неудачу.Что может случиться через несколько дней или недель, так что это не так надежно.

1 Ответ

0 голосов
/ 19 октября 2018

Вы можете интегрироваться с Alexa Skill Events и получать уведомления, когда пользователь отключает Skill.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:..."
          }
        }
      }
    }
  }
}
...