Autor Thema: Modulentwicklung für Rhasspy Sprachassistent  (Gelesen 48437 mal)

Offline JensS

  • Sr. Member
  • ****
  • Beiträge: 919
Antw:Modulentwicklung für Rhasspy Sprachassistent
« Antwort #735 am: 10 Juni 2021, 19:23:00 »
Der erste Dialog geht durch. Der Folgende "Stehlampe" aus, wird nicht dem Intent SetOnOff zugeordnet. "ja bitte" geht weiterhin. Nach einem Restart der Basis ist alles wieder gut.mosquitto_sub -h 192.168.100.1 -p 1883 -v -t hermes/dialogueManager/# -t hermes/hotword/# -t hermes/intent/#
hermes/hotword/alexa/detected {"modelId": "alexa", "modelVersion": "", "modelType": "personal", "currentSensitivity": 0.5, "siteId": "wohnzimmer", "sessionId": null, "sendAudioCaptured": null, "lang": null, "customEntities": null}
hermes/dialogueManager/sessionStarted {"sessionId": "wohnzimmer-alexa-00abb350-fbc8-48ab-af1e-6ce6c31da5bb", "siteId": "wohnzimmer", "customData": "alexa", "lang": null}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/intent/de.fhem:Shortcuts {"input": "Beleuchtung einschalten", "intent": {"intentName": "de.fhem:Shortcuts", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [], "sessionId": "wohnzimmer-alexa-00abb350-fbc8-48ab-af1e-6ce6c31da5bb", "customData": "alexa", "asrTokens": [[{"value": "Beleuchtung", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 11, "time": null}, {"value": "einschalten", "confidence": 1.0, "rangeStart": 12, "rangeEnd": 23, "time": null}]], "asrConfidence": 1.0, "rawInput": "beleuchtung einschalten", "wakewordId": "alexa", "lang": null}
hermes/dialogueManager/configure {"intents":[{"enable":"true","intentId":"de.fhem:ConfirmAction"},{"enable":"true","intentId":"de.fhem:CancelAction"}],"siteId":"wohnzimmer"}
hermes/dialogueManager/continueSession {"intentFilter":["de.fhem:ConfirmAction","de.fhem:CancelAction"],"sendIntentNotRecognized":"false","sessionId":"wohnzimmer-alexa-00abb350-fbc8-48ab-af1e-6ce6c31da5bb","siteId":"wohnzimmer","text":"Soll ich die Stehlampe wirklich einschalten?"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/intent/de.fhem:ConfirmAction {"input": "OK", "intent": {"intentName": "de.fhem:ConfirmAction", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "Mode", "value": {"kind": "Unknown", "value": "OK"}, "slotName": "Mode", "rawValue": "ja bitte", "confidence": 1.0, "range": {"start": 0, "end": 2, "rawStart": 0, "rawEnd": 8}}], "sessionId": "wohnzimmer-alexa-00abb350-fbc8-48ab-af1e-6ce6c31da5bb", "customData": "alexa", "asrTokens": [[{"value": "OK", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 2, "time": null}]], "asrConfidence": 1.0, "rawInput": "ja bitte", "wakewordId": "alexa", "lang": null}
hermes/dialogueManager/configure {"intents":[{"enable":"false","intentId":"de.fhem:ConfirmAction"},{"enable":"false","intentId":"de.fhem:CancelAction"}],"siteId":"wohnzimmer"}
hermes/dialogueManager/endSession {"sessionId":"wohnzimmer-alexa-00abb350-fbc8-48ab-af1e-6ce6c31da5bb","siteId":"wohnzimmer","text":"Ok, mach ich"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/dialogueManager/sessionEnded {"termination": {"reason": "nominal"}, "sessionId": "wohnzimmer-alexa-00abb350-fbc8-48ab-af1e-6ce6c31da5bb", "siteId": "wohnzimmer", "customData": "alexa"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}


hermes/hotword/alexa/detected {"modelId": "alexa", "modelVersion": "", "modelType": "personal", "currentSensitivity": 0.5, "siteId": "wohnzimmer", "sessionId": null, "sendAudioCaptured": null, "lang": null, "customEntities": null}
hermes/dialogueManager/sessionStarted {"sessionId": "wohnzimmer-alexa-0b6c8fdb-1c79-43d5-bd2f-a012eb8be478", "siteId": "wohnzimmer", "customData": "alexa", "lang": null}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/dialogueManager/sessionEnded {"termination": {"reason": "intentNotRecognized"}, "sessionId": "wohnzimmer-alexa-0b6c8fdb-1c79-43d5-bd2f-a012eb8be478", "siteId": "wohnzimmer", "customData": "alexa"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}


hermes/hotword/alexa/detected {"modelId": "alexa", "modelVersion": "", "modelType": "personal", "currentSensitivity": 0.5, "siteId": "wohnzimmer", "sessionId": null, "sendAudioCaptured": null, "lang": null, "customEntities": null}
hermes/dialogueManager/sessionStarted {"sessionId": "wohnzimmer-alexa-bc209f9e-7dc9-48b1-9adf-769176630668", "siteId": "wohnzimmer", "customData": "alexa", "lang": null}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/intent/de.fhem:ConfirmAction {"input": "OK", "intent": {"intentName": "de.fhem:ConfirmAction", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "Mode", "value": {"kind": "Unknown", "value": "OK"}, "slotName": "Mode", "rawValue": "ja bitte", "confidence": 1.0, "range": {"start": 0, "end": 2, "rawStart": 0, "rawEnd": 8}}], "sessionId": "wohnzimmer-alexa-bc209f9e-7dc9-48b1-9adf-769176630668", "customData": "alexa", "asrTokens": [[{"value": "OK", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 2, "time": null}]], "asrConfidence": 1.0, "rawInput": "ja bitte", "wakewordId": "alexa", "lang": null}
hermes/dialogueManager/endSession {"sessionId":"wohnzimmer-alexa-bc209f9e-7dc9-48b1-9adf-769176630668","siteId":"wohnzimmer","text":"warte grade nicht auf eine bestätigung"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/dialogueManager/sessionEnded {"termination": {"reason": "nominal"}, "sessionId": "wohnzimmer-alexa-bc209f9e-7dc9-48b1-9adf-769176630668", "siteId": "wohnzimmer", "customData": "alexa"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
Wenn configure genutzt wird, könnte doch intentFilter raus?.

Gruß Jens

p.s.
Zitat
Da "global" zu agieren, (also erst beim "Aufräumen" alles zu aktivieren, um dann selektiv wieder zu deaktivieren) finde ich schwierig, weil es theoretisch ja sein kann, dass grade irgendeine weitere Sitzung läuft (muss nicht mal FHEM sein), in der auch nur bestimmte Intents zulässig sind.
Bisher habe ich es nicht geschafft, mit einer siteId gleichzeitig eine zweite Sitzung zu starten. War immer mit "anstehen".
« Letzte Änderung: 10 Juni 2021, 19:26:15 von JensS »
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, AB440S, AB440R, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

Offline JensS

  • Sr. Member
  • ****
  • Beiträge: 919
Antw:Modulentwicklung für Rhasspy Sprachassistent
« Antwort #736 am: 11 Juni 2021, 07:48:23 »
Nach der Antwort sollte  configure intents: [], siteId: wohnzimmerfolgen, um alle Intents zu aktivieren.
Abschließend dann {"intents": [{"intentId": "de.fhem:ConfirmAction", "enable": false}], "siteId": "wohnzimmer"}um ConfirmAction zu deaktivieren.

Ist nur so eine Idee - ungestestet. Zum testen deiner 10_RHASSPY.pm komme ich frühestens heute Abend.

Gestern Abend hatte ich das Ganze mal durchgespielt.

Das Zurücksetzen der Intents mit [] funktionierte problemlos.

Die Deaktivierung von ConfirmAction (u.a.) funktionierte nicht.
Egal, was ich machte - es wurden alle Intents (inkl. ConfirmAction) oder ausschließlich ConfirmAction aktiviert.
Quelle war: https://rhasspy-hermes.readthedocs.io/en/latest/api.html#rhasspyhermes.dialogue.DialogueConfigure
Das Deaktivieren durch false funtionierte nicht mit und ohne " oder '.

Nun bleiben (aus meiner derzeitigen Sicht) genau zwei Möglichkeiten:

1. Ich bin zu blöd, die Matroschka aus JSON-Strings, Array und Strings zusammenzubauen.
2. Es handelt sich um ein BUG im Rhasspy.

Die zweite Möglichkeit wäre mir dabei persönlich lieber...

Gruß Jens
« Letzte Änderung: 11 Juni 2021, 20:15:16 von JensS »
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, AB440S, AB440R, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16324
Antw:Modulentwicklung für Rhasspy Sprachassistent
« Antwort #737 am: 11 Juni 2021, 08:37:06 »
Zitat
2. Es handelt sich um ein BUG im Rhasspy.

Die zweite Möglichkeit wäre mir dabei persönlich lieber...
Ich halte das auch für wahrscheinlich.

Hinzu kommt folgendes: Ob es zu Sprachausgaben bei continueSession kommt oder nicht, scheint nach meinen Tests von zwei Faktoren abzuhängen:
- dem Inhalt der Payload und
- der verwendeten TTS-Engine...

nanoTTS scheint schon mit "filter"-Elementen überfordert zu sein, picoTTS kapituliert dann vor customData (jedenfalls, wenn da Sonderzeichen drin sind, was anderes ist nicht getestet).

Verwirrenderweise kommt dann relativ schnell ein "no one managed" in der App, obwohl ja eine Rückmeldung auf der MQTT-Ebene erfolgt.

Muss das mal irgendwie zusammenfassen und in die Rhasspy-Community geben, alleine kommen wir vermutlich an der Stelle nicht weiter.

Danke auch für's Testen mit dem ungequoteten false etc., das wäre noch eine offene Frage gewesen.

Zitat
Egal, was ich machte - es wurden alle Intents (inkl. ConfirmAction) oder ausschließlich ConfirmAction aktiviert.
Hier hatte ich eher den Eindruck, dass immer alles aktiv war, von daher stellt sich mir eher die Frage, ob überhaupt irgendwas "Zurückzusetzen" war...
Aber wenn es bei dir ging, das auf ConfirmAction zu beschränken, dann stimmt vermutlich was mit unserer payload bei den Arrays nicht.

...dickes Brett...
(Und leider wohl auch noch konfigurationsabhängig; sehr unschön!)
« Letzte Änderung: 11 Juni 2021, 08:39:02 von Beta-User »
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}

Offline JensS

  • Sr. Member
  • ****
  • Beiträge: 919
Antw:Modulentwicklung für Rhasspy Sprachassistent
« Antwort #738 am: 11 Juni 2021, 17:57:59 »
Ich denke, dass die Objekttypen nicht passen.
Der folgende Versuch geht zwar auch ins Leere, ist aber ausbaufähig.
\0==false, \1==true

Somit ist "false" (String) größer als null und ergibt true (bool).

    my %jsonHash = (intents => [{'intentId'=>'de.fhem:ConfirmAction','enable'=>\0}],'siteId'=>'wohnzimmer');
my $jsonString = encode_json \%jsonHash;
IOWrite($hash, 'publish', qq{hermes/dialogueManager/configure $jsonString}) if $enable eq "false";
Gruß Jens

p.s. Interessante Quelle zu intentFiler und slot - wird vielleicht noch: https://rhasspy-hermes.readthedocs.io/en/latest/api.html#rhasspyhermes.dialogue.DialogueContinueSession

p.p.s.
Sollten wir für den Filter einen eigenen Thread aufmachen?
Bei der Basis habe ich mal als root "rhasspy -p de" per Konsole gestartet und auch dort interessante Infos gefunden:root@rhasspy-base:~# mosquitto_pub -h 192.168.x.x -p 1883 -t hermes/dialogueManager/configure -m '{"intents": [{"intentId": "de.fhem:ConfirmAction", "enable": false}], "siteId": "wohnzimmer"}'
root@rhasspy-base:~# mosquitto_pub -h 192.168.x.x -p 1883 -t hermes/dialogueManager/configure -m '{"intents": [{"intentId": "de.fhem:ConfirmAction", "enable": true}], "siteId": "wohnzimmer"}'
root@rhasspy-base:~# mosquitto_pub -h 192.168.x.x -p 1883 -t hermes/dialogueManager/configure -m '{"intents": [], "siteId": "wohnzimmer"}'
root@rhasspy-base:~# mosquitto_sub -h 192.168.x.x -p 1883 -v -t hermes/dialogueManager/# -t hermes/hotword/# -t hermes/intent/#
hermes/dialogueManager/configure {"intents": [{"intentId": "de.fhem:ConfirmAction", "enable": false}], "siteId": "wohnzimmer"}
hermes/dialogueManager/configure {"intents": [{"intentId": "de.fhem:ConfirmAction", "enable": true}], "siteId": "wohnzimmer"}
hermes/dialogueManager/configure {"intents": [], "siteId": "wohnzimmer"}
Hier die Debug-Ausgaben von der Rhasspy-Base:[DEBUG:2021-06-12 09:42:11,847] rhasspydialogue_hermes: <- DialogueConfigure(intents=[DialogueConfigureIntent(intent_id='de.fhem:ConfirmAction', enable=False)], site_id='wohnzimmer')
[DEBUG:2021-06-12 09:42:11,848] rhasspydialogue_hermes: Removed default intent filter
[DEBUG:2021-06-12 09:43:07,664] rhasspydialogue_hermes: <- DialogueConfigure(intents=[DialogueConfigureIntent(intent_id='de.fhem:ConfirmAction', enable=True)], site_id='wohnzimmer')
[DEBUG:2021-06-12 09:43:07,665] rhasspydialogue_hermes: Default intent filter set: ['de.fhem:ConfirmAction']
[DEBUG:2021-06-12 09:43:39,805] rhasspydialogue_hermes: <- DialogueConfigure(intents=[], site_id='wohnzimmer')
[DEBUG:2021-06-12 09:43:39,805] rhasspydialogue_hermes: Removed default intent filter
Das Verhalten sieht anders aus als erwartet/verstanden.
Einem "default intent filter" können Intents hinzugefügt (enable=true) oder daraus entfernt (enable=false) werden. Eine Negation ist nicht vorgesehen.  :(
Ich schlage vor, aktuell den intentFilter in continueSession zu verwenden um die Antwortmöglichkeiten einzuschränken.
« Letzte Änderung: 12 Juni 2021, 13:39:53 von JensS »
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, AB440S, AB440R, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16324
Antw:Modulentwicklung für Rhasspy Sprachassistent
« Antwort #739 am: 13 Juni 2021, 07:00:04 »
Ich denke, dass die Objekttypen nicht passen.
Vermutlich hast du recht, und nach meinen Tests ist Rhasspy auch etwas "sensibel", was die Syntax angeht.

"encode_json" hatte ich auch (ohne die escapten Wahrheitswerte) getestet, aber da taucht dann wieder das utf8-Problem auf. Daher bin ich jetzt den anderen Weg gegangen, "Nachbearbeitungscode" für toJSON zu verwenden, damit neben true/false auch die Reihenfolge der Schlüssel für Rhasspy gedreht werden kann usw..

Damit habe ich zumindest nicht mehr den Effekt, dass die TTS-Enginge (getestet aber nur mit nanoTTS) ins Straucheln kommt; ist ja schon mal was...

Zitat
p.s. Interessante Quelle zu intentFiler und slot - wird vielleicht noch: https://rhasspy-hermes.readthedocs.io/en/latest/api.html#rhasspyhermes.dialogue.DialogueContinueSession
Thx. Leider bleiben da (für mich) weiter Fragen offen, "an sich" würde ich behaupten wollen, dass die Payload jetzt so aussieht, wie das vorgesehen ist - abgesehen davon, dass Rhasspy ggf. nur einen einfachen Text für den intentFilter erwartet, wir aber eine Mehrzahl von Objekten schicken (was aber mAn. auch sinnvoll ist).

Zitat
p.p.s.
Sollten wir für den Filter einen eigenen Thread aufmachen?
Für die Rhasspy-Seite habe ich zu den ganzen Themen mal hier was angefangen: https://community.rhasspy.org/t/lost-in-dialogues-customdata-intentfilter-and-dialoguemanager-configure/2890

Hier im Forum würde ich sagen: muss nicht, das Thema ist einfach der nächste Punkt auf der ToDo...

Zitat
Bei der Basis habe ich mal als root "rhasspy -p de" per Konsole gestartet und auch dort interessante Infos gefunden: [...]
Das Verhalten sieht anders aus als erwartet/verstanden.
Einem "default intent filter" können Intents hinzugefügt (enable=true) oder daraus entfernt (enable=false) werden. Eine Negation ist nicht vorgesehen.  :(
Ich schlage vor, aktuell den intentFilter in continueSession zu verwenden um die Antwortmöglichkeiten einzuschränken.
Das ist in der Tat interessant, auch wenn ich die Logik mit dem "default intent filter" eigentlich genau so verstanden zu haben glaube (und aus diesem Grund die "globale Aktivierung" für keine gute Idee halte).

Im Moment ist es jedenfalls so, dass in meinem System weder intentFilter noch die enable:true/false-Variante über den dialogManager irgendwelche Auswirkungen haben. Ich werde das demnächst auch noch im Rhasspy-Thread mit etwas Topic/payload darstellen und hoffe, dass sich da dann jemand meldet, der erläutern kann, wo der Hase im Pfeffer liegt...

Vielleicht könntest du bei Gelegenheit die debug-Ausgaben für "switchDM=1" mal checken, ob da abzulesen ist, was da ankommt und wie es verarbeitet wird?
« Letzte Änderung: 15 Juni 2021, 14:48:29 von Beta-User »
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}

Offline JensS

  • Sr. Member
  • ****
  • Beiträge: 919
Antw:Modulentwicklung für Rhasspy Sprachassistent
« Antwort #740 am: 13 Juni 2021, 10:36:19 »
Hab mir mal deine angehangene Vesion angesehen:    my $enable    = shift // q{false};q{false} ist ein String und wird von Rhasspy als true (bool) erkannt. Somit sollten keine Intents, außer ConfirmAction, etc. erkannt werden.
In meinen Versuchen verwende ich nur den Intent ConfirmAction, weil ich nicht so viel tippen möchte. Natürlich sind die Beispiele/Ergebnisse auf mehrere Intents erweiterbar.
In continueSession intentFilter können auch mehrere Intents gesandt werden - so verstehe ich zumindestens intentFilter: [string]? = null - valid intent names (null means all).

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, AB440S, AB440R, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

Offline Raemsna

  • Jr. Member
  • **
  • Beiträge: 70
Antw:Modulentwicklung für Rhasspy Sprachassistent
« Antwort #741 am: 13 Juni 2021, 11:16:01 »
Hi zusammen,

ich hab mal wieder eine Frage an die Profis:
Ist es möglich (in Rhasspy selbst oder in FHEM) eine beliebige siteid für Sprachausgaben / Antworten von Befehlen auszuwählen?

Hintergrund: An meiner Base ist ein Mikrofon für WakeWord und Ausführung der eingesprochenen Befehle.
Allerdings habe ich daran keine Lautsprecher, wo die Ergebnisse ausgegeben werden können.

Stattdessen nutze ich auf zwei meiner Handys die Rhasspy App, wo Sprachausgabe (und auch Befehle einsprechen) ohne Probleme funktioniert.

Also:
Kann ich die Antwort eines eingesprochenen Befehls auf der Base ("default") z.B. auf der siteid mobile-app1 ausgeben?

danke schon wieder.

P.S.: Vielen Dank für die tolle Implementierung on-for-timer. Läuft erste Klasse!!!

Grüße
Raemsna

Offline JensS

  • Sr. Member
  • ****
  • Beiträge: 919
Antw:Modulentwicklung für Rhasspy Sprachassistent
« Antwort #742 am: 13 Juni 2021, 13:25:38 »
@Raemsna
Bin zwar kein Profi habe aber einen Tipp.
Installiere mosquitto_pub mit "apt-get install mosquitto-clients".
Erstelle eine Datei /opt/ausgabe.sh mit folgendem Inhalt:#!/bin/bash
cat $1 > /tmp/handy.wav && /usr/bin/mosquitto_pub -p 1883 -t hermes/audioServer/mobile-app1/playBytes/usjro -f /tmp/handy.wav
Eventuell muss der Port angepasst werden oder/und der Host mit -h 192.168... hinzugefügt werden.
Passe die Rechte mit "chmod 755 /opt/ausgabe.sh" an.
Trage folgendes in der Base ein - settings -> "Audio Playing" -> "Local Command" -> "Program": /opt/ausgabe.sh
Das war's schon.

Gruß Jens
« Letzte Änderung: 13 Juni 2021, 13:28:01 von JensS »
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, AB440S, AB440R, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Raemsna

  • Jr. Member
  • **
  • Beiträge: 70
Antw:Modulentwicklung für Rhasspy Sprachassistent
« Antwort #743 am: 13 Juni 2021, 18:06:07 »
@Raemsna
Bin zwar kein Profi habe aber einen Tipp.
Installiere mosquitto_pub mit "apt-get install mosquitto-clients".
Erstelle eine Datei /opt/ausgabe.sh mit folgendem Inhalt:#!/bin/bash
cat $1 > /tmp/handy.wav && /usr/bin/mosquitto_pub -p 1883 -t hermes/audioServer/mobile-app1/playBytes/usjro -f /tmp/handy.wav
Eventuell muss der Port angepasst werden oder/und der Host mit -h 192.168... hinzugefügt werden.
Passe die Rechte mit "chmod 755 /opt/ausgabe.sh" an.
Trage folgendes in der Base ein - settings -> "Audio Playing" -> "Local Command" -> "Program": /opt/ausgabe.sh
Das war's schon.

Gruß Jens

Dankeschön! Werde ich ausprobieren! :)

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16324
Antw:Modulentwicklung für Rhasspy Sprachassistent
« Antwort #744 am: 14 Juni 2021, 07:31:32 »
P.S.: Vielen Dank für die tolle Implementierung on-for-timer. Läuft erste Klasse!!!
Danke vorab mal für die Rückmeldung!  :)

Zitat
Ist es möglich (in Rhasspy selbst oder in FHEM) eine beliebige siteid für Sprachausgaben / Antworten von Befehlen auszuwählen?
Derzeit ist es im Modul nicht vorgesehen.
An sich sollte es aber kein größeres Problem sein, das zu ergänzen, für alle Antworten wird zentraler Code verwendet, den man z.B. (ähnlich zu siteId2room()) um eine Reading-Auswertung ergänzen könnte, um dann die Audioausgabe zu doppeln (via speak-Befehl).
Vorteil: man könnte es @runtime ohne weiteres ändern.
Einziges Problem, das mir einfällt: Sonstige Audioausgaben, v.a. soundfiles bei abgelaufenem Timer sollte man wohl auch umleiten, und das bräuchte vermutlich auch (wenig) Extracode.

Falls noch Bedarf besteht, schaue ich mir das mal an.

Hab mir mal deine angehangene Vesion angesehen:    my $enable    = shift // q{false};q{false} ist ein String und wird von Rhasspy als true (bool) erkannt. Somit sollten keine Intents, außer ConfirmAction, etc. erkannt werden.
Bezieht sich das auf die Version von gestern morgen?

Schon klar, dass dieser Code-Teil weiter so drin steht, aber die Payload wird hinterher "gereinigt", und es würde mich interessieren, ob es jetzt immer noch so ist, oder ob es geholfen hat, die Quotes vor dem Versenden zu entfernen?

Ansonsten könnte man beim Bereinigen auch mal versuchen, da die bool'schen Werte nummerisch (und ohne Quotes) zu übertragen?
(Der toCleanJSON-Code ist ganz am Ende zu finden).
Zitat
In meinen Versuchen verwende ich nur den Intent ConfirmAction, weil ich nicht so viel tippen möchte. Natürlich sind die Beispiele/Ergebnisse auf mehrere Intents erweiterbar.
In continueSession intentFilter können auch mehrere Intents gesandt werden - so verstehe ich zumindestens intentFilter: [string]? = null - valid intent names (null means all).

Gruß Jens
Sehe ich auch so. Nur, dass das dann ein Array ist, das man zusammensetzen muss, was ggf. weitere "Möglichkeiten bietet", Syntaxfehler reinzubasteln...
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}

