Перейти к основному содержимому

Подключение Amazon Alexa для проекта на JAICF

подсказка
Amazon Alexa — голосовой помощник, доступный на устройствах Amazon Echo.

Навык Alexa — это приложение, которое пользователь может активировать голосом, и далее взаимодействовать с устройством Amazon Echo. Больше подробностей о навыках Alexa есть на официальном сайте Amazon.

Чтобы подключить канал Amazon Alexa для проекта на JAICF, выполните следующие шаги:

  1. Подготовьте проект.
  2. Подключите канал.
  3. Зарегистрируйте навык в консоли разработчика.
  4. Протестируйте навык.
  5. Опубликуйте навык.

Подготовка проекта

Перед подключением канала предварительно подготовьте проект JAICF:

  1. Укажите в файле build.gradle.kts в зависимостях настройки:
dependencies {
// ...
implementation("com.just-ai.jaicf:jaicp:$jaicfVersion")
implementation("com.just-ai.jaicf:alexa:$jaicfVersion")
}
подсказка
  1. Сконфигурируйте в зависимости от способа подключения к платформе:
  • long polling — бот будет сам подключаться к серверу Just AI при взаимодействии с платформой. Простое решение, подходит для локальной разработки и отладки.

    Для этого способа укажите в файле JaicpPoller.kt канал AlexaChannel:

package com.just-ai.jaicf.template.connections

fun main() {
JaicpPollingConnector(
templateBot,
accessToken,
channels = listOf(
ChatApiChannel,
ChatWidgetChannel,
TelephonyChannel,
AlexaChannel
)
).runBlocking()
}
  • webhook — по указанной ссылке бот будет принимать сообщения платформы. Необходимо конфигурировать для подключения в JAICP Cloud.

    Для этого способа укажите в файле JaicpServer.kt канал AlexaChannel:

package com.just-ai.jaicf.template.connections

fun main() {
JaicpServer(
botApi = templateBot,
accessToken = accessToken,
channels = listOf(
ChatApiChannel,
ChatWidgetChannel,
TelephonyChannel,
AlexaChannel
)
).start(wait = true)
}

Подключение канала

Перейдите в проект JAICF на JAICP. Нажмите на панели управления Каналы → Входящие → Подключить канал. В разделе Голосовые Ассистенты выберите Alexa. Укажите название канала → нажмите Создать.

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

Регистрация навыка

подсказка
Чтобы сделать ваш навык доступным для пользователей Alexa, вам понадобится аккаунт Amazon Developer.

Создание навыка

Авторизуйтесь в консоли разработчика Alexa Developer Console. Теперь зарегистрируйте навык в консоли, для этого нажмите Create skill и заполните параметры:

  • Skill name — название навыка для каталога.
  • Default language — язык по умолчанию. После создания навыка вы сможете добавить другие языки.
  • В качестве модели выберите Custom, а размещение Provision your own.

Нажмите Create skill. В качестве шаблона навыка выберите Start from Scratch.

Настройка навыка

Далее на левой панели нажмите Invocation. Здесь в поле Skill Invocation Name задайте активационное имя, по которому навык можно вызвать. Нажмите Save Model.

Далее на левой панели нажмите Endpoint. Здесь в качестве Service Endpoint Type выберите HTTPS, затем заполните поля:

  • Default Region — вставьте вебхук, который был создан при подключении канала на платформе.
  • В качестве SSL-сертификата выберите My development endpoint is a sub-domain of a domain that has a wildcard certificate from a certificate authority.

Нажмите Save Endpoints.

На верхней панели нажмите Build → затем на странице нажмите Build Model.

Тестирование навыка

Чтобы протестировать навык нажмите на верхней панели Test, выберите для поля Skill testing is enabled in значение Development. Также для тестирования можно использовать устройство Echo.

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

Публикация навыка

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

  • Перейти во вкладку Distribution.
  • Предоставить данные о навыке и отправить их на модерацию в Amazon.

После того как навык пройдет модерацию, он станет доступен для всех пользователей.

Нативные возможности канала

Нативные реакции

JAICF предоставляет универсальные реакции, доступные во всех каналах, а также реакции, уникальные для Alexa. Чтобы использовать специфические реакции Alexa, используйте reactions.alexa, например:

action {
reactions.say("Привет!")
reactions.alexa?.stopAudioPlayer()
}

Вы также можете напрямую обратиться к объекту с ответом через reactions.alexa.response:

action {
reactions.alexa?.response?.builder?.addAudioPlayerStopDirective()
}

Хостинг

Используя канал Alexa, вы можете разместить вашего бота в облаке Amazon с помощью AWS Lambda.