Amazon Alexa как да създадете свое собствено умение за вашия гласов асистент стъпка по стъпка

Гласовите асистенти присъстват все повече в живота ни. Не само на нашите телефони, но имаме всякакви устройства като Google Home или Amazon Echo, и двете с различни варианти.

собствено

Както при мобилните устройства и сензорните интерфейси, сега се открива нов свят от възможности за разработчиците с гласови интерфейси. В тази статия ние нека се съсредоточим върху гласовия асистент, създаден от Amazon: Алекса. Което вече включва 5 устройства като Echo Dot, Echo, Echo Plus, Echo Spot и Echo Show.

През последните няколко месеца научавам за това как да създадете умение, това е името на приложенията в този съветник и различните инструменти, които имаме за него. Написах поредица от публикации, които ще използвам като справка тук, когато всяка стъпка се коментира.

Откъде да започна?

Първото нещо е да помислим за умението, което искаме да създадем. Моят съвет е да изберете нещо просто, което не изисква бази данни или външни API повиквания. Първо, винаги можем да изградим нещо, което съдържа информацията в самия код на сървъра, или със статичен код, JSON файл или подобен. Това беше моят случай, когато реших да създам първото си умение, което позволява консултации с филмови премиери на определен период от време. Важното е, че се фокусираме върху изучаването на парадигмата за създаване на умение.

Има много официална документация и някои други беседи на испански. Направих малка компилация в първата си публикация от поредицата. За да разберете как работи Alexa с няколко думи, можете да гледате следното видео (на английски) от официалния акаунт за разработчици на Alexa в YouTube.

Развитие на умения

A Alexa умение не се различава от всяко приложение, което е направено днес. Той има клиентска и сървърна част. Клиентската страна е отговорна за дефинирането на модела на взаимодействие (Interaction Model) с потребителя. Този модел е съставен от няколко части, които ще видим по-късно. За сървърната част ще използваме AWS Lambda и SDK, предоставени от Alexa за Java. Въпреки че е за Java, ще видим използването му с Kotlin. Всеки език на JVM би ни направил.

Преди да се заемем с бизнеса, трябва да имаме акаунт за разработчици в Amazon. Можем да го направим от официалния уебсайт на Alexa и това ще ни позволи да получим достъп до набора от услуги, които Amazon предлага на разработчиците. В нашия случай това ще ни позволи достъп до конзолата за разработчици на Alexa и до услугите на AWS, където ще използваме AWS Lambda.

Първото умение, което разработих, което взех за основа на статиите, позволява на потребителя да поиска премиери на филми, посочвайки период от време. Като основен сценарий можем да предложим следното взаимодействие:

По същия начин потребителят може да използва умението с „еднократно извикване“. Или може да посочи период от време, за който премиерите не са известни:

И като еволюция, първоначално не принуждаваше да посочва период от време, но след това го промених:

Създаване на модел на взаимодействие с конзолата за разработчици на Alexa

Конзолата за разработчици на Alexa е основният сайт за развиване на умение за Alexa. Това ще ни позволи да покрием голяма част от цикъла на разработка, тестване, дистрибуция, сертифициране и анализ.

Когато създаваме умение, той ни пита: име, език на умението и какъв тип е. Наличните типове зависят от избрания от вас език по подразбиране. За испански ще създадем „персонализирани умения“, тъй като това ще ни позволи да имаме целия контрол върху потребителското изживяване и да създадем свой собствен модел на интерактор.

Веднъж създаден, ще отидете до прозорец с различни раздели. Разделът "изграждане" ще ви предложи цялата необходима функционалност за създаване на модел на интерактор. Дефиницията на този модел не е нищо повече от генериране на JSON файл със специфична структура. Ще имаме достъп до този файл, ако искаме например да го версираме или да създадем друго умение въз основа на съществуващ модел.

В обобщение, частите на модела са:

  • Име на призив, името, което потребителят ще използва, за да се позове на нашето умение.
  • Намерения, действията, които потребителят ще може да извърши.
  • Изявления, Те са изрази, дефинирани на ниво намерение и се използват за тяхното стартиране.
  • Слотове, Те са аргументи в изказване, предназначени да събират потребителска информация. Трябва да им бъде присвоен тип при създаването им. Amazon вече предлага някои предварително дефинирани типове, но ние можем да създадем свои собствени.

Използването на слотове в нашия модел това ще зависи от случая на употреба. От горните елементи те са единствените, които не са задължителни за дефиниране, тъй като може да не се наложи да събираме потребителска информация. Както видяхме в предишния раздел, моето умение се развиваше по такъв начин, че в крайна сметка дефинирах задължителен слот с информация за определен период от време (тази седмица, този месец, следващата седмица и т.н.).

След като дефинираме модела, трябва да го изградим. Това ще ни позволи да го тестваме с Utterance Profiler, инструмент в конзолата, който не изисква разполагането на сървъра да упражнява модела.