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

Поскольку мы оба имели опыт работы с Java, это был наш предпочтительный язык программирования. Работа с совершенно новым языком, таким как node.js, была бы слишком сложной для этого проекта.

Благодаря их полезным и хорошо документированным примерам проектов работать с Alexa SDK оказалось проще, чем ожидалось. Это помогло нам структурировать наш код и классы. Это очень облегчило нам работу над собственным мастерством.

Автоматизируйте ВСЕ, что вы можете

Автоматически разверните свой проект с помощью всего одной команды терминала!

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

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

Поэтому мы рекомендуем настроить автоматическую загрузку вашего проекта в сервис AWS Lambda. Создайте файл bash (или, если вы используете Windows, пакетный) файл для выполнения следующих команд.

Создайте jar-архив вашего проекта

2. Загрузите архив в свой сервис AWS Lambda. Для выполнения этой команды у вас должен быть установлен AWS CLI (дополнительную информацию см .: http://docs.aws.amazon.com/cli/latest/userguide/installing.html)
Примечание. Функцию update-function-code также можно настроить так, чтобы всегда выгружать последнюю версию вашего jar-файла.

Создать модульные тесты

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

К сожалению, нам не удалось найти хорошую статью о написании модульных тестов для наших целей. Поэтому нам пришлось придумать собственную идею, но мы не уверены, что это самый простой и быстрый подход. Если вы знаете хорошую статью или проводите эти тесты лучше, сообщите нам об этом. Мы действительно хотели бы улучшить наш дизайн в любое время.

  1. Перейдите в консоль разработчика Alexa и перейдите на страницу проверки вашего навыка. Введите высказывание для намерения, которое вы хотите проверить, и выполните его.
  2. Вы увидите запрос на обслуживание в формате JSON. Создайте файл JSON в структуре вашего проекта и вставьте запрос на обслуживание.
  3. Реализуйте метод для создания SpeechletResponse из файла JSON.

4. Создайте тест JUnit.

5. Вуаля! Вам удалось проверить свой навык Alexa!

Примечание. В Tractive Alexa Skill мы создали файл свойств, содержащий все локализованные строки для одного языка. Чтобы сделать тестирование более динамичным, мы создавали тесты не с жестко запрограммированными строками, а со строками, определенными в файле свойств. Таким образом, нам не нужно было изменять наши тесты или создавать новые тесты при добавлении нового языка или изменении существующих строк.

Алекса, дайте нам (push) уведомления!

Репутация напористого - не всегда плохо, Алекса! Помимо плохих шуток, это была бы одна из лучших и самых полезных функций для нашего Навыка, и я уверен, что это не непопулярное мнение как среди пользователей, так и среди программистов. Это очень востребованная функция на многих досках разработчиков, поэтому есть некоторая надежда на то, что в ближайшее время будет добавлено дополнение к SDK.

Если вам интересно, почему push-уведомления могут быть такими крутыми в Alexa, вот объяснение: давайте взглянем на наш вариант использования, чтобы дать вам лучшее представление. С помощью Tractive GPS App вы можете создавать так называемые безопасные зоны.

Эти безопасные зоны представляют собой геометрические формы, нарисованные на карте (большую часть времени вокруг вашего дома). Если ваш питомец покидает безопасную зону, вы сразу получаете уведомление на свой смартфон. Это объясняет, как можно избежать побега вашего питомца из дома.

Разве не было бы здорово, если бы Алекса уведомила нас, когда наш питомец пытается отправиться в приключение?

Как работает Алекса?

Сначала мы хотели сравнить наши навыки Alexa и возможности программирования в целом с Siri, но, увы, Apple не позволила этого. Если ваше приложение не попадает в одну из семи строго определенных категорий, вы в основном облажались.

Поэтому мы выбрали следующую лучшую вещь от Apple - API распознавания речи. Возможно, вы захотите узнать, что это такое и почему вы никогда об этом не слышали? Мы тоже. Это довольно новый API (впервые показанный на WWDC 2016), который позволяет преобразовывать речь в текст в режиме реального времени. Мы разработали довольно простое приложение с функциями, сопоставимыми с нашим навыком Alexa. Для нашего случая было достаточно использовать только фиктивные данные.

Наконец, пришло время статистики. Статистика не врет, народ! Мы записали кучу разных команд для наших двух голосовых помощников и попросили наших друзей и семью записать, как они произносят эти команды. После сбора как можно большего количества аудиосэмплов и Alexa, и Apple Speech API прослушали их, и мы записали понятную команду в таблицу Excel.

Наши результаты

Apple Speech API очень хорош, когда дело касается длинных предложений, и переводит их на удивление быстро, но не очень хорошо справляется с фоновым шумом. А вот с Alexa более или менее наоборот. Она очень плохо разбирается в длинных голосовых командах, но не особо заботится об окружающем шуме. Еще мы заметили, что Speech API безнадежен, когда дело касается аудиозаписей, но Alexa справляется с ними достаточно хорошо.

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

О нас

Этот пост и репозиторий были предоставлены вам