Coraz popularniejsze stają się głośniki z asystentami głosowymi. Microsoft, Google czy Amazon to tylko niektóre firmy, które rozwijają własny produkt tego typu. Czy możemy sami zaprogramować sobie jakąś funkcjonalność do takiego asystenta głosowego? Oczywiście że tak i jest to bardzo proste! W tym poście pokażę Ci jak robi się to w przypadku Amazona, co więcej nie musisz posiadać własnego urządzenia aby przetestować swój kod.
Alexa komunikuję się z chmurą Amazona i stamtąd zaciąga sobie odpowiedzi na nasze pytania. Nie ma obsługi języka polskiego, ale nie jest to jakiś duży problem, bo angielski z polskim akcentem spokojnie zrozumie :).
Zapytanie dla Alexy składa się z kilku części: słowa budzącego “Alexa”, frazy startującej np. “Ask” albo “play”, nazwy tego co wywołujemy np. “Spotify” i wypowiedzi np. “How are you?”. Oczywiście Alexa jest na tyle inteligentna że nie musimy wypowiadać całych formułek, domyśli się o co może nam chodzić.
Alexa Developer Console
Czas zabrać się do pracy. Po pierwsze musisz zalogować się do Amazonu aby mieć dostęp do Alexa Skills Kit, W panelu po zalogowaniu na samej górze znajdziesz zakładkę Alexa, po kliknięciu znajdziesz się w podstronie na której jest karta Alexa Skills Kit, kliknij przycisk Get Started, aby kontynuować na następnej stronie kliknij przycisk Add a New Skill. Wyświetli Ci się następujący panel.
Skill Type zostawiamy Custom Interaction Model. Język do wyboru Angielski w trzech odmianach lub niemiecki. Nazwa umiejętność w moim przykładzie “DevHello”. Nazwa wywołująca np. “Dev Hello”, nie może być dłuższa niż 3 słowa. Zapisujemy. Na następnej podstronie klikamy przycisk Launch Skill Builder.
W tym oknie klikamy ADD w zakładce Intents i podajemy nazwę np. “HelloIntent” i tworzymy go, w następnej stronie możemy podać co potencjalny użytkownik może wypowiedzieć aby wywołać naszą funkcję np. “Hello”, “Hello dev”, “Hi dev ”, “What’s up”. Na końcu klikamy Save Model i Build Model. Aby wrócić do poprzedniego panelu klikamy Configuration.
Funkcja Lambda
Do komunikacji używane są funkcję lambda, które stoją na AWS. Będziemy takiej potrzebować aby kontynuować dalsze czynności. To właśnie w takiej funkcji dzieje się cała logika związana z tym co dzieje się po wypowiedzeniu przez użytkownika słów. Na początek musimy mieć konto na AWS. Na szczęście Amazon gratis na 12 miesięcy daje nam trochę zasobów swojej chmury, to spokojnie wystarczy do naszych zabaw. Po zalogowaniu do konsoli AWS w górny pasku zakładek po prawej stronie musisz wybrać odpowiedni region. Do wyboru masz US East (N. Virginia) albo EU (Ireland) ponieważ tylko tam można podpiąć Alexe. Na tej samym pasku nawigacyjnym po lewej stronie rozwiń zakładkę Services i wyszukaj Lambda. W wyświetlonym panelu kliknij Create function. Następnie wyszukaj odpowiedni Blueprints. Interesujący nas nazywa się “alexa-skill-kit-sdk-factskill”. Po kliknięciu na niego przejdziemy do podstrony, na której podajemy nazwę funkcji np. “myDevHello” i z listy wybieramy Create new role i na następnej stronie klikamy Allow. Wrócimy z powrotem do strony tworzenia funkcji i na samym dole klikamy przycisk Create function. Teraz musimy ją trochę zmodyfikować kod funkcji lambdy możemy napisać w kilku językach jak komu lepiej, po pełne instrukcję odsyłam do dokumentacji, bo jest to szeroki temat teraz wystarczy, że podmienisz kod index.js na ten:
"use strict"; var Alexa = require("alexa-sdk"); var handlers = { "HelloIntent": function () { this.response.speak("Hello, dev"); this.emit(':responseReady'); }, "LaunchRequest": function () { this.response.speak("Hi dev!"); this.emit(':responseReady'); } }; exports.handler = function(event, context, callback){ var alexa = Alexa.handler(event, context); alexa.registerHandlers(handlers); alexa.execute(); };
W zakładce Triggers kliknij Add trigger i kliknij w szary kwadrat, następnie z listy wybierz Alexa Skills Kit i potwierdź przyciskiem Submit. Zapisujemy przyciskiem Save. To co teraz potrzebujemy to kod ARN, który znajduje się w górnej części strony, skopiuj go do schowka.
Ostatnie kroki
Powracamy do konsoli amazona i jako Endpoint wybieramy AWS Lambda ARN.
Wprowadzamy skopiowany ARN i klikamy Next. I już teraz jesteśmy w stanie przetestować naszą funkcję jest ona przypisana do naszego, konta i tylko my możemy z niej korzystać. Aby przetestować ją nie mając urządzenia skorzystaj z https://beta.echosim.io/. Pamiętaj aby zalogować się przez konto, na którym masz zapisaną funkcję, bo inaczej Alexa nie będzie jej widzieć.
To wystarczy Ci rozpocząć pisanie własnych funkcji dla tego asystenta. Temat jest bardzo szeroki, więc warto zajrzeć do dokumentacji, którą udostępnia Amazon, aby przyjrzeć się wszystkim możliwością asystenta głosowego Alexa.
Dziękuję za artykuł. Już zastanawiam się, jakby to wykorzystać w swojej pracy ;p
PolubieniePolubione przez 1 osoba