Slots und Utterances für ein Alexa Customs Skill

Hätte auch noch ein paar Devices:

Wasserbar
Katzenbrunnen

Danke

Gibt schon Sachen da würde ich selber nie draufkommen :wink:

Hier noch ein paar Ideen bezüglich Sonos.

Geräte


play eins bzw. play 1
play drei
play fuenf
playbar
Soundbar
Sub
Connect
Connect Amp

Steuerungsbefehle


Wiedergabe
Pause
Favoriten oder Playlist
Radio
Überspringen
weiter
zurück
lauter
leiser
Lautstaerke
Volume

Kann man die Radiosender dann selber festlegen?
Oder sollte man noch Vorschläge für Radiosender einbringen damit die ins Modul mit rein kommen.

Radiosender wären ja mal unabhängig von Sonos man könnte sich ja auch Wlan Radio oder sonst was per Script starten lassen.
Die Anfrage muss ja wie ich verstanden habe ins Modul mit rein sonst geht es nicht.

Gruß
Giuseppe

Kann ja nicht schaden wird zwar eine endlose Liste aber kannst ja mal radiosender Liste hinzufügen Fernsehsender das gleiche

Also hier mal eine kleine Auswahl an Sendern die für mich interessant wären.

TV


ARD
Das Erste
ZDF
ZDF info
SWR
NDR
WDR
MDR
RTL
RTL zwei
Super rtl
Vox
NTV
Nachrichten TV
SAT eins
Pro sieben
sixx
N24
Nachrichten vier und zwanzig
Disney channel
Rai uno
Rai due
Rai tre
Rete quattro
Canale cinque
italia uno
italia sette


Radio


swr eins
swr zwei
swr drei
swr info
Sunshine live
radio italia
radio deejay

Als „Räume“ fallen mir noch ein (wenn nicht schon vorhanden):


Heizraum
Waschraum
Technikraum
Tankraum
Kartoffelkeller
Treppe
Aussentreppe
Speisekammer
Sitzecke
Spielzimmer

Als Device fällt mir noch ein:


USV
Markise
Sonnenschutz
Beschattung

Hallo Fonzo.

Also unsere Haussteuerung heißt „HASI“ :D.
Somit unser Vorschlag als Invocation Name !

Wäre es wahlweise einstellbar ?

Gruß
lueralba

Nein das ist das einzige was nicht variabel ist. Wenn der erste Skill durch die Freigabe sein sollte wird es aber vorraussichtlicht noch einen zweiten speziellen Skill geben mit dem Invocation Name Heimkino.

Für alles weitere wird es notwendig sein sich einen eigenen Skill einzurichten. Wenn alles fertig ist wird das Vorgehen aber auch hier transparent sein und er wird Hilfe geben um per Copy Paste die Intents zu befüllen und eine Anleitung für Standard Anfragen.

Somit wird es dann wohl erst mal zwei Skills geben einen Universalskill und einen Heimkinoskill. Wer das komplett an seine Bedürfnsse anpassen will muss dann aber nach wie vor ein wenig selber konfigurieren.

Eine Anleitung dazu erfolgt dann aber noch wenn das Modul so weit steht.

Da die Spracherkennung doch ein wenig tricky ist würde ich mich freuen wenn ihr Utterances die ihr selber nutzt und die 100% funktionieren auch genre hier reinposted, das macht es einfacher nicht jeden Typ einzeln durchtesten zu müssen.

Wenn ihr breites die ein oder andere fertige funktionierende Lösung bei Euch eingebaut habt in Form eines Customs Skill z.B. Zur Sonos Steuerung oder ähnliches würde ich mich auch freuen ihr würdest das teilen dann kann das in der Anleitung ergänzt werden und erleichtert dann das Einrichten für alle die sich auch einen Skill individuell zusammenstellen wollen. Mit dem zukünftigen Modulupdate von patami wird aber vieles noch einfach einzurichten sein.

Es geht voran freue mich auf jeden Input von Eurer Seite.

Device:

Solaranlage
Brunnen
Teich
Gartentor
Haustüre
Briefkasten
Post („Ist die Post schon da ?“)
Packet (?)
Bewässerung
Wegbeleuchtung

