Отличный вопрос.
Краткий ответ: вам нужно будет создать собственную пару между вашим сторонним пользователем и идентификатором пользователя Alexa. В Alexa Skills SDK нет встроенной поддержки, позволяющей связать Alexa UserID с вашим идентификатором пользователя. Вам нужно будет создать конкретное голосовое намерение, которое связывает идентификаторы Alexa UserID с вашей базой данных пользователей.
Подробный ответ. Давайте начнем с того, что Alexa UserID вы получаете в каждом запросе. Полученный Alexa UserID — это идентификатор пользователя LWA (Login-With-Amozon). Основная цель — позволить Alexa Skills надежно обнаруживать повторяющихся пользователей.
Так что же не работает? Проблема, с которой вы столкнетесь, заключается в том, что идентификатор пользователя LWA всегда анонимен для каждого приложения Alexa. Это важно, потому что гарантирует, что пользователей не отслеживают; но это также не позволяет вам связать идентификатор пользователя Alexa с вашим собственным идентификатором пользователя LWA.
Из Войти с помощью Amazon — Руководство для разработчиков (стр. 10)
Каждая компания, которая создает веб-сайты или приложения для входа в Amazon, получает один и тот же user_id для клиента. Однако, когда клиент входит в приложение или на сайт другой компании, user_id будет другим. Это связано с тем, что user_id нельзя использовать для отслеживания клиентов в Интернете.
Я пытаюсь сказать, что вы не можете просто внедрить LWA в iOS, Android или веб-приложения и ожидать, что вы получите тот же идентификатор пользователя LWA для учетной записи, что и в качестве идентификатора пользователя Alexa. Например, если вы реализовали LWA в своем приложении для Android и получили [email protected] em> пользователь войдет в свою учетную запись Amazon, вы можете получить amzn1.account.123456 в качестве идентификатора пользователя, но когда тот же пользователь [email protected] разговаривает со своим парным Echo, вы получит amzn1.account.98765 или любой другой совершенно другой идентификатор пользователя. На самом деле я потратил два дня на создание этой архитектуры, откуда я знаю, что она не работает.
Так что же работает? Вариант аутентификации с помощью PIN-кода, ориентированный на голос, кажется лучшим.
Давайте посмотрим на другое пространство приложений с похожей проблемой: ТВ-приложения (xbox, android TV и т. д.). Многие из этих приложений требуют, чтобы вы вошли в систему, чтобы получить доступ к контенту (например, hulu, netflix и т. д.). Но использование пульта дистанционного управления для ввода имени пользователя и пароля — это просто старый плохой UX. Итак, что мы сделали для ТВ-приложений? Пользователи заходят на myService.com/tv, входят в свою учетную запись и получают специальный короткий числовой и чувствительный ко времени пин-код, который они могут ввести на своем телевизоре.
Когда я внедрял Alexa Skill, мы решили использовать аналогичный подход. Пользователи заходили на наш веб-сайт, в приложение для iOS или Android, переходили на специальную страницу Echo и затем получали пин-код. Инструкции на экране, которые будут выглядеть примерно так:
Подойдите к своему Эху и скажите:
«Запустить фу»
«Мой значок — один, два, три, четыре»
В нашем навыке foo у нас есть намерение PairingIntent слушать my pin is {one two three four|pinCode} образец высказывания. После получения PairingIntent мы проверяли, действителен ли этот пин-код, и если да, то связывали этот идентификатор пользователя Alexa с нашей собственной базой данных пользователей. Если бы булавка была действительной, Эхо сказал бы что-то вроде О, привет, Боб! Теперь у вас есть доступ ко всем вашим замечательным материалам.. Если пин-код недействителен, Alexa предложит пользователям повторить попытку.
Надеюсь, это имеет смысл. Существуют и другие варианты привязки сторонних учетных записей к Alexa Skills, но этот подход с голосовым пин-кодом является самым простым.
person
JustinAngel
schedule
29.06.2015