Offline JensS

  • Sr. Member
  • ****
  • Beiträge: 919
Antw:Modulentwicklung für Rhasspy Sprachassistent
« Antwort #745 am: 14 Juni 2021, 15:45:33 »
(Der toCleanJSON-Code ist ganz am Ende zu finden)

Ok - und sorry. Habe zu flüchtig drübergeschaut...
Jetzt wird's richtig übertragen.

p.s. intentNotRecognized wird abgefangen aber kein reconfigure ausgeführt.hermes/hotword/alexa/detected {"modelId": "alexa", "modelVersion": "", "modelType": "personal", "currentSensitivity": 0.5, "siteId": "wohnzimmer", "sessionId": null, "sendAudioCaptured": null, "lang": null, "customEntities": null}
hermes/dialogueManager/sessionStarted {"sessionId": "wohnzimmer-alexa-8331bc08-5821-4133-a89c-d5cbe92c56f1", "siteId": "wohnzimmer", "customData": "alexa", "lang": null}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/intent/de.fhem:Shortcuts {"input": "Beleuchtung einschalten", "intent": {"intentName": "de.fhem:Shortcuts", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [], "sessionId": "wohnzimmer-alexa-8331bc08-5821-4133-a89c-d5cbe92c56f1", "customData": "alexa", "asrTokens": [[{"value": "Beleuchtung", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 11, "time": null}, {"value": "einschalten", "confidence": 1.0, "rangeStart": 12, "rangeEnd": 23, "time": null}]], "asrConfidence": 1.0, "rawInput": "beleuchtung einschalten", "wakewordId": "alexa", "lang": null}
hermes/dialogueManager/configure {"intents":[{"intentId": "de.fhem:ConfirmAction","enable": true},{"intentId": "de.fhem:CancelAction","enable": true}],"siteId": "wohnzimmer"}
hermes/dialogueManager/continueSession {"customData": "alexa","intentFilter":["de.fhem:ConfirmAction","de.fhem:CancelAction"],"sendIntentNotRecognized": false,"sessionId": "wohnzimmer-alexa-8331bc08-5821-4133-a89c-d5cbe92c56f1","siteId": "wohnzimmer","text": "Soll ich die Stehlampe wirklich einschalten?"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/dialogueManager/sessionEnded {"termination": {"reason": "intentNotRecognized"}, "sessionId": "wohnzimmer-alexa-8331bc08-5821-4133-a89c-d5cbe92c56f1", "siteId": "wohnzimmer", "customData": "alexa"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
« Letzte Änderung: 14 Juni 2021, 19:06:09 von JensS »
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, AB440S, AB440R, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

Offline Raemsna

  • Jr. Member
  • **
  • Beiträge: 70
Antw:Modulentwicklung für Rhasspy Sprachassistent
« Antwort #746 am: 14 Juni 2021, 20:04:46 »
Falls noch Bedarf besteht, schaue ich mir das mal an.
Hi zusammen,

falls das "relativ unaufwendig" umzusetzen ist und du Lust drauf hast, fände ich das natürlich Klasse.
Vorteil wäre aus meiner Sicht, dass man flexibel (ohne große Änderungen in einer bash datei o.Ä.) aus FHEM heraus die Ausgabe siteid anpassen könnte.

Und mit der Rhasspy App ist man - zumindest in Android - ja wunderbar flexibel verschiedene Geräte für Sprachein-/ausgaben einzubinden...

Super coole Sache das ganze :)
Raemsna

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16324
Antw:Modulentwicklung für Rhasspy Sprachassistent
« Antwort #747 am: 15 Juni 2021, 07:58:18 »
Jetzt wird's richtig übertragen.
Muss mal schauen, dass ich mir das auch mal im Debug-Modus ansehe. Die eigentliche Frage ist ja, ob es wirksam ist. Leider hatte ich bei meinen Tests bisher eher nicht den Eindruck.

Zitat
p.s. intentNotRecognized wird abgefangen aber kein reconfigure ausgeführt.
Der DialogManager wird nur dann für das reconfigure (ständig) aufgerufen, wenn die Option in der DEF gesetzt ist, wie hier erwähnt:
Vielleicht könntest du bei Gelegenheit die debug-Ausgaben für "switchDM=1" mal checken, ob da abzulesen ist, was da ankommt und wie es verarbeitet wird?

falls das "relativ unaufwendig" umzusetzen ist [...]
Ich schau's mir auf alle Fälle an. Bauchgefühl sagt: sollte ohne allzu große Aufwände gehen, aber das kann auch falsch sein...
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16324
Antw:Modulentwicklung für Rhasspy Sprachassistent
« Antwort #748 am: 15 Juni 2021, 10:46:52 »
Ich schau's mir auf alle Fälle an. Bauchgefühl sagt: sollte ohne allzu große Aufwände gehen, aber das kann auch falsch sein...
:) Bitte testen...
siteId2doubleSpeak_<siteId>

Anwendungshinweise (auch zu siteId2room) sind am Ende der cref ergänzt.
« Letzte Änderung: 21 Juni 2021, 07:46:50 von Beta-User »
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline JensS

  • Sr. Member
  • ****
  • Beiträge: 919
Antw:Modulentwicklung für Rhasspy Sprachassistent
« Antwort #749 am: 15 Juni 2021, 20:47:35 »
switchDM=1 war/ist gesetzt2021.06.15 20:40:40 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionStarted => {"sessionId": "wohnzimmer-alexa-ec0d2905-0df4-4454-a6fb-3516cf8671c0", "siteId": "wohnzimmer", "customData": "alexa", "lang": null}
2021.06.15 20:40:40 5: Parsed value: wohnzimmer-alexa-ec0d2905-0df4-4454-a6fb-3516cf8671c0 for key: sessionId
2021.06.15 20:40:40 5: Parsed value: alexa for key: customData
2021.06.15 20:40:40 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:40:40 5: room is identified using siteId as wohnzimmer
2021.06.15 20:40:43 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/intent/de.fhem_Shortcuts => {"input": "Beleuchtung einschalten", "intent": {"intentName": "de.fhem:Shortcuts", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [], "sessionId": "wohnzimmer-alexa-ec0d2905-0df4-4454-a6fb-3516cf8671c0", "customData": "alexa", "asrTokens": [[{"value": "Beleuchtung", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 11, "time": null}, {"value": "einschalten", "confidence": 1.0, "rangeStart": 12, "rangeEnd": 23, "time": null}]], "asrConfidence": 1.0, "rawInput": "beleuchtung einschalten", "wakewordId": "alexa", "lang": null}
2021.06.15 20:40:43 5: Parsed value: wohnzimmer-alexa-ec0d2905-0df4-4454-a6fb-3516cf8671c0 for key: sessionId
2021.06.15 20:40:43 5: Parsed value: beleuchtung einschalten for key: rawInput
2021.06.15 20:40:43 5: Parsed value: 1 for key: probability
2021.06.15 20:40:43 5: Parsed value: Shortcuts for key: intent
2021.06.15 20:40:43 5: Parsed value: alexa for key: customData
2021.06.15 20:40:43 5: Parsed value: Beleuchtung einschalten for key: input
2021.06.15 20:40:43 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:40:43 5: handleIntentShortcuts called with Beleuchtung einschalten key
2021.06.15 20:40:43 5: [Rhasspy] setting  Timer: Rhasspy_wohnzimmer-alexa-ec0d2905-0df4-4454-a6fb-3516cf8671c0 2021-06-15 20:40:53
2021.06.15 20:40:43 3: R-DM for Rhasspy called
2021.06.15 20:40:43 5: Response is: HASH(0x55c4c6e4b1a0)
2021.06.15 20:40:48 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/intent/de.fhem_ConfirmAction => {"input": "OK", "intent": {"intentName": "de.fhem:ConfirmAction", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "Mode", "value": {"kind": "Unknown", "value": "OK"}, "slotName": "Mode", "rawValue": "ja bitte", "confidence": 1.0, "range": {"start": 0, "end": 2, "rawStart": 0, "rawEnd": 8}}], "sessionId": "wohnzimmer-alexa-ec0d2905-0df4-4454-a6fb-3516cf8671c0", "customData": "alexa", "asrTokens": [[{"value": "OK", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 2, "time": null}]], "asrConfidence": 1.0, "rawInput": "ja bitte", "wakewordId": "alexa", "lang": null}
2021.06.15 20:40:48 5: Parsed value: OK for key: Mode
2021.06.15 20:40:48 5: Parsed value: ConfirmAction for key: intent
2021.06.15 20:40:48 5: Parsed value: alexa for key: customData
2021.06.15 20:40:48 5: Parsed value: wohnzimmer-alexa-ec0d2905-0df4-4454-a6fb-3516cf8671c0 for key: sessionId
2021.06.15 20:40:48 5: Parsed value: 1 for key: probability
2021.06.15 20:40:48 5: Parsed value: ja bitte for key: rawInput
2021.06.15 20:40:48 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:40:48 5: Parsed value: OK for key: input
2021.06.15 20:40:48 5: handleIntentConfirmAction called
2021.06.15 20:40:48 5: [Rhasspy] removing Timer: Rhasspy_wohnzimmer-alexa-ec0d2905-0df4-4454-a6fb-3516cf8671c0
2021.06.15 20:40:48 3: R-DM for Rhasspy called
2021.06.15 20:40:48 5: handleIntentShortcuts called with Beleuchtung einschalten key
2021.06.15 20:40:48 5: cmd selected: Ok, mach ich
2021.06.15 20:40:48 5: FHEM shortcut identified: set Stehlampe on, device name is Rhasspy
2021.06.15 20:40:48 5: _replace from RHASSPY::handleIntentShortcuts starting with: set Stehlampe on
2021.06.15 20:40:48 5: _replace from RHASSPY::handleIntentShortcuts returns: set Stehlampe on
2021.06.15 20:40:48 5: _replace from RHASSPY::handleIntentShortcuts starting with: Ok, mach ich
2021.06.15 20:40:48 5: _replace from RHASSPY::handleIntentShortcuts returns: Ok, mach ich
2021.06.15 20:40:48 5: Response is: Ok, mach ich
2021.06.15 20:40:50 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionEnded => {"termination": {"reason": "nominal"}, "sessionId": "wohnzimmer-alexa-ec0d2905-0df4-4454-a6fb-3516cf8671c0", "siteId": "wohnzimmer", "customData": "alexa"}
2021.06.15 20:40:50 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:40:50 5: Parsed value: alexa for key: customData
2021.06.15 20:40:50 5: Parsed value: wohnzimmer-alexa-ec0d2905-0df4-4454-a6fb-3516cf8671c0 for key: sessionId
2021.06.15 20:40:50 5: room is identified using siteId as wohnzimmer
2021.06.15 20:40:54 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionStarted => {"sessionId": "wohnzimmer-alexa-86430f81-b87e-4746-8b48-9d8d5a74ef0b", "siteId": "wohnzimmer", "customData": "alexa", "lang": null}
2021.06.15 20:40:54 5: Parsed value: wohnzimmer-alexa-86430f81-b87e-4746-8b48-9d8d5a74ef0b for key: sessionId
2021.06.15 20:40:54 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:40:54 5: Parsed value: alexa for key: customData
2021.06.15 20:40:54 5: room is identified using siteId as wohnzimmer
2021.06.15 20:40:56 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/intent/de.fhem_SetOnOff => {"input": "stehlampe off", "intent": {"intentName": "de.fhem:SetOnOff", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.Device", "value": {"kind": "Unknown", "value": "stehlampe"}, "slotName": "Device", "rawValue": "stehlampe", "confidence": 1.0, "range": {"start": 0, "end": 9, "rawStart": 0, "rawEnd": 9}}, {"entity": "Value", "value": {"kind": "Unknown", "value": "off"}, "slotName": "Value", "rawValue": "aus", "confidence": 1.0, "range": {"start": 10, "end": 13, "rawStart": 10, "rawEnd": 13}}], "sessionId": "wohnzimmer-alexa-86430f81-b87e-4746-8b48-9d8d5a74ef0b", "customData": "alexa", "asrTokens": [[{"value": "stehlampe", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 9, "time": null}, {"value": "off", "confidence": 1.0, "rangeStart": 10, "rangeEnd": 13, "time": null}]], "asrConfidence": 0.99669105, "rawInput": "stehlampe aus", "wakewordId": "alexa", "lang": null}
2021.06.15 20:40:56 5: Parsed value: SetOnOff for key: intent
2021.06.15 20:40:56 5: Parsed value: alexa for key: customData
2021.06.15 20:40:56 5: Parsed value: stehlampe for key: Device
2021.06.15 20:40:56 5: Parsed value: wohnzimmer-alexa-86430f81-b87e-4746-8b48-9d8d5a74ef0b for key: sessionId
2021.06.15 20:40:56 5: Parsed value: stehlampe aus for key: rawInput
2021.06.15 20:40:56 5: Parsed value: 1 for key: probability
2021.06.15 20:40:56 5: Parsed value: off for key: Value
2021.06.15 20:40:56 5: Parsed value: stehlampe off for key: input
2021.06.15 20:40:56 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:40:56 5: handleIntentSetOnOff called
2021.06.15 20:40:56 5: room is identified using siteId as wohnzimmer
2021.06.15 20:40:56 5: Device selected (by hash, with room and name): Stehlampe
2021.06.15 20:40:56 5: analyzeAndRunCmd called with command: off
2021.06.15 20:40:56 5: Stehlampe off is a normal command
2021.06.15 20:40:56 5: Running command [off] on device [Stehlampe]
2021.06.15 20:40:56 5: analyzeAndRunCmd called with command: {ResponseOnOff($DEVICE)}
2021.06.15 20:40:56 5: {ResponseOnOff($DEVICE)} is a perl command
2021.06.15 20:40:56 5: Response is Ok - Stehlampe im wohnzimmer ist ausgeschaltet
2021.06.15 20:40:56 5: Response is: Ok - Stehlampe im wohnzimmer ist ausgeschaltet
2021.06.15 20:41:00 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionEnded => {"termination": {"reason": "nominal"}, "sessionId": "wohnzimmer-alexa-86430f81-b87e-4746-8b48-9d8d5a74ef0b", "siteId": "wohnzimmer", "customData": "alexa"}
2021.06.15 20:41:00 5: Parsed value: alexa for key: customData
2021.06.15 20:41:00 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:41:00 5: Parsed value: wohnzimmer-alexa-86430f81-b87e-4746-8b48-9d8d5a74ef0b for key: sessionId
2021.06.15 20:41:00 5: room is identified using siteId as wohnzimmer
2021.06.15 20:41:02 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionStarted => {"sessionId": "wohnzimmer-alexa-371e5021-c17c-46fd-ae8b-a0199d2863ef", "siteId": "wohnzimmer", "customData": "alexa", "lang": null}
2021.06.15 20:41:02 5: Parsed value: alexa for key: customData
2021.06.15 20:41:02 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:41:02 5: Parsed value: wohnzimmer-alexa-371e5021-c17c-46fd-ae8b-a0199d2863ef for key: sessionId
2021.06.15 20:41:02 5: room is identified using siteId as wohnzimmer
2021.06.15 20:41:05 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/intent/de.fhem_Shortcuts => {"input": "Beleuchtung einschalten", "intent": {"intentName": "de.fhem:Shortcuts", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [], "sessionId": "wohnzimmer-alexa-371e5021-c17c-46fd-ae8b-a0199d2863ef", "customData": "alexa", "asrTokens": [[{"value": "Beleuchtung", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 11, "time": null}, {"value": "einschalten", "confidence": 1.0, "rangeStart": 12, "rangeEnd": 23, "time": null}]], "asrConfidence": 1.0, "rawInput": "beleuchtung einschalten", "wakewordId": "alexa", "lang": null}
2021.06.15 20:41:05 5: Parsed value: alexa for key: customData
2021.06.15 20:41:05 5: Parsed value: Shortcuts for key: intent
2021.06.15 20:41:05 5: Parsed value: wohnzimmer-alexa-371e5021-c17c-46fd-ae8b-a0199d2863ef for key: sessionId
2021.06.15 20:41:05 5: Parsed value: 1 for key: probability
2021.06.15 20:41:05 5: Parsed value: beleuchtung einschalten for key: rawInput
2021.06.15 20:41:05 5: Parsed value: Beleuchtung einschalten for key: input
2021.06.15 20:41:05 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:41:05 5: handleIntentShortcuts called with Beleuchtung einschalten key
2021.06.15 20:41:05 5: [Rhasspy] setting  Timer: Rhasspy_wohnzimmer-alexa-371e5021-c17c-46fd-ae8b-a0199d2863ef 2021-06-15 20:41:15
2021.06.15 20:41:05 3: R-DM for Rhasspy called
2021.06.15 20:41:05 5: Response is: HASH(0x55c4c7742080)
2021.06.15 20:41:11 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/intent/de.fhem_ConfirmAction => {"input": "Abbruch", "intent": {"intentName": "de.fhem:ConfirmAction", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "Mode", "value": {"kind": "Unknown", "value": "Abbruch"}, "slotName": "Mode", "rawValue": "nein danke", "confidence": 1.0, "range": {"start": 0, "end": 7, "rawStart": 0, "rawEnd": 10}}], "sessionId": "wohnzimmer-alexa-371e5021-c17c-46fd-ae8b-a0199d2863ef", "customData": "alexa", "asrTokens": [[{"value": "Abbruch", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 7, "time": null}]], "asrConfidence": 1.0, "rawInput": "nein danke", "wakewordId": "alexa", "lang": null}
2021.06.15 20:41:11 5: Parsed value: Abbruch for key: input
2021.06.15 20:41:11 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:41:11 5: Parsed value: alexa for key: customData
2021.06.15 20:41:11 5: Parsed value: Abbruch for key: Mode
2021.06.15 20:41:11 5: Parsed value: ConfirmAction for key: intent
2021.06.15 20:41:11 5: Parsed value: wohnzimmer-alexa-371e5021-c17c-46fd-ae8b-a0199d2863ef for key: sessionId
2021.06.15 20:41:11 5: Parsed value: 1 for key: probability
2021.06.15 20:41:11 5: Parsed value: nein danke for key: rawInput
2021.06.15 20:41:11 5: handleIntentConfirmAction called
2021.06.15 20:41:11 5: handleIntentCancelAction called
2021.06.15 20:41:11 5: [Rhasspy] removing Timer: Rhasspy_wohnzimmer-alexa-371e5021-c17c-46fd-ae8b-a0199d2863ef
2021.06.15 20:41:11 5: Response is: Habe abgebrochen
2021.06.15 20:41:11 3: R-DM for Rhasspy called
2021.06.15 20:41:13 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionEnded => {"termination": {"reason": "nominal"}, "sessionId": "wohnzimmer-alexa-371e5021-c17c-46fd-ae8b-a0199d2863ef", "siteId": "wohnzimmer", "customData": "alexa"}
2021.06.15 20:41:13 5: Parsed value: wohnzimmer-alexa-371e5021-c17c-46fd-ae8b-a0199d2863ef for key: sessionId
2021.06.15 20:41:13 5: Parsed value: alexa for key: customData
2021.06.15 20:41:13 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:41:13 5: room is identified using siteId as wohnzimmer
2021.06.15 20:41:16 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionStarted => {"sessionId": "wohnzimmer-alexa-91813434-a7cf-464e-b272-e3d9cd6ef03a", "siteId": "wohnzimmer", "customData": "alexa", "lang": null}
2021.06.15 20:41:16 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:41:16 5: Parsed value: alexa for key: customData
2021.06.15 20:41:16 5: Parsed value: wohnzimmer-alexa-91813434-a7cf-464e-b272-e3d9cd6ef03a for key: sessionId
2021.06.15 20:41:16 5: room is identified using siteId as wohnzimmer
2021.06.15 20:41:19 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/intent/de.fhem_SetNumeric => {"input": "stehlampe 31", "intent": {"intentName": "de.fhem:SetNumeric", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.Device", "value": {"kind": "Unknown", "value": "stehlampe"}, "slotName": "Device", "rawValue": "stehlampe", "confidence": 1.0, "range": {"start": 0, "end": 9, "rawStart": 0, "rawEnd": 9}}, {"entity": "rhasspy/number", "value": {"kind": "Number", "value": 31}, "slotName": "Value", "rawValue": "einunddreißig", "confidence": 1.0, "range": {"start": 10, "end": 12, "rawStart": 10, "rawEnd": 23}}], "sessionId": "wohnzimmer-alexa-91813434-a7cf-464e-b272-e3d9cd6ef03a", "customData": "alexa", "asrTokens": [[{"value": "stehlampe", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 9, "time": null}, {"value": "31", "confidence": 1.0, "rangeStart": 10, "rangeEnd": 12, "time": null}]], "asrConfidence": 0.21532300000000004, "rawInput": "stehlampe einunddreißig", "wakewordId": "alexa", "lang": null}
2021.06.15 20:41:19 5: Parsed value: SetNumeric for key: intent
2021.06.15 20:41:19 5: Parsed value: stehlampe for key: Device
2021.06.15 20:41:19 5: Parsed value: alexa for key: customData
2021.06.15 20:41:19 5: Parsed value: stehlampe einunddreißig for key: rawInput
2021.06.15 20:41:19 5: Parsed value: 1 for key: probability
2021.06.15 20:41:19 5: Parsed value: wohnzimmer-alexa-91813434-a7cf-464e-b272-e3d9cd6ef03a for key: sessionId
2021.06.15 20:41:19 5: Parsed value: 31 for key: Value
2021.06.15 20:41:19 5: Parsed value: stehlampe 31 for key: input
2021.06.15 20:41:19 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:41:19 5: handleIntentSetNumeric called
2021.06.15 20:41:19 5: room is identified using siteId as wohnzimmer
2021.06.15 20:41:19 5: Device selected (by hash, with room and name): Stehlampe
2021.06.15 20:41:19 5: Response is: Tut mir leid, ich konnte kein passendes Mäpping finden
2021.06.15 20:41:23 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionEnded => {"termination": {"reason": "nominal"}, "sessionId": "wohnzimmer-alexa-91813434-a7cf-464e-b272-e3d9cd6ef03a", "siteId": "wohnzimmer", "customData": "alexa"}
2021.06.15 20:41:23 5: Parsed value: wohnzimmer-alexa-91813434-a7cf-464e-b272-e3d9cd6ef03a for key: sessionId
2021.06.15 20:41:23 5: Parsed value: alexa for key: customData
2021.06.15 20:41:23 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:41:23 5: room is identified using siteId as wohnzimmer
2021.06.15 20:41:25 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionStarted => {"sessionId": "wohnzimmer-alexa-93d9ac40-b52a-40dd-bc75-ca446b9bfb22", "siteId": "wohnzimmer", "customData": "alexa", "lang": null}
2021.06.15 20:41:25 5: Parsed value: wohnzimmer-alexa-93d9ac40-b52a-40dd-bc75-ca446b9bfb22 for key: sessionId
2021.06.15 20:41:25 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:41:25 5: Parsed value: alexa for key: customData
2021.06.15 20:41:25 5: room is identified using siteId as wohnzimmer
2021.06.15 20:41:27 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/intent/de.fhem_Shortcuts => {"input": "Beleuchtung einschalten", "intent": {"intentName": "de.fhem:Shortcuts", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [], "sessionId": "wohnzimmer-alexa-93d9ac40-b52a-40dd-bc75-ca446b9bfb22", "customData": "alexa", "asrTokens": [[{"value": "Beleuchtung", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 11, "time": null}, {"value": "einschalten", "confidence": 1.0, "rangeStart": 12, "rangeEnd": 23, "time": null}]], "asrConfidence": 1.0, "rawInput": "beleuchtung einschalten", "wakewordId": "alexa", "lang": null}
2021.06.15 20:41:27 5: Parsed value: Beleuchtung einschalten for key: input
2021.06.15 20:41:27 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:41:27 5: Parsed value: wohnzimmer-alexa-93d9ac40-b52a-40dd-bc75-ca446b9bfb22 for key: sessionId
2021.06.15 20:41:27 5: Parsed value: beleuchtung einschalten for key: rawInput
2021.06.15 20:41:27 5: Parsed value: 1 for key: probability
2021.06.15 20:41:27 5: Parsed value: alexa for key: customData
2021.06.15 20:41:27 5: Parsed value: Shortcuts for key: intent
2021.06.15 20:41:27 5: handleIntentShortcuts called with Beleuchtung einschalten key
2021.06.15 20:41:27 5: [Rhasspy] setting  Timer: Rhasspy_wohnzimmer-alexa-93d9ac40-b52a-40dd-bc75-ca446b9bfb22 2021-06-15 20:41:37
2021.06.15 20:41:27 3: R-DM for Rhasspy called
2021.06.15 20:41:27 5: Response is: HASH(0x55c4c786a520)
2021.06.15 20:41:34 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionEnded => {"termination": {"reason": "intentNotRecognized"}, "sessionId": "wohnzimmer-alexa-93d9ac40-b52a-40dd-bc75-ca446b9bfb22", "siteId": "wohnzimmer", "customData": "alexa"}
2021.06.15 20:41:34 5: Parsed value: wohnzimmer-alexa-93d9ac40-b52a-40dd-bc75-ca446b9bfb22 for key: sessionId
2021.06.15 20:41:34 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:41:34 5: Parsed value: alexa for key: customData
2021.06.15 20:41:34 5: room is identified using siteId as wohnzimmer
2021.06.15 20:41:34 5: [Rhasspy] removing Timer: Rhasspy_wohnzimmer-alexa-93d9ac40-b52a-40dd-bc75-ca446b9bfb22
2021.06.15 20:41:39 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionStarted => {"sessionId": "wohnzimmer-alexa-3e2ff5cd-5cf6-4b5d-b503-6c059095c2db", "siteId": "wohnzimmer", "customData": "alexa", "lang": null}
2021.06.15 20:41:39 5: Parsed value: wohnzimmer-alexa-3e2ff5cd-5cf6-4b5d-b503-6c059095c2db for key: sessionId
2021.06.15 20:41:39 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:41:39 5: Parsed value: alexa for key: customData
2021.06.15 20:41:39 5: room is identified using siteId as wohnzimmer
2021.06.15 20:41:43 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionEnded => {"termination": {"reason": "intentNotRecognized"}, "sessionId": "wohnzimmer-alexa-3e2ff5cd-5cf6-4b5d-b503-6c059095c2db", "siteId": "wohnzimmer", "customData": "alexa"}
2021.06.15 20:41:43 5: Parsed value: wohnzimmer-alexa-3e2ff5cd-5cf6-4b5d-b503-6c059095c2db for key: sessionId
2021.06.15 20:41:43 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:41:43 5: Parsed value: alexa for key: customData
2021.06.15 20:41:43 5: room is identified using siteId as wohnzimmer
2021.06.15 20:41:56 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionStarted => {"sessionId": "wohnzimmer-alexa-227f37e4-8735-4027-9f9b-8d20548c6023", "siteId": "wohnzimmer", "customData": "alexa", "lang": null}
2021.06.15 20:41:56 5: Parsed value: wohnzimmer-alexa-227f37e4-8735-4027-9f9b-8d20548c6023 for key: sessionId
2021.06.15 20:41:56 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:41:56 5: Parsed value: alexa for key: customData
2021.06.15 20:41:56 5: room is identified using siteId as wohnzimmer
2021.06.15 20:42:26 5: RHASSPY: [Rhasspy] Parse (IO: rhasspyMQTT2): Msg: hermes/dialogueManager/sessionEnded => {"termination": {"reason": "timeout"}, "sessionId": "wohnzimmer-alexa-227f37e4-8735-4027-9f9b-8d20548c6023", "siteId": "wohnzimmer", "customData": "alexa"}
2021.06.15 20:42:26 5: Parsed value: alexa for key: customData
2021.06.15 20:42:26 5: Parsed value: wohnzimmer for key: siteId
2021.06.15 20:42:26 5: Parsed value: wohnzimmer-alexa-227f37e4-8735-4027-9f9b-8d20548c6023 for key: sessionId
2021.06.15 20:42:26 5: room is identified using siteId as wohnzimmer
Abschließende Betrachtung zum Filter aus meiner Sicht:
Einen globalen Filter zu setzen, welcher alle Intents AUSSER ConfirmAction, etc. erlaubt, ist derzeit nicht in Sicht.
Intentfilterung via continueSession oder/und configure ist generell möglich.
Letztlich sollte nur eine Variante zum filtern genutzt werden.
Es sollten passende Antworten zu confirm, cancel, intentNotRecognized und silence ausgegeben sowie der/die Filter zurückgesetzt werden.
Wenn das alles passt, könnte die Dialogroutine abgehakt werden.

Gruß Jens
« Letzte Änderung: 15 Juni 2021, 21:53:14 von JensS »
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, AB440S, AB440R, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

 

decade-submarginal