Как создать навык Alexa, управляющего списками дел

1656608432 kak sozdat navyk alexa upravlyayushhego spiskami del

автор Террен Петерсон

zHFYq7vnUL-hLib4wv6ppMwG2csANWzo5iIP
Предоставлено RitaE на Pixabay

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

-c8VTjSI7FO9iKgSF0uJGSgM79Z3uAin9Yqp
Навык планировщика тренировок Alexa

Фон

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

Не берите Alexa в спортзал, принесите список

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

Я написал свой Alexa Skill под названием Workout Planner, который задавал вопрос о том, какие типы упражнений нужно делать. Затем он создал список для отслеживания. Вот скриншот того, что навык создает на моем телефоне.

vXvBbsfZotdq7rK2QmR4HgQVo5XnN05li9jE

Архитектура использования списков Alexa

Основные функции вокруг списков включены через API Alexa, который управляет объектами, отображаемыми в сопутствующем приложении Alexa.

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

874aizqiQKmCFc2G1-LqjQRYyBW8YRvVb1TR

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

Включение разрешений на использование списков

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

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

crX24atn1zXmoeXyKHF25te6VHPTqLbPVjBO
Определение дополнительных разрешений, необходимых для этого специального навыка в консоли Alexa Developer

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

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

lJTQ0BACYmViOPhC0Vlfn4BpV0LjT9vUYTOG
Каждый пользователь должен будет разрешить доступ к данным своего списка.

Наконец, при выполнении создается маркер согласия для каждого сеанса, в котором используется навык. Этот маркер нужно сохранить функцией 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. Вот ссылка на полное репо навыков, и если у вас есть идеи по улучшению – пожалуйста, сообщите мне!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *