Как Echo Buttons выводит Amazon Alexa Skills на новый уровень

1656572056 kak echo buttons vyvodit amazon alexa skills na novyj uroven

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

G3WtOXEqzFfc5NVbpw8nWphky1bJqg-1ORnj
Изображение через Pixabay

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

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

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

CyYLDlEogrNXnrYiXgOAfMnPLr-EHMGF5S87
Кнопка Echo находится в неактивном состоянии.

Начало работы с кнопками Echo

rD-kqpmupIZML-HuI46qqn97rNmfe2CmT7fx
Сетевое подключение кнопок Echo

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

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

hivuzrSwuf4WcMXDB25tWOKDBXz6qIeQHMiy
Снимок экрана приложения Alexa на мобильном устройстве

Это делает кнопки легким дополнением для энтузиастов Alexa и делает их гибкими для тех, кто имеет несколько устройств.

Как кнопки взаимодействуют с пользовательскими навыками

Alexa – это архитектура, ориентированная на события. События создаются звуками, поступающими в динамик, переводимые через облачный сервис. Обычно эти события инициируются после того, как массив микрофонов получает пользовательскую команду. Эти команды затем транслируются моделями ASR (автоматического распознавания речи) в зависимости от используемого навыка.

С помощью кнопок создается событие нового типа по аналогичному шаблону. При нажатии кнопки создается событие и посылается навыку, работающему в Облаке. Когда кнопку отпускают, создается отдельное событие. Эти события создаются вне зависимости от того, что улавливается микрофонами на Echo Speaker, и протекают через облачную службу, которая называется Game Engine.

xn54u0QFvTYWHG-5EBh2IwBAYKiYXRMUVCAY
Архитектура событий Alexa, включая кнопки

Лямбда-функция, содержащая логику специального навыка, должна обрабатывать эти события вместе с имеющимся, инициированным голосом. Перевод запросов облегчается с помощью Alexa SDK, установленного в функции Lambda. Примеры того, как это работает, приведены в репозитории Alexa.

Это открывает новые возможности игры, поскольку пользователь может использовать как свой голос, так и руки для взаимодействия с навыком. Привлечение большего количества органов чувств расширяет опыт и позволяет играть в более сложные игры. К примеру, в навыке Seventh Inning Stretch пользователь может играть в бейсбол, слушая на своем динамике, нажимая кнопку, чтобы размахивать битой.

Как Skills использует API гаджетов

Для использования кнопок в специальном навыке требуется API гаджетов. Документация находится на этом веб-сайте, и заметьте, что она все еще находится в бета-версии. Кнопки – это только тип гаджета, который позволяет увидеть, что возможно с включенным оборудованием.

Подключение между системами обеспечивается интерфейсами через Интернет. API, требующий кнопки, вызывается путем добавления атрибутов директивы к стандартному объекту ответа Alexa. Это позволяет SDK обрабатывать явные детали вызова HTTPS (т.е. кодировку заголовка, настройку атрибутов, обработку ошибок и т.п.).

Вот пример добавления директивы для установки подсветки кнопки в то же время, когда динамик Echo читает ввод пользователя.

