Гласовите асистенти присъстват все повече в живота ни. Не само на нашите телефони, но имаме всякакви устройства като 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, инструмент в конзолата, който не изисква разполагането на сървъра да упражнява модела.
Използване на AWS Lambda и Kotlin за сървърната част
След като се създаде предната част на умението, ще обясним задната. Както казахме преди, ще използваме AWS Lambda, което ще ни позволи много проста интеграция. Няма да навлизам в подробности за безсървърни концепции, защото това не е целта на тази публикация. Тук оставям връзката към статията, която Рикардо Борильо написа по въпроса.
Единственото нещо, което трябва да коментирате, е, че използвате региона на Ирландия, защото не всички от тях ще ви позволят да конфигурирате Alexa Skill.
Трябва да създадем функция в панела AWS Lambda и ще използваме Java 8 като време за изпълнение. Ще трябва да направим допълнителна процедура за конфигуриране, ако не сме създали предишна роля за проблеми с разрешенията в AWS, но това е просто. Също така препоръчвам да работите въз основа на версиите на функцията, която сте създали. Това ще ви даде гъвкавост и контрол, когато става въпрос за внедряване на различни версии на кода според вашите умения.
След като функцията е създадена, ние трябва да осъществим връзката с умението. За тях трябва да добавим спусъка Alexa Skills Kit в нашата функция и да добавим идентификатора на умението, който можем да намерим в конзолата за разработчици на Alexa. След това трябва да използваме ARN на нашата функция, за да кажем на умението крайната точка, която ще използваме. По този начин отпред и отзад се опознават.
За обратния код, въпреки че сме избрали времето за изпълнение на Java 8, реших да използвам Kotlin. Първоначално го направих в Java, но в крайна сметка го мигрирах. Имам всичко, публикувано в репозитория на GitHub и ще видите процеса на фиксиране чрез фиксиране. Като основа използваме SDK, който Alexa ни предлага, за да получаваме заявки за умението и да изпращаме пълни отговори на всички устройства, които го използват.
Има два типа основни класове, които ще трябва да създадем:
- Толкова много RequestHandlers, колкото са ни необходими, за да се справим с намеренията, произтичащи от умението. Същият RequestHandler може да обработва повече от едно намерение.
- SkillStreamHandler, който ще бъде основният клас на нашия бекенд. Тук ще регистрираме манипулаторите, които сме създали преди това.
Методът canHandle се използва за проверка дали манипулаторът може да се справи с входящата заявка. Тук основната логика, която обикновено се прави, е да се погледне името на намерението на заявката.
Методът манипулатор е отговорен за получаване на входа и конструиране на отговора на потребителя от неговата заявка. Това е методът, където ще отиде най-интересният код на манипулатора. Тук също ще обработим всеки слот, от който се нуждаят нашите умения. В случая с примера бих искал да подчертая три неща:
- withSpeech даваме отговора на текста, който Alexa ще каже с глас на потребителя.
- withSimpleCard, тук изграждаме изход за Alexa, който ще бъде полезен за устройства с екран, като мобилното приложение.
- withShouldEndSession, с това ние посочваме на Alexa, че след като заявката бъде обработена, ние не чакаме друго взаимодействие с потребителя и затваряме сесията, тоест умението.
След като RequestHandlers, от които се нуждаем, са създадени, можем да ги регистрираме в SkillStreamHandler:
Трябва да се отбележи, че редът на регистрация на манипулаторите влияе върху избора на правилния за обработка на потребителска заявка. SDK ще провери манипулаторите в реда, в който са били регистрирани и първият, който връща вярно за метода canHandle, ще бъде този, който е избран.
Сега трябва само да създадем артефакт, който да се показва в нашата ламбда.
Как да тествате умението ръчно с инструменти на Amazon
Със списъка със задни части можем ръчно да тестваме работата на нашите умения по няколко начина:
- С Utterance Profiler, както казахме при изграждането на модела. Без да се показва гърба, ще можем да стартираме изказвания, проверяващи намерението и стойностите на слота, които в крайна сметка ще изпрати на ламбда.
- С инструментите на AWS Lambda можем да създадем събития, които да бъдат стартирани отзад, които сме създали. По този начин можем да симулираме заявки, които ще пристигат от Alexa. Amazon вече ни предлага шаблони за създаване на тези тестови събития и имаме вградена AWS регистрационна система.
- От конзолата за разработчици на Alexa можем да тестваме цялото умение със симулатор. По този начин ще използваме умението по същия начин, както всеки потребител от всяко устройство с Alexa. Този симулатор ни предлага няколко резултата от използването на умението с много интересна и полезна информация.
Разпространение и сертифициране
И вече стигаме до края на процеса. Подобно на мобилните приложения, ние трябва да публикуваме нашите умения в онлайн магазин, който Amazon има. За да стигнем там трябва попълнете цялата информация за разпределение на уменията и прекарват a процес на предварително сертифициране, извършен от Amazon.
Правим всичко това чрез конзолата за разработчици на Alexa:
- От раздела Разпределение Просто трябва да попълним формуляра, който Amazon иска да направим. Тук е лесно и няма какво много да се обясни, но исках да подчертая един раздел: примерните изречения. Това, което поставяме там, ще повлияе значително на процеса на сертифициране и как потребителите ще взаимодействат с умението за първи път. В допълнение, от тук можем също да активираме бета тестване, без да се налага да го публикуваме.
- След като изпълним горното, можем да преминем към сертифициране. Оттук можем да направим няколко проверки, преди да изпратим умението за сертифициране от Amazon. Предишните проверки отнемат малко време и ще имаме обратна връзка в самата конзола за разработчици на Alexa. Окончателното сертифициране отнема малко повече време и ще получите резултата по имейл. Или обратна връзка за поправяне на нещата, или че вашето умение е преминало процеса и автоматично ще бъде публикувано в магазина.
Заключения
В тази статия разгледахме всички необходими стъпки за създаване на първото ни умение Alexa:
Нямах много предварителни познания по тази тема, нито каква парадигма на гласовите интерфейси като AWS включваше. Благодарение на ресурсите, които другите споделят, и страхотната официална документация успях да създам първото си умение за нула време и да спечеля няколко безплатни устройства Alexa. Amazon обикновено провежда промоции за разработчици на умения от време на време. Сложих няколко връзки в последния раздел с ресурси.
Научих много по време на процеса, особено осъзнавайки предизвикателствата на използването на приложение с моя глас. Проблеми като акценти при говорене, конкретния начин на всеки от тях да произнесе определени думи или богатството на езика, за да изрази едно и също действие. Това са трудности, с които ще се сблъскате при създаването на този тип приложения. Технологии като Alexa и всичко зад нея от Amazon улесняват управлението на тези разработки, но има още много работа. Освен това, както можете да видите от тази статия, създаването на първото ви умение е процес с ниска трудност.
Препоръчвам ви да се задълбочите в теми като поетапни разговори, тоест да създадете истински диалог между Alexa и потребителя. Освен предоставяне на умение със способността да поддържате контекста или да давате прогресивни отговори, защото трябва да извършите скъпа или асинхронна операция на сървъра. И едно от нещата, които мисля, че може да ви харесат най-много, играйте с езика за маркиране на речта, който има Alexa, с който можете да казвате неща на различни езици, да придавате интонации на думи, да използвате предварително дефинирани фрази и т.н.
- Как да си направите диета (за начинаещи) Page 211 Полуживот
- ° С; Как да направите масаж за стягане на гърдите стъпка по стъпка
- 7 вида маруля и как да ги използвате за приготвяне на вкусни и многостранни салати
- Приложение Diet Assistant Pro - Безплатно изтегляне за Android
- Диетичен асистент - Мотивация за отслабване 5