Узнайте, как построить голосовой интерфейс и модель взаимодействия

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

В этом уроке мы собираемся создать навык, который расскажет вам факты о данном знаке Зодиака. Таким образом, с этим умением вы можете сказать: «Расскажите мне о Львах», и эхо ответит: «Известно, что Львы горды, преданны, харизматичны и стильны» или что-то в этом роде. Вы также можете сказать: «Расскажите мне о Девах», и эхо ответит фактом о людях со знаком Девы.

Создание голосового интерфейса

Есть две основные части создания навыка Alexa. Во-первых, мы должны создать голосовой интерфейс, который будет состоять из того, какие типы вещей пользователь может сказать и какое значение имеет каждая фраза. В будущем уроке мы завершим навык, добавив лямбда-функцию, которая будет содержать код для функциональности навыка. Хотя сейчас это может показаться общим, мы скоро углубимся в детали! Самый распространенный способ создать Alexa Skill — использовать JavaScript.

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

Примеры высказываний

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

  • Расскажите мне о {Зодиаке}
  • Расскажи мне о {Зодиаке}
  • Я хочу узнать больше о {Zodiac}
  • Я хочу узнать больше о {Зодиаке}
  • Расскажите о {Зодиаке}
  • Расскажите о {Зодиаке}
  • Расскажите мне несколько фактов о {Зодиаке}
  • Расскажите мне несколько фактов о {зодиаке}
  • Какие есть знаки зодиака?
  • Какие еще знаки зодиака?
  • Подскажите знаки зодиака
  • Скажи мне еще раз знаки зодиака

Обратите внимание, у нас есть некоторые фразы зодиака на руле — это потому, что зодиак будет названием слота. Слот похож на переменную, которая при реализации будет иметь определенное значение. Например, когда пользователь говорит «Расскажите мне о Весах», ячейка зодиака имеет значение «Весы», а если пользователь говорит «Расскажите о Раке», ячейка зодиака будет иметь значение «Рак». Нам нужно будет перечислить возможные значения слота зодиака, но это будет позже. На данный момент просто важно знать, что значение слота зодиака из того, что говорит пользователь, будет определять то, что Alexa ответит пользователю.

Намерения

