Open BenAhrdt opened 1 year ago
Ok, das ganze mal bitte praktisch als Beispiel und nicht "aussage " und "restliche aussage" und bitte mit iot Adapter Debug Log. Also Debug log iot, dann bitte aufschreiben (oder vllt aufnehmen und als audiodatei einstellen) was geau wie passiert mit einem praktischen beispiel
oder hast Du nur eine falsche annahme?"Fillwords" entstehen immer bei einer "ersten anfrage" mit "sage iobroker ...." wenn das erste wort aus der Liste der "Füllwörter ohne weiter bedeutung" ist. (Wobei je anchdem was du sagtst "fill words" auch nicht da ist weil es ein valides "erstes wort nach "sage iobroker... "ist.
Um verschiedene sprachsessions zu untershceiden bitte die SessionId nutzen die mitgegeben wird
Ich denke schon, dass ich es richtig verstanden habe.
Ich sage: "Alexa, sage ioBroker er soll das Garagenlicht anmachen" Ergebnis in Words: ["FILL WORDS","das Garagenlicht anmachen"]
Frage kommt zurück: "Soll das Licht komplett oder nur das indirekte aktiviert werden?"
wenn man jetzt nichts sagt, dann geht Alexa aus dem "Zuhörmodus" heraus. Und die Session ist beendet. => Richtig?
Sage ich jetzt wieder: "Alexa, sage ioBroker er soll das Garagenlicht anmachen" Ergebnis in Words: ["er soll das Garagenlicht anmachen"]
Da es eine neue Session ist, erwarte ich eigentlich das Ergebnis wie vorher, nicht wie mitten in der Session, die vorher aktiv war.
Ist das verständlicher beschrieben?
Ahh du wunderst dich also das er beim zweiten mal das "er" mitliefert und nicht "FILLWORDS" sagt? Dann sag ich malso ... freu dich och .. Ja hätte ich so nicht erwartet ...
Umd as technisch zu bewerten -> Debug Log vom iot Adapter bitte für genau diese Abfolge
OK, mache ich später. Ich frage ja in meinem Skript die "FILL WORDS" als einstieg ab und wenn man eben nicht die gleiche Frage wieder stellt, dann ist es eben nicht so toll :-D ...
Dann ist das aber der denkfehler!! "Fillwords" ist nur ein Platzhalter für eine gruppe von "wörtern die keinen weiteren mehrwert für die Anfrage haben".
ein "frage iobroker wie spät es ist" gibt KEIN Fillword sondern "wie spät es ist" weil "wie" ein erlaubtes und wichtiges/eindeutiges Einstiegswort ist. Bitte im Forum das Konzept und vor allem ggf die Google Tabelle ansehen um zu verstehen wie die Logik funtioniert
Die richtige Lösung ist die session id zu nehmen und sich so den "State" der kommunikation zu merken (und die session daten nach zeit x zu löschen wenn nichts neues kam).
Die Session Id, die dann kommt ist ja nicht die gleiche wie vorher, das checke ich ja schon.
Hier der Log: Log.txt
In dem Log ist auch zu sehen, dass wenn man nichts sagt, die Session beendet wird.
Und wie zu sehen ergibt "Alexa, sage ioBroker er soll etwas machen das array ["Fill Words","soll was machen"]
Ich habe mir die Liste schon angesehen und aus "er" macht der Adapter "Fill word"
Ich habe gerade noch einen Test gemacht: Alexa frage ioBroker nachdem Stromverbrauch. Ergebnis des words arrays: ["Fill Words","stromverbrauch"] daraufhin habe ich auf eine Frage nicht geantwortet und die gleiche eingabe wieder gesagt: Alexa frage ioBroker nach dem Stromverbrauch: Ergebnis: eine andere Session-ID und das Word Array: ["dem stromverbrauch"]
Vielleicht könnte der skill ja auch selbst merken, dass es eine abweichende SessionId ist und damit wieder "Fill Words" einsetzen. so wie es bei der 1. Anfrage auch war.
@Apollon77 Ich habe gerade gemerkt, dass er das Array wieder mit "Fill Words" befüllt, wenn man paar Sekunden wartet. Wenn man direkt nachdem Alexa in den Ruhemodus gegangen ist fragt, scheint sie dies noch nicht zu machen (aber sendet eine neue SessionId), aber wenn man 5s wartet und dann etwas sagt, dann ist es wieder komplett wie eine neue Anfrage (mit "Fill Words")
Es hat bestimmt einen Amazon Hintergrund, aber wenn es ein paar Sekunden nachdem Alexa nicht mehr zuhört geht, warum kann eigentlich nicht immer genau der Text, den man sagt übergeben werden?
oder das Wort „nach“ noch als Hauptwort hinzufügen? Ist das möglich?
Dann könnte man noch ziemlich viele Fragen erschlagen:
Alexa, frage ioBroker nach xyz.
nach ) Füllwort ... warum brauchst du es als Hauptwort?, dann wäre "ob" das nächste und so weiter. Wir sind leider bei den Hauptwörtern sehr limitiert was die Anzahl angeht
OK, aber ich frage ja: Alexa, frage ioBroker nach dem Stromverbrauch ... und Alexa, frage ioBroker ob er das und das
Oderß Das ist doch ein normaler Satz.
@Apollon77
Ob habt ihr ja schon drin stehen:
Wenn ich nun frage:
Alexa, frage ioBroker ob alle türen geschlossen sind
so erscheint das Words ARRAY:
words":["Alle","türen geschlossen sind"]
Wieso schreibt er jetzt nicht das "ob" mit da rein?
weil alle auch ein Hauptwort ist?
Denn wenn ich Frgae:
Alexa, frage ioBroker was gibt es heute
so erscheint dieses Array
words":["Was","gibt es heute"]
Der Custom skill liefert die "Fill words" nicht zurück, wenn einmal nichts gesagt wurde (innerhalb eines Dialogs).
To Reproduce
Hier startete man ja die Ansage von vorne und erwartet wieder das Array als ["FILL WORDS","deine restliche Ansage"] Es wird aber das Array so weiter behandelt, als würde man sich mitten im Dialog befinden.