Locations
Vorgarten
Hausseite
Garten
Veranda
Terrasse
Hof
Hinterhof

Alternative zu IPSI vielleicht SYMI (gesprochen SIMI) ?

Hi,

gibt es denn keine Möglichkeit, Alexa dazu zu bringen, einfach alles was gesagt wird an IPS zu übergeben, ohne einen Custom Skill zu erstellen? Ich habe das so erstellt (also mit Custom Skill) und hatte die ersten Wochen Probleme der Dose zu sagen, was ich möchte. Wenn ich aber sehe welche Probleme bei den Smart-Home Skills auftreten, scheint mir der Custom Skill doch die bessere Wahl zu sein.

Meine Sprachverarbeitung lief zwei Jahre über Android mit Tasker, hier reichte ein „Küchenlampe einschalten“ und genau das passierte (alles lokal, ohne dass Daten quer durchs Internet verschoben werden mussten).

Die neue Anweisung lautet jetzt "Alexa sage Skill, dass sie die Küchenlampe einschalten soll. Speziell wenn mehrere Anweisungen gegeben werden, gerate ich ins stocken, da die formulierten Sätze nicht ganz korrekt sind. Daran musste ich mich erst gewöhnen. („Alexa sage Skill Alle Rollladen schließen und Küchenbeleuchtung für 10 Minuten einschalten und W. D. R. zwei abspielen“)

Ein Nachteil eines Custom Skills ist, dass die Dose hin und wieder nicht erkennt, dass der Text für den Skill bestimmt ist. Dann werde ich belehrt, dass in meinem Konto kein Gerät mit dem Namen X vorhanden sei.

Jetzt komme ich mal langsam zu dem, was ich eigentlich schreiben wollte. Frage an Fonzo: Möchtest Du mehrere Slots erstellen, oder einen ganz großen? Da literal nicht mehr funktioniert müssen ja jetzt diese Wortlisten geführt werden. Ich habe bisher ganz gute Erfahrungen mit einer Liste gemacht. Auch Worte, die dort nicht enthalten sind, werden an mein Script übergeben. Der Vorteil einer Liste ist der, dass die Auswertung dann später in IPS vorgenommen werden kann. Gerade in der dt. Sprache kann fast jedes Wort an beliebiger Stelle im Satz auftauchen. Da sind feste Satzregeln eher hinderlich.

Ich würde mich freuen, wenn Echo- und Dot-Besitzer sich bei Amazon melden würden und dort sinnvolle Erweiterungen einfordern. Meiner Meinung würde dazu zählen, dass ein frei einstellbares Aktivierungswort direkt den Custom Skill auswählt und alle Texte ungefiltert an diesen Skill geschickt würden.

Anbei die Values meines Custom Slots

