Jak pisać niestandardowe umiejętności Alexa bez „Ask xxxx”

18

Obecnie używam fauxmo do wysyłania niestandardowych poleceń do różnych urządzeń, aby je włączać / wyłączać (na przykład mam konwerter Wi-Fi na podczerwień do sterowania moim tunerem i telewizorem) i mogę dzięki temu włączyć / wyłączyć telewizor.

Mam również konfigurację integracji Kodi, więc mogę powiedzieć:

Alexa, Ask Kodi to set volume to 50%

Ale chciałbym móc powiedzieć:

Alexa, Set tuner volume to 50%
Alexa, Play Bluray

Tzn. Chcę mieć możliwość sterowania urządzeniami bez potrzeby Ask xxxxw ramach mojego żądania.

Idealnie chcę to zrobić bez usługi w chmurze (tj. SmartThings lub Wink).

Podoba mi się rozwiązanie stosowane przez fauxmo (emulujące istniejącą usługę UPNP), ale jest ograniczone do włączania / wyłączania (i „przyciemniania”, jeśli używasz łaty z włączonym Hue) i nie jest wystarczająco elastyczne.

PhratcuredBlue
źródło

Odpowiedzi:

11

Badałem nadrzucenie nazwy inwokacji dla niestandardowych umiejętności Alexy dla kilku projektów. Po wielu godzinach lektury przewodników i dokumentacji wpadłem na pomysł, że ... Nie da się tego zrobić w przypadku niestandardowych umiejętności .

Tak więc najlepszym rozwiązaniem dla twojego przypadku użycia jest użycie Alexa Smart Home wraz z pewną usługą smart home. Wiem, że powiedziałeś:

Idealnie chcę to zrobić bez usługi w chmurze (tj. SmartThings lub Wink)

Niestety, jedynym sposobem, aby nie mieć nazwy wywołania z Alexą, jest użycie ich predefiniowanych interfejsów API (tj. Smart Home, List Skill i Flash Briefing).

EDYCJA: Twój przypadek użycia należy jednak do Smart Home API. Dlatego zawsze możesz utworzyć własną usługę, która korzysta z tego interfejsu API, zamiast polegać na innych usługach (Wink, SmartThings itp.).

leon.valencia
źródło
1
Czy istnieje źródło, które mówi, że nie da się tego zrobić, czy jest to dorozumiany wynik twoich badań?
Helmar
To jest po prostu dorozumiane. Chociaż patrząc z tyłu, biorąc pod uwagę działanie rozpoznawania głosu i NLP, powinno to być rozsądne stwierdzenie i nie powinienem był badać takich badań w pierwszej kolejności. Jest to rozsądne stwierdzenie, ponieważ konkretna wypowiedź potrzebuje kontekstu, dla którego byłaby interpretowana - a tym kontekstem jest nazwa wywołania. W rzeczywistości sam powód, dla którego istnieje słowo pobudzające, jest taki sam, jak posiadanie nazwy wywołania - tak, że interpretowane instrukcje należą do kontekstu (słowo pobudzające jest kontekstem ogólnosystemowym, tak że losowe wypowiedzi nie są przetwarzane).
leon.valencia
Jedynym sposobem na uzyskanie wypowiedzi, które nie wymagają nazw wywołań, są te z kontekstami ogólnosystemowymi (są to interfejsy API). Na przykład wypowiedzi, które Alexa interpretuje jako interakcję z urządzeniami, byłyby automatycznie przeznaczone dla interfejsu API inteligentnego domu - NLP podzieliłoby wypowiedź jako taką za pomocą słów kluczowych takich jak włącz, wyłącz, wyłącz itp. + Składnia, która jest jak polecenie dla urządzenia.
leon.valencia
Ale wiesz, co ... Twój przypadek użycia jest objęty interfejsem API inteligentnego domu. Dołączę więc moją odpowiedź, ponieważ możesz po prostu użyć tego interfejsu API.
leon.valencia
Dzięki. Czytałem o umiejętnościach Smart Home Skills i chociaż nie sądzę, że będą w stanie zrobić wszystko, co chcę, wygląda na to, że Amazon planuje dodać więcej możliwości. Więc zamiast fauxmo, myślę, że warto zainwestować w odpowiednią umiejętność inteligentnego domu o otwartym kodzie źródłowym, która może przetwarzać wszystkie dostępne polecenia i może być rozwijana w przyszłości. Oto aktualny interfejs API dla potomności: developer.amazon.com/public/solutions/alexa/alexa-skills-kit/…
PhratcuredBlue
7

