Integrace RichPear Home
Alexa Custom Skill
Integrace přijímá požadavky z vlastní Alexa skill a předává je do systému intentů v RichPear Home. Hodí se pro vlastní hlasové věty, které spouští scény, skripty nebo jinou akci přes intent_script.
- Doména
alexa- Nastavení
configuration.yaml- Endpoint
/api/alexa- Externí služby
- Amazon Developer a AWS
Připravte účty a veřejnou HTTPS adresu
Pro Custom Skill potřebujete vlastní Amazon Developer účet a vlastní AWS účet. Požadavek z Alexy zpracuje AWS Lambda a odešle ho do RichPear Home. Pro account linking musí být RichPear Home dostupný z internetu přes HTTPS na portu 443 s důvěryhodným certifikátem.
Lokálně systém otevřete na http://rphome.local:8123. Pokud tato adresa nefunguje, použijte http://IP-ADRESA:8123. Tyto lokální adresy ale nestačí pro Alexa account linking; do Amazonu patří veřejná HTTPS adresa bez koncového lomítka.
Zapněte Alexa endpoint v RichPear Home
V souboru configuration.yaml povolte komponentu alexa. Tím se v RichPear Home zaregistruje endpoint /api/alexa, na který bude Lambda posílat požadavky z Alexa skill.
alexa:
Po změně proveďte kontrolu konfigurace a restartujte RichPear Home. Pokud používáte doplněk pro úpravu souborů, upravujte jen hlavní konfigurační soubor a před restartem ho uložte.
Co integrace nevytváří
Tato část sama o sobě nevytváří běžné entity ani zařízení. Zpracovává požadavky typu IntentRequest, LaunchRequest a SessionEndedRequest a výsledek vrací Alexe jako řečovou odpověď.
Vytvořte Alexa Custom Skill a Lambda funkci
V Amazon Developer Console vytvořte novou skill s modelem Custom a vlastním hostingem. V AWS vytvořte Lambda funkci v regionu odpovídajícím jazyku a účtu Alexy, přidejte trigger Alexa Skills Kit a do triggeru vložte Skill ID.
Do Lambda funkce nastavte proměnnou BASE_URL na veřejnou adresu RichPear Home bez koncového lomítka, například https://moje-domena.example. Volitelné ladicí proměnné používejte jen při prvním ověření; dlouhodobý přístupový token v Lambda není doporučený pro běžný provoz.
V nastavení endpointu Alexa skill vložte ARN vytvořené Lambda funkce. Teprve potom sestavte a uložte interakční model se svými intenty a ukázkovými větami.
Account linking
Authorization URI:https://VAŠE-VEŘEJNÁ-ADRESA/auth/authorizeAccess Token URI:https://VAŠE-VEŘEJNÁ-ADRESA/auth/tokenClient ID: pro Evropuhttps://layla.amazon.com/; pro USAhttps://pitangui.amazon.com/; pro Japonsko a Austráliihttps://alexa.amazon.co.jp/. Koncové lomítko je součást hodnoty.Client Authentication Scheme: Credentials in request body.Scope:intent.
Namapujte hlasové věty na intent_script
V Alexa skill vytvořte vlastní intenty, sloty a ukázkové věty. Název intentu musí odpovídat klíči v intent_script. Sloty poslané Alexou jsou dostupné jako proměnné; tečka v názvu slotu se v RichPear Home nahradí podtržítkem.
Jednoduchý intent bez slotů může spustit libovolnou akci a vrátit krátkou odpověď:
intent_script:
MovieModeIntent:
action:
action: scene.turn_on
target:
entity_id: scene.movie_mode
speech:
type: plain
text: "Zapínám filmový režim"
Intent se slotem použijte tam, kde Alexa posílá proměnnou hodnotu, například název scény nebo skriptu:
intent_script:
ActivateSceneIntent:
action:
action: scene.turn_on
target:
entity_id: scene.{{ Scene | replace(" ", "_") }}
speech:
type: plain
text: "Hotovo"
Pokud používáte synonyma slotů s ID, RichPear Home předává také proměnnou s příponou _Id. Slot pojmenovaný Room.Name tedy v šabloně použijete jako Room_Name a případné ID jako Room_Name_Id.
Přidejte scény a skripty do hlasového modelu
Pro ovládání scén vytvořte ve skill vlastní slot type, například Scenes, a přidejte do něj názvy scén, které chcete vyslovovat. V ukázkových větách pak použijte slot {Scene}, například activate {Scene}.
intent_script:
RunScriptIntent:
action:
action: script.turn_on
target:
entity_id: script.{{ Script | replace(" ", "_") }}
speech:
type: plain
text: "Spouštím skript"
Amazon u slotů může zahazovat podtržítka, proto je praktičtější mluvené názvy držet jako běžná slova a v šabloně je převést na název entity.
Příklad ukázkových vět
ActivateSceneIntent activate {Scene}
ActivateSceneIntent turn on {Scene}
RunScriptIntent run {Script}
RunScriptIntent start {Script}
Ošetřete spuštění skill a ukončení relace
Když uživatel skill pouze otevře, RichPear Home může zpracovat LaunchRequest. Jako klíč v intent_script použijte Skill ID z Amazon Developer Console.
intent_script:
amzn1.ask.skill.08888888-7777-6666-5555-444444444444:
speech:
type: plain
text: "Co chcete doma spustit?"
Pro ukončenou relaci použijte stejné Skill ID s příponou .SessionEndedRequest. V šabloně je dostupný také důvod ukončení jako reason.
intent_script:
amzn1.ask.skill.08888888-7777-6666-5555-444444444444.SessionEndedRequest:
action:
action: script.turn_on
target:
entity_id: script.after_voice_session
Ověřte spojení a odpověď
V Alexa Developer Console použijte simulátor skill a ověřte, že se po account linkingu požadavek dostane do RichPear Home. Pokud Alexa vrací chybu neznámého intentu, zkontrolujte přesný název intentu v Alexa modelu a v intent_script.
Když account linking selže, nejčastější příčinou je neveřejná adresa, jiný port než 443, chybějící důvěryhodný certifikát, chybné koncové lomítko v Client ID nebo rozdíl mezi veřejnou adresou v Amazonu a adresou v BASE_URL.
Pro kratší hlasové povely bez názvu skill použijte rutinu v aplikaci Alexa, která interně spustí celou frázi typu „ask ... to ...“.