an
einschalten
anschalten
on
off
dim
dimm
dimmen
level
Lampe
Beleuchtung
Leuchte
Fenster
ist
noch
offen
geöffnet
Uhr
wie
wieviel
spät
es
hoch
runter
öffnen
schließen
spalt
Spalt
Prozent
Rollade
Rolllade
Rolladen
Rollladen
Roulade
Rouladen
Heizung
Temperatur
Wasser
Bewässerung
gießen
Mählinda
Melinda
Gras
schneiden
Power
warm
kalt
frost
Sauger
Staubsauger
Tisch
Wohnzimmer
Schlafzimmer
Küche
Bad
Badezimmer
Erdgeschoss
Obergeschoss
Keller
Treppe
Kellertreppe
Stern
Licht
Led
L.E.D
Flur
Haustüre
Küchenlampe
Leselampe
Sofa
Sofalampe
Chouchlampe
LED
Tür
Türe
auf
Ist
Sind
sind
ob
Schlüssel
Ricarda
Casper
Christoph
Haus
Wo
wo
Gartendimmer
Charts
Mute
mute
starten
Jalousie
alle
Alle
oben
Oben
Dach
links
linker
rechts
rechter
Ankleide
unten
Dachstudio
Studio
Kleider
schlaf
Essfenster
Esstisch
Lichterkette
Weihnachtsbeleuchtung
Gartenlampe
Gartenbeleuchtung
kleinen
Schrank
Schranks
Küchenlicht
Flurlicht
Flurlampe
Sternenlampe
Flurbeleuchtung
Treppenlicht
Treppenbeleuchtung
Stufenlicht
Stufenbeleuchtung
Schlafzimmerlicht
Schlafzimmerbeleuchtung
Badlampe
Badlicht
Badbeleuchtung
Steckdose
Gartensteckdose
Mährobotter
Gardena
Gartenpumpe
Sternlicht
Sternlichtdimmer
Box
Musikbox
Teufel
Teufelbox
Schlafzimmerbox
Schlafzimmerlautsprecher
Wohnzimmerbox
Wohnzimmerlautsprecher
Lautsprecher
Lautsprecherbox
Entfeuchter
Trockner
Waschmaschine
Gartenbewässerung
Garagentor
Einkauf
einkaufen
Edeka
Aldi
Real
Lidl
Reve
kaufen
wir
ich
brauche
brauchen
Einkaufsliste
#musik
Radio
KW
k. w.
k.
w.
Kawe
WDR
Life
life
Live
live
Funk
abspielen
weiter
spiel
spiele
Spiel
Spiele
ab
spielen
play
pause
stop
stopp
lauter
leiser
zurück
Deutschland
Titel
#zeiten
für
Minuten
Stunde
Stunden
Gute
Nacht
Witz
erzähl
erzähle
erzählen
möchte
soll
einen
eine
Batterie
leer
wechsel
schwach
getauscht
erneuert
Wetter
wird
draußen
draussen
drinnen
innen
halb
#Hilfe
hilfe
Hilfe
benachrichtige
sage
rufe
ruf
melde
melden
Benachrichtigung
schreib
schreibe

Meiner Meinung nach muss die Intelligenz in IPS abgebildet werden. Ich kann mir nämlich bei Geräten, die ich normalerweise nicht benutze merken, wie das Gerät benannt wurde. Das lässt sich aber alles in IPS abfangen und korrekt einstellen.

Anbei noch die Liste der falsch verstandenen Worte (teilweise Google / Amazon), die ich vor der Verarbeitung ersetze:


    // Typisch falsch verstandene Worte korrigieren, damit ein vernünftiger Befehl erkannt wird
    private $strrep=array(
        ',' 				=> ' ',
        ' es fenster '      =>  ' essfenster ',
        ' es lampe '        =>  ' esslampe ',
        ' es rolllade'      =>  ' essrolllade ',
        ' s fenster '       =>  ' essfenster ',
        ' s lampe '         =>  ' esslampe ',
        ' s rolllade'       =>  ' essrolllade ',
        ' gartendünger '    =>  ' gartendimmer ',
        ' auf streit '      =>  ' auf spalt ',
        ' auf sprite '      =>  ' auf spalt ',
        ' friseur lampe '   =>  ' leselampe ',
        ' diese lampe '     =>  ' leselampe ',
        ' auschalten'       =>  ' ausschalten',
        ' staaten'          =>  ' starten ',
        ' mut '             =>  ' mute ',
        ' mood '            =>  ' mute ',
	'k. w.'		    =>	' kw ',
	'radio kaffee'	=> 'radio kw',
        'rollade'           =>  'rolllade',
	'roulade'		=>	'rolllade',
        ' schatz '          =>  ' charts ',
	'w. d. r. zwei'		=>	' wdr2 ',
	'w. d. r. fünf'		=>	' wdr5 ',
        'w. d. r. fünf'  => 'wdr5' 
    );

Nein das ist nicht möglich. Bei der Zertifizierung wird genau darauf geachtet wie das VUI (Visual User Interface) aufgebaut ist und ob dies funktioniert. Um aber ein sinnvolles VUI aufzubauen ist es notwendig das auch passende Rückfragen gestellt werden. Das kann aber nur geschehen wenn man anhand unterschiedlicher Intents und Slots unterscheidet. Wenn Alexa einen Satz dann nicht komplett versteht kann die passende Rückfrage gestellt werden und nicht einfach nur ein Ich habe Dich nicht verstanden.