Многие вещи, которые мы говорим, имеют одинаковое значение, и с Alexa мы обрабатываем это с помощью намерений. Каждое образец высказывания сопоставляется с намерением, которое представляет его истинное значение. Например, Расскажите о {зодиаке и Расскажите мне о {зодиаке будут сопоставлены с одним и тем же намерением, поскольку оба они представляют собой запрос одного типа, запрашивающий у Alexa факты. о конкретном знаке Зодиака. Кроме того, Назовите мне знаки зодиака и Что такое знаки зодиака? также будут сопоставлены с тем же запросом, поскольку они просят Alexa перечислить все знаки зодиака. Существуют также встроенные намерения, такие как AMAZON.YesIntent и AMAZON.HelpIntent, которым уже назначены высказывания. Мы можем сопоставить больше высказываний с этими встроенными намерениями, но это будет позже в этом руководстве.

Поместите это в облако

Изучив основы, давайте перейдем к https://developer.amazon.com/, чтобы начать. Ваша веб-страница, вероятно, будет выглядеть примерно так.

Нажмите кнопку входа в верхнем правом углу и войдите (или создайте) свою учетную запись Amazon. Как только вы войдете, вы должны увидеть что-то похожее на это.

Нажмите Alexa вверху, а затем нажмите Alexa Skills Kit.

Нажмите «Добавить новый навык» справа, и мы продолжим и начнем создавать наш навык. Когда вы окажетесь на странице, добавьте название навыка — здесь я поставлю Zodiac Facts — и название инновации. Название навыка — это то, как навык будет называться на Amazon и в магазине Alexa, а название инновации будет определять, что говорит пользователь, чтобы начать навык.

Для контента, не встроенного в Amazon Echo, пользователь должен сначала загрузить навык, а затем, чтобы запустить навык, пользователь должен сказать «Запустить [Имя инновации]», где «Имя инновации» — это название инновации навыка. С добавлением названия навыка и названия инновации ваша страница должна выглядеть примерно так.

Нажав «Далее», мы перейдем к Модели взаимодействия, в которой будет содержаться код нашего голосового интерфейса. Первая часть называется Схема намерений. Схема намерения будет иметь все наши возможные намерения — другими словами, все возможные значения, которые могут иметь наши типовые высказывания. Для этого навыка наши намерения будут включать:

  • GetZodiacFactIntent
  • AMAZON.GetHelpIntent
  • AMAZON.CancelIntent
  • AMAZON.StopIntent

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

{ "intents" : 
   [ { "intent": "GetZodiacFactIntent" }, 
     { "intent" : "AMAZON.HelpIntent" }, 
     { "intent" : "AMAZON.StopIntent" }, 
     { "intent" : "AMAZON.CancelIntent" } 
   ] 
}

Однако нам не хватает одного — нашего слота Zodiac! В высказываниях, сопоставленных с GetZodiacIntent, нам нужно точно указать, о каком знаке Зодиака мы хотим получить сведения. Чтобы добавить этот слот, мы просто добавим атрибут слотов к конкретному объекту, назовем его зодиак и присвоим ему тип СПИСОК ЗНАКОВ (с подчеркиванием).

{ "intents" : 
   [ { "intent": "GetZodiacFactIntent", 
       "slots": [ { "name": "Zodiac", "type": "LIST_OF_SIGNS" } ] 
     }, { "intent" : "AMAZON.HelpIntent" }, 
     { "intent" : "AMAZON.StopIntent" }, 
     { "intent" : "AMAZON.CancelIntent" } 
   ] 
}

Вставив это в нашу схему намерений на Amazon, ваш экран должен выглядеть примерно так:

Далее мы перечислим возможные значения для нашего пользовательского слота Zodiac. Нажмите «Добавить тип слота» и в поле «Тип» напишите «СПИСОК ЗНАКОВ» (с подчеркиванием), а в качестве значений напишите:

Aquaries Aries Taurus Pisces Gemini Geminis Cancer Cancers Leo Leos Virgo Virgos Libra Libras Scorpio Scorpios Sagittarius Sagittariuses Capricorn Capricorns

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

Когда вы закончите, нажмите Сохранить. Последняя часть создания нашей модели взаимодействия — это перечисление примеров высказываний, а также их намерений. Мы будем использовать примеры высказываний, которые мы создали выше, и напишем намерение, связанное с каждым из них, перед каждой фразой. Не забудьте сделать каждое образец высказывания (не намерение или название слота) строчными буквами и удалить все знаки препинания.

GetZodiacFactIntent tell me about {Zodiac} 
GetZodiacFactIntent tell me about a {Zodiac} 
GetZodiacFactIntent i want to know more about {Zodiac} GetZodiacFactIntent i want to know more about a {Zodiac} GetZodiacFactIntent talk about {Zodiac} 
GetZodiacFactIntent talk about a {Zodiac} 
GetZodiacFactIntent tell me some facts about {Zodiac} GetZodiacFactIntent tell me some facts about a {Zodiac} AMAZON.HelpIntent what are the zodiac signs 
AMAZON.HelpIntent what are the zodiac signs again 
AMAZON.HelpIntent tell me the zodiac signs 
AMAZON.HelpIntent tell me the zodiac signs again

Здесь мы соотносим любые фразы о получении фактов для определенного знака зодиака с GetZodiacIntent и любые фразы о прослушивании списка знаков зодиака с AMAZON.HelpIntent. К AMAZON.CancelIntent и AMAZON.StopIntent уже подключены образцы высказываний, и нет фраз, которые мы хотели бы добавить, поэтому они не включены в часть примеров высказываний. После ввода это должно выглядеть так.

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

Что теперь?

У нас отключен голосовой интерфейс и модель взаимодействия, но все, что у нас есть, — это интерфейс. Наше умение на самом деле еще ничего не делает. В следующем уроке Alexa Skill мы узнаем, как подключить лямбда-функцию к нашему навыку, чтобы придать ему некоторую функциональность.