Создавайте, управляйте, тестируйте и публикуйте свои навыки работы с Alexa из командной строки.

Введение

Одна из величайших особенностей Amazon Alexa - это возможность добавлять навыки для улучшения взаимодействия с пользователем в соответствии с конкретными потребностями.

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

Вы можете создать новый навык с помощью консоли разработчика Amazon. Консоль - отличный инструмент со многими плюсами, но со временем я почувствовал, что инструмент командной строки дает вам лучший опыт программирования при разработке вашего приложения. Вы можете легко моделировать, тестировать, развертывать и автоматизировать интеграцию с процессом развертывания CI / CD.

В этом посте я расскажу о том, что считаю самым простым и эффективным способом создания и поддержки навыка Alexa с помощью ASK-CLI.

Как работает навык Alexa

Набор навыков Alexa (ASK) предоставляет API-интерфейсы самообслуживания и инструменты, которые можно использовать для развития навыков работы с Alexa.

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

СПРОСИТЬ CLI

Интерфейс командной строки Alexa Skills Kit (ASK CLI) - это инструмент, с помощью которого вы можете управлять своими навыками Alexa и соответствующими ресурсами, такими как функции AWS Lambda. С ASK CLI у вас есть доступ к API управления навыками, который позволяет программно управлять навыками Alexa из командной строки.

Вы можете использовать консоль разработчика ASK или интерфейс командной строки (CLI) ASK для создания, управления, тестирования и публикации своих навыков.

Настраивать

Перед установкой ASK CLI убедитесь, что выполнены следующие условия:

Аккаунт разработчиков Amazon

Если у вас его еще нет, создайте учетную запись разработчика Amazon. Перейдите по этому URL.

Выберите Amazon Alexa

Войдите или создайте учетную запись:

Текущая версия или активная LTS-версия Node.js

Установите Node.js. Следуйте последним инструкциям здесь:



Скачать | Node.js
Node.js® - это среда выполнения JavaScript, построенная на движке JavaScript V8 Chrome. nodejs.org



Чтобы проверить правильность установки, проверьте свою версию Node.js. Откройте командную строку и введите

$ node --version

Аккаунт AWS

Я буду использовать AWS Lambda для размещения логики серверной части Skill, поэтому создайте учетную запись AWS, если у вас еще нет

AWS CLI

ASK CLI зависит от AWS CLI для загрузки лямбда-сервиса, поэтому давайте установим его в соответствии с вашей ОС:



Чтобы проверить установку, проверьте свою версию AWS. Откройте командную строку и введите

$ aws --version

Вы должны увидеть свою версию интерфейса командной строки AWS

Создайте учетные данные AWS

Если у вас уже есть пользователь IAM, вы можете пропустить этот шаг. Создайте учетные данные AWS для интерфейса командной строки, перейдя по этой ссылке:



AWS настроить

Последний шаг перед установкой ASK CLI - настроить AWS CLI для вашего пользователя. Откройте терминал и введите: $ aws configure

Введите свой идентификатор ключа доступа AWS и секретный ключ доступа. Поздравляю! Вы все сделали.

Установка

Теперь давайте установим ASK CLI, используя npm

Примечание. Перед установкой ASK CLI в Windows необходимо установить пакет windows-build-tools для Node.js. Перед установкой windows-build-tools убедитесь, что у вас установлена ​​версия Node.js, необходимая для пакета. Чтобы установить инструменты сборки Windows, сначала откройте PowerShell с параметром Запуск от имени администратора, затем введите npm install -g --production windows-build-tools.

Для установки может потребоваться запуск от имени администратора или суперпользователя. В Windows откройте PowerShell с параметром Запуск от имени администратора. В Linux или macOS используйте sudo.

Откройте командную строку и введите $ npm install -g ask-cli.

Убедитесь, что ваша установка прошла успешно, набрав в терминале следующую команду:

ask --version

Вы должны увидеть свою версию ASK CLI

Теперь давайте настроим ASK CLI перед его использованием:

Команда ask configure помогает настроить учетные данные, которые ASK CLI использует для аутентификации вас в сервисах разработчиков Amazon и Amazon Web Services (AWS).

Откройте терминал и введите: $ ask configure

Выберите свой профиль AWS CLI, созданный ранее, или Создайте новый профиль сейчас.

Эта интерактивная команда открывает веб-браузер, в котором вы можете войти в свою учетную запись разработчика Amazon.

Если вы работаете на компьютере без установленного браузера, вы можете использовать команду ask configure --no-browser для завершения инициализации.

После успешного входа в систему. Закройте браузер и продолжайте.

Введите «Y», чтобы связать свою учетную запись.

Выберите свой профиль для привязки:

Конфигурация завершена. Давайте приступим к созданию нашего первого навыка Alexa.

Создать первый навык

ASK-CLI предоставляет набор шаблонов для быстрого создания вашего первого навыка. Шаблон значительно сэкономит вам время при настройке базовой структуры вашего проекта. Я настоятельно рекомендую использовать тот, который наиболее близок к желаемой функциональности.

ASK-CLI предлагает вам два стартовых шаблона:

  • Привет слово
  • Fact Skill → Быстрый образец навыка для управления набором голосовых данных

Вы также можете создать новый навык, используя свои собственные шаблоны навыков. Чтобы использовать настраиваемый шаблон, укажите URL-адрес Git шаблона с --template-url.

Давайте создадим первый навык Hello World.