Hier ist man an die Vorgaben von Amazon gebunden. Es wird aber zwei Möglichkeiten geben.
Die erste ist den Befehl direkt abzugeben mit Aufruf des Skillnamens.
Die zweite wird sein eine Subsektion zu starten indem wieder ein Befehl mit Aufruf des Skillnamens gestartet wird. Dann bleibt die Session nach Rückfrage offen. Jetzt kannst Du innerhalb von 8 Sekunden einen genaue Anweisung geben ohne den Skillnamen zu verwenden. Dies eignet sich z.B. um mehrere Dinge in Folge zu machen. Das ganze geht dann immer Befehl -> Rückfrage Alexa -> Befehl -> Rückfrage Alexa bist Du Alexa irgendwann aus Ihrem Dienst entlässt.

Hier bin ich aber für jegliche Vorschläge offen um einen natürlichen klingenden Sprachdialog zu ermöglichen.

Möglich wäre in deinem Beispiel so was wie:
Alexa sage IPSI Haussteuerung starten
Hallo hier ist IPSI, was kann ich für Dich tun?
Schließe den Rollladen links im Wohnzimmer.
Kann ich noch was für Dich tun?
Schalte die Küchenbeleuchtung für 10 Minuten ein.
Ok. Sonst noch was?
WDR 2 auf Sonos in der Küche abspielen.
Kann ich sonst noch was für Dich tun?
Stop
Dann bis zum nächsten mal.

Wenn Alexa etwas nicht verstanden hat ist es wichtig dies passend abzufragen und dann die richtige Rückfrage zu stellen. Dies geht aber eben nur mit mehreren Intents und Slots (s.o.)

Es bleibt dabei es wird eine Vielzahl von Intents und Slots benutzt werden um eine saubere VUI hinzubekommen.
Dazu wird es notwendig sein die Utterances in vielerlei Hinsicht zu modifizieren so das es dem Nutzer möglich ist möglichst frei zu sprechen.

Daher ist es wie gesagt an Eure individuellen Wünsche äußern. Utterances können aber auch noch nach der Zertifizierung ergänzt werden. Der zertifizierte Skill ist dann nutzbar und zeitgleich findet dann bei Erweiterungen eine Rezertifizierung statt und die neue Version geht dann nach erneuter Freigabe online.

Von mir aus könnt Ihr da gerne auch abgefahrene Vorschläge für eine Ansprache machen.

Das wird ein Wunsch bleiben. Ein Invocation Name ist das einzige was mit der Zertifizierung eines Skills feststeht und dann auch nicht mehr im Gegensatz zu Utterances und Slot und Intents geändert werden kann. Dies hat ja auch logische Gründe ein Skill der durch die Zertifizierung gegangen ist wird von einem User aufgerufen. Man will diesem nun schlecht zumuten das der User den Skill ab morgen dann mit einem anderen Invocation Name aufrufen muss daher ist dieser wenn einmal zertifiziert fest.

Danke für die Liste ich werde diese auf alle Fälle mit einarbeiten.

Nochmals danke für die umfangreiche Liste.

Mich würde noch interessieren wie Du momentan Formulierungen wählst z.B. für

[ul]
[li]schreibe
[/li][li]getauscht
[/li][li]erneuert
[/li][li]Einkaufsliste
[/li][/ul]
und weitere typische Formulierungen die Du so verwendest um mit Alexa möglichst normal zu sprechen.

Was macht im übrigen die Einkaufliste? Hast Du da Code zu oder ein Beispiel wie Du das gelöst hast? Wird da einfach nur der Slot zu einem Array Einkaufsliste hinzugefügt?

Hallo Fonzo,

Beispiele für die angegebenen Worte sind:
Schreibe 2 L Milch auf die Einkaufsliste
Müssen noch Batterien getauscht werden?
Welche Batterien müssen erneuert werden?

Die Einkaufsliste habe ich nicht mehr in Benutzung. Vielleicht kommt die Funktion wieder, aber zur Zeit ist die Liste etwas unflexibel. Es wird einfach alles was erkannt wurde an die Datei „einkaufzettel.txt“ angefügt. Die Datei kann dann auch über das Webinterface aufgerufen, angezeigt, gelöscht, oder von Hand bearbeitet werden.

