Es wird ja auch kein LaunchRequest übermittelt, sondern ein IntentRequest für den Intent InformationSubjectResponse. Es wird der Slot „subject“ mit „öffne Hause“ übermittelt.
Ich denke, das Problem ist, dass Dein Invocation name aus zwei Wörtern besteht.
In der Alexa Doku steht:
Two-word invocation names are not allowed if one of the words is a definite article (“the”), indefinite article (“a”, “an”) or preposition (“for”, “to”, “of”). For example, “a bicycle”, “an espresso”, “to amuse”, “for fun”.
Ich schlage vor, dass Du den Invocation name änderst.
Manchmal ist es auch so, dass Alexa die Sample Utterances leicht anders interpretiert. Das musst Du dann ggf. in Deinem Code abfangen.
Ich habe eben Version 2.1 der Library veröffentlicht und die Dokumentation geändert. Es werden wird jetzt eine „Support Data“ Zeile im Debug des WebHooks gelogged, die zensierte Daten enthält. Entfernt werden ApplicationId und UserId. RequestId und SessionId reinige ich nicht, diese sind aus meiner Sicht unkritisch.
Lag wohl am Invocation Name wenn ich diesen in „mein haus“ ändere wird dies auch als Launch Request erkannt und ich bekomme eine andere Antwort.
{"version":"1.0","response":{"outputSpeech":{"type":"PlainText","text":"Ich kann Dir die Anzahl der Bibliotheken, Module, Instanzen, Skripte oder Variablen nennen. \u00dcber welche Art von Objekt m\u00f6chtest Du Informationen haben?"},"shouldEndSession":false},"sessionAttributes":{"session_controller_id":57877,"slots":[]}}
Mit dem Invocation Name gibt es irgendwie noch Probleme, ich habe gerade mal „jarvis“ ausprobiert. Alexa öffne jarvis oder Alexa frage jarvis erkennt das Modul wieder nur als Intent und nicht als Launch Request
ACHTUNG: Ich musste hierfür leider Änderungen einbauen, die Änderungen an den bisherigen Action Skripten erfordern.
Konkret musst Du den die function-Zeile wie folgt andern:
function ExecuteAction($name, $id, array $slots, $locale, $sessionControllerId)
Die Gültigkeitsprüfung der Intent Namen wurde so erweitert, dass Du neben Namen, die nur Groß- und Kleinbuchstaben enthalten dürfen, auch Namen von Built-in Intents verwenden kannst.
Die Anleitung in der Readme zur Demo wurde entsprechend erweitert.
Für diejenigen, die schon eingerichtet haben, das muss getan werden:
[ul]
[li]Intent Schema in der Amazon Developer Console erweitern, die Copy & Paste Datei ist aktualisiert.
[/li][li]Zwei neue Intent Instanzen anlegen (AMAZON.HelpIntent und AMAZON.CancelInten). Wie das geht steht in der Readme.
[/li][li]Das Action Script der GetInformation Instanz anpassen, die Copy & Paste Datei ist aktualisiert.
[/li][/ul]
Das ganze hört sich ja sehr gut an, Ich werde heute Abend oder Morgen mal testen aber wenn ich das richtig verstanden habe lege ich mir ein/mehrere Skills an mit verschiedene Wörte auf die Alexa hört: schalte/fahre/… an.
Dann lege ich mir verschiedene Instanzen an gebe im feld Name des Intents das gewünsche Skill namen ein schalte/fahre…
unter Aktion wähle ich dann Benutzerdefiniertes Skript ausführen, unter Benutzerdefiniertes Skript trage ich dann das Skript ein das ausgeführt werden soll!
Wenn ich dann sage zb.
Alexa/Skill schalte/Skript Licht an also „Alexa schalte Licht an“ dann sollte das ganze funktionieren oder?
Alexa/Skill fahre/Skript Rollo runter also Alexa fahre Rollo runter dann sollte das ganze funktionieren oder?
Mfg
Maxx
PS: Wenn das ganze so funktioniert bin ich voll begeistert!
Mal eine Frage in die Runde… bei einem Freund funktioniert das Modul so gar nicht. Er hat IPS 4.1 auf einem Raspi.
Beim Zugriff auf den WebHook kommt ein HTTP 500 Fehler.
Nach diversen Tests kann ich aber keine Fehler finden, auch nicht das Linux-typische Problem mit Windows Line Breaks.
Hat das jemand erfolgreich auf einem Linux IPS Server probiert?
Aktuell kann ich nur Custom Skills anbieten, diese benötigen immer ein Invocation Wort.
Z.B:
Alexa, schalte das Licht im Schlafzimmer ein über Haus
Alexa, frage Haus wie war es draußen ist
Das Signalwort weglassen kann man nur bei Home Automation Skills, aber hier habe ich noch ein technisches Problem.
Zu den Begrifflichkeiten… Der Skill ist mit genau einem Invocation Wort verbunden. Über die Sample Utterances definierst Du Beispielsätze und verbindest diese mit einem Intent. Z.B.
Alexa, schalte das Licht im Schlafzimmer ein über Haus => TurnOnLight
Alexa, frage Haus wie war es draußen ist => GetTemperature
Für jeden Intent legst Du dann eine Intent Instanz an.
Ich nutzte so was wie Alexa sage Haus Butler schalte das Licht im Arbeitszimmer aus
Ist zwar länger als in einem Smart Home Skill dafür bekomme ich bei einem Custom Skill aber auch die Rückmeldung Das Licht wurde im Arbeitszimmer ausgeschaltet