"response": {               "shouldEndSession": false,               "outputSpeech": {                     "type": "SSML",                     "ssml": "<speak> Welcome back to Seventh Inning Stretch.<break time=\"1s\"/>We found an prior game in progress. Would you like to resume? </speak>"                 },               "reprompt": {                     "outputSpeech": {                           "type": "SSML",                           "ssml": "<speak> Say yes to resume the in-progress game, or no to delete it.  </speak>"                     }               },               "directives": [    {                           "type": "GadgetController.SetLight",                            "version": 1,                           "targetGadgets": [],                           "parameters": {                      "animations": [               {                         "repeat": 1,                            "targetLights": ["1"],              "sequence": [                          {                    "durationMs": 30000,                                                               "color": "FFFF00",                  "blend": false                                                     }              ]                      }           ],      "triggerEvent": "buttonDown",                                "triggerEventTimeMs": 0    }}

Game Engine создает события так же, как динамик Echo. Используется та же таксономия, а атрибуты в запросе определяют детали происшествия. Ниже приведен пример запроса, указывающий, что кнопка была нажата.

“request”: {   “type”: “GameEngine.InputHandlerEvent”,   “requestId”: “amzn1.echo-api.request.xxx”,   “timestamp”: “2018–07–21T21:33:25Z”,   “locale”: “en-US”,   “originatingRequestId”: “amzn1.echo-api.request.xxx”,   “events”: [     {       “name”: “button_down_event”,       “inputEvents”: [ {         “gadgetId”: “amzn1.ask.gadget.xxxx”,         “timestamp”: “2018–07–21T21:33:25.374Z”,         “color”: “000DD6”,         “feature”: “press”,         “action”: “down”       } ]     }   ] }

Экономьте заряд батареи с помощью переклички

Кнопки Echo работают от батареи, что делает управление энергией важным. Когда для специального навыка требуется кнопка, он должен инициировать соединение и активировать кнопку. Это делается с помощью процесса, который называется «перекличка» в пользовательском навыке.

Чтобы инициировать перекличку в пользовательском навыке, добавьте директиву к объекту ответа, который дает параметры для выполнения задания. Параллельно звуковые инструкции должны быть включены в объект ответа. Это побуждает пользователя что-то сделать с кнопками. Например, попросите пользователя нажать каждую кнопку для начала.

Чтобы уточнить, как выглядит директива, вот директива переклички, которую я использую для своего навыка растяжения седьмого иннинга. Это ряд атрибутов в большом объекте JSON. Это устанавливает параметр тайм-аута, когда кнопки могут вернуться в спящий режим, если они не используются (значение 300 000 в миллисекундах — это означает пять минут), и ищет только событие отключения кнопки.

"directives": [  {     “type”: “GameEngine.StartInputHandler”,     “timeout”: 300000,     “recognizers”: {       “button_down_recognizer”: {         “type”: “match”,         “fuzzy”: false,         “anchor”: “end”,         “pattern”: [{ “action”: “down” }]       }    },     “events”: {       “button_down_event”: {         “meets”: [“button_down_recognizer”],         “reports”: “matches”,         “shouldEndInputHandler”: false       },       “timeout”: {         “meets”: [“timed out”],         “reports”: “history”,         “shouldEndInputHandler”: true       }     }  }]

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

Перевод событий Game Engine

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

“request”: {   “type”: “GameEngine.InputHandlerEvent”,   “requestId”: “amzn1.echo-api.request.xxx”,   “timestamp”: “2018–07–21T21:33:25Z”,   “locale”: “en-US”,   “originatingRequestId”: “amzn1.echo-api.request.xxx”,   “events”: [     {       “name”: “button_down_event”,       “inputEvents”: [ {         “gadgetId”: “amzn1.ask.gadget.xxxx”,         “timestamp”: “2018–07–21T21:33:25.374Z”,         “color”: “000DD6”,         “feature”: “press”,         “action”: “down”       } ]     }   ] }

Логика функции навыка лямбда должна реагировать на эти события и соответственно обрабатывать функциональные возможности.

Кнопки могут изменять цвет

Внутри кнопок находится ряд светодиодных индикаторов, которые можно отключать и включать. Они яркие, а цвет очень насыщенный.

9gmdYm6OjjrrCzjeM0DLTLJ-RDtTdnB3gfKd

Кнопки также могут изменять цвет, изменяя способ подсветки разных светодиодов.

fr7rACZlz0hBY5apboKduTEjVd7cK8tlXGDz

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

Закрытие

Если вы заинтересованы в том, чтобы попробовать игру, которая использует их, пожалуйста, испытайте мою игру-симулятор бейсбола на Alexa. Он называется «Seventh Inning Stretch» ​​и является попыткой воспроизвести удовольствие от старых портативных игр 80-х. Это хороший пример того, что можно с помощью этих новых аксессуаров.

ACXMJEoX78nZezIBRNITH7S5eSIsL0Jka5z6
Пример Alexa Skill, использующий кнопки

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

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