Ich weiß nicht, ob Du mit dem PHP-Code etwas anfangen kannst?

 /**
     * Bei einer Einkaufliste werden die gefundenen Artikel auf
     * die Liste gesetzt
     * 
     * */
    public function check_einkaufsliste($dev, $such){
        $rtn=NULL;
        $artikel = '';
        
        // Füllworte löschen
        $such_korrektur = str_ireplace(
            array('wir','müssen','noch','bitte', 'von', 'ich'),
            '', $such);
        
        // Typisch falsche Worte, die später noch gebraucht werden korrigieren
        $wortkorrektur = array(
            'welcher'=>'Becher'
        );
        $such_korrektur = str_ireplace(
            array_keys($wortkorrektur), $wortkorrektur, $such_korrektur);
        
        
        // Typisch falsch erkannte Worte korrigieren 
        $art_korrektur=array(
            'so Role'       =>'Sourol Essig',
            'Airbag Pulver' =>'Backpulver'
            );
        foreach($art_korrektur as $suche => $art){
            if(stripos($such_korrektur, $suche) >0){
                $artikel = $art;
            }
        }
        
        // Wenn noch kein Artikel erkannt wurde, dann Worte gegrenzen
        if($artikel == ''){
            // da mehrere Varianten geliefert werden, diese aufteilen
            // einkaufen kann falsch erkannt worden sein, also korrigieren und durch Komma ersetzen
            $such_korrektur = str_ireplace(array('brauchen', 'brauche', 'brauch', 'an kaufen','ein kaufen','einkaufe ','einkaufen','kaufen'),',',$such_korrektur);            
            
            // Am Komma trennen und den ersten String übernehmen, der > als 5 Zeichen lang ist.
            $sucharray=explode(',', $such_korrektur);
            foreach($sucharray as $art){
                if(strlen($art) >5){
                    $artikel = $art;  
                    break;  
                }                
            }              
        }
        
        if($artikel!=''){
            file_put_contents('../../dokumente/einkauf/einkaufzettel.txt', trim($artikel)."
", FILE_APPEND);  
            $rtn=array(
                'dev'   =>  $dev,
                'such'  =>  $such,
                'action'=>  'einkauf',
                'rtn'   =>  'Steffie hat '.$artikel.' auf die Einkaufsliste gesetzt!'
                );    // Wir liefern das Gerät mit allen Befehlen zurück
        }
        return $rtn;
    }

Wie bereits gesagt, der Code ist alt und war für die Texterkennung unter Android ausgelegt. Ob das mit Alexa noch funktioniert habe ich noch nicht probiert.

Ansonsten funktioniert die Sprachverarbeitung bei mir so:
Als erstes wird der erkannte Text an dem Wort „und“ in einzelne Strings getrennt. So können mehrere Aktionen ausgeführt werden.

Danach wird für jeden Teilstring versucht ein Gerät zu erkennen. Dazu ex. eine Array mit allen steuerbaren Geräten. In diesem Array wird für jedes Gerät Pflichtworte und Stoppworte definiert. Den Pflichtworten wird ein Zahlenwert mitgegeben. Außerdem hat jedes Gerät einen Schwellwert, ab dem es als erkannt gilt.
Bsp.:

'EG_ESS_LICHTERKETTE'=>array(
        'pflicht'=>array(
            'schrank erdgeschoss wohnzimmer alle'=>20,
            'lichterkette'=>80
        ),
        'stoppwort'=>'garten'
        'min'=>100,
        'on'=>'true',
        'off'=>'false',
        'gewerk'=>'licht',
        'rtn'=>'die Lichterkette auf dem kleinen Schrank'

Ab der Schwelle von 100 ist das Gerät EG_ESS_LICHTERKETTE erkannt. Werden die Worte Schrank und Lichterkette erkannt, dann werden die Werte 20 + 80 addiert und die Schwelle ist erreicht.

Würde dagegen gesagt: Bitte alle Lichterketten im Garten für fünf Stunden einschalten, dann würde das gefundene Stoppwort „garten“ dazu führen, dass die Lichterkette im Wohnzimmer nicht eingeschaltet würde.

Die so gefundenen Geräte durchlaufen danach eine weitere Schleife in der die Aktion gesucht wird. Da ich jetzt weiß, welche Geräte gefunden wurden, kann ich auch gezielt nach der Aktion suchen.

Wenn die Aktion erkannt wird, dann wird Gerät und Aktion im letzten Schritt zusammengeführt und entsprechend ausgeführt.

Sollte nichts erkannt werden, liefert das Script zur Zeit einfach ein ? zurück. Alexa ist dann so eingestellt, dass sie einfach „Hä?“ ausgibt und die Spracherkennung wieder erneut startet. Nach vier erfolglosen Spracherkennungen bricht der Vorgang dann komplett ab.

Nachfragen, wenn nur ein Gerät, oder eine Aktion erkannt wurde habe ich noch nicht implementiert. Das wird aber wahrscheinlich auch noch kommen. Ich wollte jetzt aber erstmal Kodi mit Alexa steuern.

Gerade ist mir eingefallen, dass ich die Lautstärke von Kodi absenken könnte, wenn Alexa ein ? zurückbekommt. Unter Android hatte ich die Lautstärke immer schon heruntergeregelt, wenn die Spracherkennung gestartet wurde. Dazu habe ich bei Alexa leider noch keine Möglichkeit gefunden.

Ob und wie man einen Formulierung mit und erreichen kann muss ich mir noch überlegen. Das Problem besteht sowieso darin das ewig lange Sätze mit und gar nicht möglich sind weil mal ja nur 8 Sekunden zur Verfügung hat.

Ziel ist es aber das die Slots alle sauber erkannt werden sonst ist auch keine Zuordnung in IP-Symcon möglich und dann würde ja ständig nachgefragt werden.

…dann würde ich mir „Raffstore“ und „Präsenz“ wünschen.

„Alexa, öffne die Haustüre“ oder geht das mit dem IPS Alexa Modul?

Was ich noch überhaupt nicht checke ist ob man jetzt z.B. in jeden Raum einen DOT platzieren könnte:
Und dann nur „Alexa, Licht Decke ein“ (DOT im Kinderzimmer 1) sagen könnte -> Licht Decke Kinderzimmer 1 wird eingeschaltet.

Ich finde den Thread von:
Amazon Echo Skill & Modul - Seite 74
viel zu lang.

Könnte man nicht die wichtigsten Dinge zu dem SmartHomeSkill mal zusammenfassen? Da wären wir wieder bei der Unübersichtlichkeit des Systems für Anfänger…

Ich weiß es ist der falsche Thread hier. Aber es geht ja auch um Alexa und um die Sicht der Dinge von einem „NormalUser“.

Danke für euer Verständnis
lg

Kann ich noch ergänzen da sinnvoll daran weiter zu arbeiten wird frühestes in den Weihnachtsferien möglich sein vorher ist einfach keine Zeit.

Das geht jetzt mit einem SmartHomeSkill da gibt es jetzt auch Door Lock Control. Dazu muss jedoch auf die neue API umgestellt werden und Dave hat momentan auch viel um die Ohren. Mal sehen wann und wie schnell man da zu einer Lösung kommt.

Auch das geht jetzt, dafür ist kein Custom Skill mehr notwendig, aber auch hier ist eine Umstellung auf die neue API notwendig. Dann kann man den Dot in eine Amazon Routine einbauen. Wenn dann das Licht auch als solches Device von Amazon erkannt wird kann man dann nur noch sagen Alexa Licht an und das Licht geht in dem entsprechenden Raum mit der Routine an in die der Dot zugeordnet worden ist.

Ja das macht sicherlich Sinn, zumindest das in der Dokumentation dann zu ergänzen aber das auch erst wenn auf die neue API umgestellt wurde. Dann sind auch so Dinge wie Temperatur Abfrage über einen SmartHomeSkill möglich.

Ich verbeuge mich wiedereinmal…

Ich freue mich schon, wie Bolle, auf die neue Version. :slight_smile:
:loveips:

Herzlichen Dank für Eure super Arbeit.