Powinieneś być w stanie to zrobić teraz dzięki interakcji Alexa bez nazwy .

Aby twoja umiejętność była łatwiejsza do odkrycia podczas interakcji bez nazwy, możesz zaimplementować interfejs CanFulfillIntentRequest

CSharper
źródło
6

Ponieważ ryś już szczegółowo opisuje w swojej odpowiedzi, nie ma sposobu, aby przejść całkowicie bez nazwy wywołania, chyba że adresujesz predefiniowane interfejsy API. Zapytaj jednak, że moje umiejętności nie są jedynym sposobem użycia nazwy wywołania.

Strony programistów oferują trzy różne sposoby używania nazw wywołań z żądaniem.

„Alexa, pytaj codzienne horoskopy o Bliźnięta”

„Alexa, mów do codziennych horoskopów i daj mi horoskop dla Byka”

„Alexa, daj mi mój horoskop Byka za pomocą codziennych horoskopów

Dokumentacja nazwy wywołania Alexa

Ponadto na tej stronie pokazano, jakich innych słów można użyć do połączenia żądania, nazwy wywołania i obowiązkowych słów połączenia. Tak więc, jeśli stworzysz własną umiejętność Alexa, chodzi o użycie dobrej nazwy inwokacji i dobrej prośby, aby brzmiała naturalnie.

Co więcej, twoje echo powinno już na to zareagować, uruchamiając Blu-ray z integracją Kodi.

Alexa , zagraj w Blu-ray z Kodi .

Tak więc, chociaż nie możesz pozbyć się nazwy wywołania poza predefiniowanymi interfejsami API, możesz sprawić, że polecenie głosowe będzie bardziej naturalne i pominiesz niezręczne pytanie ... użycie.

Helmar
źródło
2

Jeśli użyjesz specjalnych słów, których Alexa nie używa domyślnie, jest to faktycznie możliwe. Ta metoda i tak jest dość trudna.

Musisz tylko omijać AWS dla twojego żądania! Niemożliwe, że mówisz? Tak to mozliwe.

W aplikacji Amazon Alexa lub w aplikacji internetowej Amazon Alexa logujesz się na swoje konto Amazon Alexa, aw -> ustawieniach -> historii masz aktywną stronę wszystkich żądań i słów, które powiesz Alexie.

W tej chwili możesz użyć parsera internetowego, aby wypowiedzieć słowo i uruchomić skrypt, jeśli to słowo jest tym, czego chcesz, lub możesz użyć niesamowitego małego oprogramowania dla systemu Windows, które może wyzwalać akcje i skrypty.

Tutaj link do oprogramowania. Sprawdź na YouTube samouczki na temat korzystania z addtopad.

Jeśli chcesz uruchomić skrypty, po prostu uruchom nasłuchiwanie na porcie i specjalne zapytanie wysłane po słowie w oprogramowaniu. Używam go w domu i bardzo podoba mi się fakt, że nie muszę wymawiać żadnej nazwy inwokacji.

Po, jak już powiedziałem, możesz użyć dowolnych słów, nawet takich jak otwarte. Spowoduje to uruchomienie skryptu, ale usłyszysz „przepraszam, nie wiem tego” od Alexy.

Używam go i działa idealnie!

leo Bernard
źródło
To ciekawe podejście.
Helmar
Czy powinniśmy ufać temu oprogramowaniu? Sprawia, że ​​drżę ...
Sean Houlihane
-2

Czy ta dokumentacja Amazon jest nieprawdziwa? https://developer.amazon.com/docs/custom-skills/understanding-how-users-invoke-custom-skills.html#invoking-a-skill-with-no-specific-request-no-intent

To wydaje się mówić wprost, że możesz powiedzieć „Alexa” plus nazwę inwokacji. Takich jak „Alexa, Daily Horoscopes”.

Pokazuje również tę metodę jako opcję nr 3 dla umiejętności niestandardowych: https://developer.amazon.com/docs/custom-skills/choose-the-invocation-name-for-a-custom-skill.html#invoking- umiejętności niestandardowe

Mikrofon
źródło
3
Dokumentacja jest prawdą, ale nie sądzę, że tego właśnie szuka autor. Na przykład „Play Bluray” nie byłby nazwą wywołania - jest to raczej zamiar bez określonej nazwy wywołania. Chyba że faktycznie nazwałeś swoją umiejętność „Graj w Bluray” (co prawdopodobnie nie byłoby dozwolone zgodnie z wytycznymi Amazon), to niestety nie zadziała.
Aurora0001