Чтобы создать новый навык, запустите ask new, который предложит вам выбрать языковую среду выполнения для вашего навыка. Я буду использовать Node.js в качестве предпочтительного языка:

Затем выберите, где разместить серверный ресурс вашего навыка. Я буду использовать AWS Lambda:

Затем выберите свой шаблон. Выберите Hello World:

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

Вот и все, ваш первый навык создан. Давайте посмотрим на сгенерированную структуру папок:

Перейдите в папку с новыми навыками: $ cd HelloWorld

Откройте папку в вашей любимой IDE. Я использую код Visual Studio:

- infrastructure:     
    AWS CloudFormation used for deployment. No need for changes in this folder
- lambda:
    All of your lambda source code goes in this folder. 
    index.js / index.handler is the default starting handler.
    This includes installing the skill's dependencies and producing any build artifacts. 
    For a skill written for Node.js, this means running npm install to install dependencies declared in package.json and packaging it with the JavaScript source code
- skill-package:
    Reference to Skill Package API to interact with your skill
    
    - assets:
         Images associated with your Skill to show in the Alexa Store and any other files referenced by your skill
    
    - interactionModels / custom:
         These define the voice user interface for your skill which includes the invocation name, intents, slots, and so forth. Only custom skills include interaction models, with one model for each locale that the skill supports. The name of the interaction model is <locale>.json, for example en-US.json. In the skill package format, the interaction models must be in a folder named custom, which itself must be in a folder named interactionModels.
     
    - skill.json:
         Skill Manifest Schema - JSON representation of your skill.
         The complete Schema definition is available here:
         https://developer.amazon.com/en-US/docs/alexa/smapi/skill-manifest.html 
- ask-resources.json
     Configuration details of your skill

Откройте свой skill.json:

  • locales будут ссылаться на файлы JSON в папке моделей взаимодействия. Вы можете создавать дополнительные.
  • Вы можете обновить название и описание
  • apis - конечная точка лямбда-выражения

Откройте свой ask-resources.json:

Выберите предпочитаемый регион AWS и сохраните.

При необходимости вы также можете обновить расположение обработчика, исходного кода лямбда-выражения и пакета навыков.

Разверните первый навык

Чтобы применить свои навыки, просто введите:

$ ask deploy

ASK автоматически:

  • Развертывание метаданных навыков: упакуйте и загрузите содержимое каталога skill-package/ навыка в Alexa Skills с помощью API пакета навыков. Если вы применяете навык впервые, команда создает новый навык в настроенной учетной записи разработчика Amazon.
  • Код навыка сборки в каталоге lambda/ и упакуйте артефакты сборки для развертывания в AWS. Это включает в себя установку зависимостей навыка и создание любых артефактов сборки. Для навыка, написанного для Node.js, это означает запуск npm install для установки зависимостей, объявленных в package.json, и его упаковку с исходным кодом JavaScript.
  • Артефакты сборки Deploy Skill Infrastructure в настроенной функции AWS Lambda. Если это первый раз, когда навык развертывается, а лямбда-ARN не настроен, команда создает новую лямбда-функцию.
  • Включить навык

Через некоторое время ваш навык будет развернут в AWS и готов к использованию в режиме разработки. Еще не общедоступно.

Подтвердите свое развертывание:

  • Войдите в Консоль AWS → Lambda

Подтвердите свой новый навык при создании лямбда-функции.

  • Войдите в консоль разработчика Alexa

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

Поздравляю. Ваш первый навык правильно развернут в Alexa и AWS Lambda. Все делается через CLI, не заходя через консоль.

Вы можете отредактировать свой код в Visual Studio Code, сохранить его и просто ввести $ ask deploy, чтобы повторно применить свои навыки.

Это сэкономит вам много времени при разработке.

Проверьте первый навык

Откройте файл InteractionModels / custom / en-US.json, чтобы проверить свои намерения по навыкам. намерение представляет собой действие, которое выполняет голосовой запрос пользователя. Это запустит intentHandlers, определенные в вашем обработчике лямбда-выражения index.js.

Из файла видно, что навык Hello World вызывается ключевым словом: hello world

Умение поддерживает: CancelIntent, HelpIntent, StopIntent, HelloWorldIntent

Чтобы проверить свои навыки из командной строки, запустите ask dialog и укажите языковой стандарт, поддерживаемый вашим навыком:

$ ask dialog --locale en-US

Команда открывает интерактивный терминал, в котором вы можете имитировать многооборотный разговор с Alexa:

Раскройте свой навык и смоделируйте разговор:

User  > open hello world
Alexa > Welcome, you can say Hello or Help. Which would you like to try?
User  > help
Alexa > You can say hello to me! How can I help?
User  > hello
Alexa > Hello World!

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

Теперь давайте отредактируем код и выполним повторное развертывание. В Visual Studio Code перейдите в папку с лямбда-выражениями и откройте index.js:

Найдите HelloWorldIntentHandler:

Отредактируйте constspeakOutput со своим именем.

Сохраните файл и повторно разверните навык, используя $ ask deploy

Еще раз проверьте симуляцию:

User  > open hello world
Alexa > Welcome, you can say Hello or Help. Which would you like to try?
User  > hello
Alexa > Hello Marcos

Ваш навык обновлен. Просто как тот.

Весь исходный код доступен в моем GitHub:



При развертывании в AWS ASK CLI создает артефакты сборки в каталоге .ask/. Чтобы исключить эти артефакты из Git, добавьте .ask/ в .gitignore проекта навыков.

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

Удачного кодирования.