
Содержание статьи
автор Террен Петерсон

Я признан чемпионом Amazon Alexa и опубликовал более двадцати пользовательских навыков на платформе. Я продолжаю искать новые способы расширить эту технологию, и одна из последних областей, которую я исследовал, это использование Alexa для организации повседневных задач. Одной из недостаточно используемых функций платформы есть возможность создавать собственные списки. Вот краткий обзор о том, как вы можете воспользоваться этой функцией, и, пожалуйста, не стесняйтесь испытать навык планировщика тренировок – он бесплатный!

Фон
Устройства громкой связи, такие как Alexa, открывают возможность создания удобных цифровых помощников. Одной из первых функций, включенных на родном устройстве, была возможность создавать списки покупок. Учитывая розничное наследие Amazon, не удивительно, что это произошло рано. Произношение фраз типа «добавить шампунь в мой список покупок» добавляет его в аккаунт Amazon пользователя. Он также отображает данные в других приложениях, в которых пользователь вошел.
Не берите Alexa в спортзал, принесите список
После использования функции списка покупок некоторое время я стал думать о других типах списков, которые я мог бы создать. Устройство имеет возможность создавать свои списки, и я подумал, что это может быть полезным для организации моих тренировок. Вместо того чтобы принести рукописный список тренировок, я мог бы составить его с помощью голоса.
Я написал свой Alexa Skill под названием Workout Planner, который задавал вопрос о том, какие типы упражнений нужно делать. Затем он создал список для отслеживания. Вот скриншот того, что навык создает на моем телефоне.

Архитектура использования списков Alexa
Основные функции вокруг списков включены через API Alexa, который управляет объектами, отображаемыми в сопутствующем приложении Alexa.
В типичной архитектуре навыков Alexa API вызывается из функции Lambda, содержащей функциональные возможности навыка. Данные, передаваемые в вызов API, указывают, следует ли создать новый список, какой элемент следует добавить, можно ли вычеркнуть элемент из списка и т.д. Сопутствующее приложение обрабатывает все взаимодействие пользователя с данными в списке без дополнительных усилий со стороны разработчика навыков. После этого пользователь может управлять этим списком с помощью сопутствующего приложения, включая обозначения элементов как завершенных.

Голосовой интерфейс такой же, как и любой навык Alexa. Создание специального навыка включает в себя настройку образцов высказываний, намерений и т.п. на основе функциональных возможностей, предоставляемых пользователю.
Включение разрешений на использование списков
При создании такого расширенного навыка, навык нужно будет запросить дополнительные разрешения. Существует несколько уровней разрешений и безопасности, которые все должны быть на месте, чтобы навык полностью функционировал.
Во-первых, разработчик навыков должен будет признать платформе Alexa, что навык будет использовать списки. Вы можете сделать это при настройке навыка на консоли разработчика. Снимок экрана ниже находится на вкладке Разрешения в консоли. Необходимо установить ползунки обоих атрибутов списка.

Поскольку навык проходит сертификацию, Amazon подтверждает, что разрешения необходимы для работы навыка. Это помогает управлять доступом к пользовательским данным, которые получит разработчик.
Во-вторых, когда пользователь включит навык на устройстве, ему нужно будет дать согласие на то, чтобы навык мог читать и записывать свои данные для своей учетной записи. Это включается с помощью сопутствующего приложения и соответствует модели подключения для доступа к повышенным привилегиям. Ниже приведен скриншот ползунков, которые необходимо настроить в настройках.

Наконец, при выполнении создается маркер согласия для каждого сеанса, в котором используется навык. Этот маркер нужно сохранить функцией Lambda, а затем передать в заголовок вызова API Alexa.
Пример вызова API
Как отмечено в архитектуре, домашний API содержит основные функции, необходимые для управления списками. В API доступно несколько сделок, и вот документация от Amazon. Используя Node.js, вот код, используемый для вызова API с помощью операции POST, создающей новый список под названием «Workout Tracker».
var path = "/v2/householdlists/"; var postData = { "name": "Workout Tracker", //item value, with a string description up to 256 characters "state": "active" // item status (Enum: "active" only) }; var consent_token = session.user.permissions.consentToken;
var options = { host: api_url, port: api_port, path: path, method: 'POST', headers: { 'Authorization': 'Bearer ' + consent_token, 'Content-Type': 'application/json' } };
var req = https.request(options, (res) => { console.log('statusCode:', res.statusCode); console.log('headers:', res.headers); var data = "";
res.on('data', (d) => { console.log("data received:" + d); data += d; }); res.on('error', (e) => { console.log("error received"); console.error(e); }); res.on('end', function() { console.log("ending post request"); if (res.statusCode === 201) { var responseMsg = eval('(' + data + ')'); console.log("new list id:" + responseMsg.listId); callback(res.statusCode, responseMsg.listId); } else { callback(res.statusCode, 0); } });}); req.end(JSON.stringify(postData));
API возвращает объект JSON, который включает в себя ListIdentifier, который используется в следующих вызовах для добавления элементов в список.
Вывод
Это простой способ использовать пользовательский интерфейс пользователя Alexa с повсеместностью программы Alexa Companion. Вот ссылка на полное репо навыков, и если у вас есть идеи по улучшению – пожалуйста, сообщите мне!