Modulentwicklung für Rhasspy Sprachassistent

Begonnen von drhirn, 11 März 2021, 15:59:50

Vorheriges Thema - Nächstes Thema

drhirn

Zitat von: Beta-User am 18 Dezember 2021, 18:15:12
@drhirn: Habe versucht, den "Komma"-Konverter in Gang zu bringen (wie jetzt von mir im Wiki für die Theorie hinterlegt). Das klappt aber leider aus irgendeinem Grund nicht, für einen Schubs wäre ich dankbar ::) .
In Python wollte ich mich eigentlich nicht auch noch reinarbeiten ::) und weiß nicht mal, was auf der Murmel an Version verfügbar ist; vielleicht wäre Perl einfacher ;) ...

Geht er nicht? Bzw. was konkret geht nicht? Schon lange nicht mehr ausprobiert. Und ich komm die nächsten Tage auch nicht dazu. Aber ich behalt's im Hinterkopf.

Beta-User

Also, Langfassung:ls -l /opt/rhasspy/profile/de/converters/customFloat 
-rwxr-xr-- 1 rhasspy rhasspy 154 Dez 18 20:00 /opt/rhasspy/profile/de/converters/customFloat


cat /opt/rhasspy/profile/de/converters/customFloat       
#!/usr/bin/env python3
import sys
import json

# [22, ".", 5]
args = json.load(sys.stdin)

# 22.5
num = "".join(str(s).strip() for s in args)

print(num)


Aktiviere ich diese Zeile in sentences.ini:
<de.fhem:SetOnOff.cmdmulti> [<den>] $de.fhem.Device-thermostat{Device}  [<de.fhem:SetOnOff.rooms>] auf (5..25 [Komma:. (0|5)]){Value!customFloat}] Grad{Unit.degree}

bekomme ich die Meldung eingeblendet:TrainingFailedException: Command '['fstcompile', '--isymbols=/opt/rhasspy/profiles/de/kaldi/model/data/lang/words.txt', '--osymbols=/opt/rhasspy/profiles/de/kaldi/model/data/lang/words.txt', '--keep_isymbols=false', '--keep_osymbols=false', '/opt/rhasspy/profiles/de/kaldi/language_model.txt', '/opt/rhasspy/profiles/de/kaldi/model/data/lang/G.fst.unsorted']' returned non-zero exit status 1.
Ins log habe ich bisher nicht geschaut, deaktiviert man die Zeile läuft alles sauber durch...
Server: HP-elitedesk@Debian 12, 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: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

drhirn

Bei dem Satz
(stelle|schalte|mache) $de.fhem.Device-SetNumeric{Device} [$de.fhem.Room{Room}] [um] [(0..30 [komma:. 1..9]){Value!customFloat}] [grad{Unit}] (höher|wärmer){Change:tempUp}
läuft das Training durch. Aber ich bekomm dann einen NLU-Fehler.

Tippe auf Rhasspy. Vielleicht hat sich der Fehler wieder eingeschlichen. Müssen wir im Rhasspy-Forum klären.

JensS

#1008
@Beta-User
Habe gerade die letzte Version installiert und bisher keine Klagen. ActiveVoiceInput läuft gut.

Wozu gibt's den extra Konverter customFloat? Geht's nicht mit dem vorhandenen float?

allg. Info: In Bullseye hatte ich bei der Installation von Rhasspy Probleme mit dem abhängigen Paket libgfortran4. https://community.rhasspy.org/t/bullseye-refuses-to-install/3355

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, 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.

Beta-User

Zitat von: JensS am 20 Dezember 2021, 19:35:57
@Beta-User
Habe gerade die letzte Version installiert und bisher keine Klagen. ActiveVoiceInput läuft gut.
8)

Zitat
Wozu gibt's den extra Konverter customFloat? Geht's nicht mit dem vorhandenen float?
Da es im Wiki stand, wollte ich das schlicht ausprobieren und kann nicht sagen, ob "float" das genauso gut kann...
Hatte dann auch die "1...9"-Version ausprobiert, allerdings mit demselben Ergebnis. Wenn wir "customFloat" nicht brauchen, sollte man es aus dem Wiki werfen. @drhirn: Schaust du dir das bei Gelegenheit an?

Zitatallg. Info: In Bullseye hatte ich bei der Installation von Rhasspy Probleme mit dem abhängigen Paket libgfortran4. https://community.rhasspy.org/t/bullseye-refuses-to-install/3355
Danke auch für's posten bei Rhasspy, Gisbert hatte ja auch darauf hingewiesen, dass das klappt, wenn man die 4-er Version aus buster holt. Was ich mich allerdings frage: "libgfortran" (?) ist als Meta-Paket doch in beiden drin. Es sollte eigentlich genügen, das zu referenzieren und nicht irgendeine bestimmte Version? (Mindest-Versionsangaben sollten ja möglich sein). Dann wäre dieser wiederkehrende Hackel auch erledigt...
Server: HP-elitedesk@Debian 12, 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: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Prof. Dr. Peter Henning

Hat eigentlich jemand eine deutsche Datei für Stopwords erstellt?

LG

pah

Beta-User

Afaik nicht. stop words (falls https://en.wikipedia.org/wiki/Stop_word gemeint ist) findet sich erst im "Whitepaper": https://rhasspy.readthedocs.io/en/latest/whitepaper/.

Was aber heute schon geht, ist "ignore_unknown_words" generell in fsticuffs zu aktivieren, siehe https://rhasspy.readthedocs.io/en/latest/intent-recognition/#fsticuffs. Kann aber sein, dass das "Nebenwirkungen" hat.

Oder war  gemeint, dass man ein "slot program" für diese Datei erstellt und die passende Variable einfach in sentences.ini verteilt?

Falls es "irgendwo da draußen" eine Datei gibt, könnte man die vermutlich ohne weiteres verwenden, allerdings wäre das vermutlich umständlicher als es sein müßte und eher "lahm" in der Umsetzung/im Training...?
Server: HP-elitedesk@Debian 12, 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: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Prof. Dr. Peter Henning

Stand der Forschung (nicht nur bei mir) ist, dass die beste Spracherkennung nicht einfach ein neuronales Netz ist, sondern semantische Aspekte beinhalten muss. Teilweise wird das ja schon dadurch realisiert, dass Begriffe als "Room" etc. interpretiert werden - das kann man aber noch wesentlich weiter treiben.

Google macht das übrigens ebenso.

LG

pah

JensS

Zitat von: rejoe2
What's the best choice for such a "continuous scanario"?
EDIT: Seems the "no one managed" may be just related to the usage of the rhasspy mobile app
...verstehe ich nicht. Der Dialog läuft doch.
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, 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.

Beta-User

Zitat von: Prof. Dr. Peter Henning am 21 Dezember 2021, 21:24:04
Stand der Forschung (nicht nur bei mir) ist, dass die beste Spracherkennung nicht einfach ein neuronales Netz ist, sondern semantische Aspekte beinhalten muss. Teilweise wird das ja schon dadurch realisiert, dass Begriffe als "Room" etc. interpretiert werden - das kann man aber noch wesentlich weiter treiben.

Google macht das übrigens ebenso.
Bin am Rätseln, was das in Bezug auf das Modul bedeuten soll.

Falls das eher in Richtung Rhasspy geht: Auf der Rhasspy-Seite scheint es "an sich" kein Problem zu sein, einfach den STT service zu wechseln und/oder einfach was externes zu nutzen. So verstand ich z.B. diesen Thread: https://community.rhasspy.org/t/vosk-coqui-stt-asrs-integration/2848

Zitat von: JensS am 21 Dezember 2021, 22:02:34
...verstehe ich nicht. Der Dialog läuft doch.
...jein...
Vorab bin ich nicht sicher, ob wir über dassselbe reden: Mir geht es nicht um den "welches Schweinderl hättens dennn gerne"-Dialog, wenn RHASSPY mehrere Optionen erkennt (das funktioniert in der Tat recht gut), sondern darum, wie RHASSPY/Rhasspy interagiert, wenn man in der DEF sessionTimeout setzt (z.B. auf 15). Dann macht RHASSPY den Dialog nicht direkt zu, sondern wartet, ob nicht der User eine weitere Anweisung erteilt. Auch das klappt prinzipiell, aber eben nicht immer.
Dann kommt es (Testumgebung immer: rhasspy mobile app) zu den bekannten "Stottereien", die sich schlimmstenfalls nur noch dadurch beenden lassen, dass man die App komplett schließt. Dazwischen poppen diese "no one managed..."-Meldungen auf, von denen ich zwischenzeitlich annehme, dass die durch die App generiert werden. Zunächst war ich davon ausgegangen, dass die von Rhasspy (Dialog Manager?) verursacht würden.

Hast du diese Option bereits getestet? Und: Läuft das bei dir gut (wenn ja: welche Umgebungsbedingungen?)

PS: Man kann das "Dialogverhalten" "on the fly" auch ändern, indem man passende sessionTimeout-Readings (pro siteId) setzt.
Server: HP-elitedesk@Debian 12, 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: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

JensS

Sorry, hab immer noch nicht kapiert worum es genau geht - ein MQTT-Mitschnitt einer solchen Stotterei wäre interessant.
Die Timeout-Option habe ich noch nicht genutzt und in der Referenz auch nicht gesehen.
Hier ein WIKI-Dialog - ganz ohne Stotterei:mosquitto_sub -h 192.168.100.1 -p 1883 -v -t hermes/dialogueManager/# -t hermes/hotword/# -t hermes/intent/# -t hermes/nlu/# -t hermes/tts/#
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-27a31494-5fd0-40d9-9321-bac52cb18d44", "siteId": "wohnzimmer", "customData": "alexa", "lang": null}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/nlu/query {"input": "bitte schlage in der wikipdia nach", "siteId": "wohnzimmer", "id": null, "intentFilter": ["de.fhem:SetMute", "de.fhem:Witze", "de.fhem:GetOnOff", "de.fhem:Fernsehprogramm", "de.fhem:ViomiRhasspy", "de.fhem:WIKI", "de.fhem:Wikipedia", "de.fhem:SetOnOff", "de.fhem:Respeak", "de.fhem:Wetter", "de.fhem:GetWeekday", "de.fhem:SetColor", "de.fhem:GetNumeric", "de.fhem:RhasspySetTimer", "de.fhem:GetAllOff", "de.fhem:SetAllOff", "de.fhem:Shortcuts", "de.fhem:MediaControls", "de.fhem:SetNumeric", "de.fhem:SetAllOn", "de.fhem:GetTime", "de.fhem:RhasspyGetTimer", "de.fhem:Status"], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "wakewordId": "alexa", "lang": null, "customData": "alexa", "asrConfidence": 0.99866271, "customEntities": null}
hermes/nlu/intentParsed {"input": "bitte schlage in der Wikipdia nach", "intent": {"intentName": "de.fhem:WIKI", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/intent/de.fhem:WIKI {"input": "bitte schlage in der Wikipdia nach", "intent": {"intentName": "de.fhem:WIKI", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "customData": "alexa", "asrTokens": [[{"value": "bitte", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 5, "time": null}, {"value": "schlage", "confidence": 1.0, "rangeStart": 6, "rangeEnd": 13, "time": null}, {"value": "in", "confidence": 1.0, "rangeStart": 14, "rangeEnd": 16, "time": null}, {"value": "der", "confidence": 1.0, "rangeStart": 17, "rangeEnd": 20, "time": null}, {"value": "Wikipdia", "confidence": 1.0, "rangeStart": 21, "rangeEnd": 29, "time": null}, {"value": "nach", "confidence": 1.0, "rangeStart": 30, "rangeEnd": 34, "time": null}]], "asrConfidence": 0.99866271, "rawInput": "bitte schlage in der wikipdia nach", "wakewordId": "alexa", "lang": null}
hermes/dialogueManager/continueSession {"customData": "WIKI de.fhem:ABC ","intentFilter":["de.fhem:ABC"],"sendIntentNotRecognized": true,"sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44","siteId": "wohnzimmer","text": "bitte buchstabiere"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/tts/say {"text": "bitte buchstabiere", "siteId": "wohnzimmer", "lang": null, "id": "186c6510-a97d-4f57-9323-a4ce83190a0b", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "volume": null}
hermes/tts/sayFinished {"siteId": "wohnzimmer", "id": "186c6510-a97d-4f57-9323-a4ce83190a0b", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/nlu/query {"input": "emil", "siteId": "wohnzimmer", "id": null, "intentFilter": ["de.fhem:ABC"], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "wakewordId": "alexa", "lang": null, "customData": "WIKI de.fhem:ABC ", "asrConfidence": 0.9836987, "customEntities": null}
hermes/nlu/intentParsed {"input": "e", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "e"}, "slotName": "Ch", "rawValue": "emil", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 4}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/intent/de.fhem:ABC {"input": "e", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "e"}, "slotName": "Ch", "rawValue": "emil", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 4}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "customData": "WIKI de.fhem:ABC ", "asrTokens": [[{"value": "e", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 1, "time": null}]], "asrConfidence": 0.9836987, "rawInput": "emil", "wakewordId": "alexa", "lang": null}
hermes/dialogueManager/continueSession {"customData": "WIKI de.fhem:ABC e","intentFilter":["de.fhem:ABC"],"sendIntentNotRecognized": true,"sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44","siteId": "wohnzimmer","text": "e"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/tts/say {"text": "e", "siteId": "wohnzimmer", "lang": null, "id": "9dfb0b11-a867-42ec-bad4-e8ae7f52c13f", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "volume": null}
hermes/tts/sayFinished {"siteId": "wohnzimmer", "id": "9dfb0b11-a867-42ec-bad4-e8ae7f52c13f", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/nlu/query {"input": "ida", "siteId": "wohnzimmer", "id": null, "intentFilter": ["de.fhem:ABC"], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "wakewordId": "alexa", "lang": null, "customData": "WIKI de.fhem:ABC e", "asrConfidence": 0.9393692, "customEntities": null}
hermes/nlu/intentParsed {"input": "i", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "i"}, "slotName": "Ch", "rawValue": "ida", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 3}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/intent/de.fhem:ABC {"input": "i", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "i"}, "slotName": "Ch", "rawValue": "ida", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 3}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "customData": "WIKI de.fhem:ABC e", "asrTokens": [[{"value": "i", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 1, "time": null}]], "asrConfidence": 0.9393692, "rawInput": "ida", "wakewordId": "alexa", "lang": null}
hermes/dialogueManager/continueSession {"customData": "WIKI de.fhem:ABC ei","intentFilter":["de.fhem:ABC"],"sendIntentNotRecognized": true,"sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44","siteId": "wohnzimmer","text": "i"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/tts/say {"text": "i", "siteId": "wohnzimmer", "lang": null, "id": "92472fd1-0c49-4eb6-8373-9e576c0542bd", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "volume": null}
hermes/tts/sayFinished {"siteId": "wohnzimmer", "id": "92472fd1-0c49-4eb6-8373-9e576c0542bd", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/nlu/query {"input": "nordpol", "siteId": "wohnzimmer", "id": null, "intentFilter": ["de.fhem:ABC"], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "wakewordId": "alexa", "lang": null, "customData": "WIKI de.fhem:ABC ei", "asrConfidence": 1.0, "customEntities": null}
hermes/nlu/intentParsed {"input": "n", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "n"}, "slotName": "Ch", "rawValue": "nordpol", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 7}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/intent/de.fhem:ABC {"input": "n", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "n"}, "slotName": "Ch", "rawValue": "nordpol", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 7}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "customData": "WIKI de.fhem:ABC ei", "asrTokens": [[{"value": "n", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 1, "time": null}]], "asrConfidence": 1.0, "rawInput": "nordpol", "wakewordId": "alexa", "lang": null}
hermes/dialogueManager/continueSession {"customData": "WIKI de.fhem:ABC ein","intentFilter":["de.fhem:ABC"],"sendIntentNotRecognized": true,"sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44","siteId": "wohnzimmer","text": "n"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/tts/say {"text": "n", "siteId": "wohnzimmer", "lang": null, "id": "c6d09f7d-c7fd-4094-9d35-218f893be873", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "volume": null}
hermes/tts/sayFinished {"siteId": "wohnzimmer", "id": "c6d09f7d-c7fd-4094-9d35-218f893be873", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/nlu/query {"input": "berta", "siteId": "wohnzimmer", "id": null, "intentFilter": ["de.fhem:ABC"], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "wakewordId": "alexa", "lang": null, "customData": "WIKI de.fhem:ABC ein", "asrConfidence": 1.0, "customEntities": null}
hermes/nlu/intentParsed {"input": "b", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "b"}, "slotName": "Ch", "rawValue": "berta", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 5}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/intent/de.fhem:ABC {"input": "b", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "b"}, "slotName": "Ch", "rawValue": "berta", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 5}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "customData": "WIKI de.fhem:ABC ein", "asrTokens": [[{"value": "b", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 1, "time": null}]], "asrConfidence": 1.0, "rawInput": "berta", "wakewordId": "alexa", "lang": null}
hermes/dialogueManager/continueSession {"customData": "WIKI de.fhem:ABC einb","intentFilter":["de.fhem:ABC"],"sendIntentNotRecognized": true,"sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44","siteId": "wohnzimmer","text": "b"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/tts/say {"text": "b", "siteId": "wohnzimmer", "lang": null, "id": "fa5dc6b1-d35f-4401-b88a-c28f04967738", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "volume": null}
hermes/tts/sayFinished {"siteId": "wohnzimmer", "id": "fa5dc6b1-d35f-4401-b88a-c28f04967738", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/nlu/query {"input": "ludwig", "siteId": "wohnzimmer", "id": null, "intentFilter": ["de.fhem:ABC"], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "wakewordId": "alexa", "lang": null, "customData": "WIKI de.fhem:ABC einb", "asrConfidence": 1.0, "customEntities": null}
hermes/nlu/intentParsed {"input": "l", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "l"}, "slotName": "Ch", "rawValue": "ludwig", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 6}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/intent/de.fhem:ABC {"input": "l", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "l"}, "slotName": "Ch", "rawValue": "ludwig", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 6}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "customData": "WIKI de.fhem:ABC einb", "asrTokens": [[{"value": "l", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 1, "time": null}]], "asrConfidence": 1.0, "rawInput": "ludwig", "wakewordId": "alexa", "lang": null}
hermes/dialogueManager/continueSession {"customData": "WIKI de.fhem:ABC einbl","intentFilter":["de.fhem:ABC"],"sendIntentNotRecognized": true,"sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44","siteId": "wohnzimmer","text": "l"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/tts/say {"text": "l", "siteId": "wohnzimmer", "lang": null, "id": "ecb4b1fd-f5fc-4de2-a073-57c47f5902de", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "volume": null}
hermes/tts/sayFinished {"siteId": "wohnzimmer", "id": "ecb4b1fd-f5fc-4de2-a073-57c47f5902de", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/nlu/query {"input": "a wie anton", "siteId": "wohnzimmer", "id": null, "intentFilter": ["de.fhem:ABC"], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "wakewordId": "alexa", "lang": null, "customData": "WIKI de.fhem:ABC einbl", "asrConfidence": 0.6799470000000001, "customEntities": null}
hermes/nlu/intentParsed {"input": "a", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "a"}, "slotName": "Ch", "rawValue": "a wie anton", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 11}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/intent/de.fhem:ABC {"input": "a", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "a"}, "slotName": "Ch", "rawValue": "a wie anton", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 11}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "customData": "WIKI de.fhem:ABC einbl", "asrTokens": [[{"value": "a", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 1, "time": null}]], "asrConfidence": 0.6799470000000001, "rawInput": "a wie anton", "wakewordId": "alexa", "lang": null}
hermes/dialogueManager/continueSession {"customData": "WIKI de.fhem:ABC einbla","intentFilter":["de.fhem:ABC"],"sendIntentNotRecognized": true,"sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44","siteId": "wohnzimmer","text": "a"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/tts/say {"text": "a", "siteId": "wohnzimmer", "lang": null, "id": "ab269f30-94c0-47eb-a06f-b4c6a7dce4ee", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "volume": null}
hermes/tts/sayFinished {"siteId": "wohnzimmer", "id": "ab269f30-94c0-47eb-a06f-b4c6a7dce4ee", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/nlu/query {"input": "theodor", "siteId": "wohnzimmer", "id": null, "intentFilter": ["de.fhem:ABC"], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "wakewordId": "alexa", "lang": null, "customData": "WIKI de.fhem:ABC einbla", "asrConfidence": 0.8039350000000001, "customEntities": null}
hermes/nlu/intentParsed {"input": "t", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "t"}, "slotName": "Ch", "rawValue": "theodor", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 7}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/intent/de.fhem:ABC {"input": "t", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "t"}, "slotName": "Ch", "rawValue": "theodor", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 7}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "customData": "WIKI de.fhem:ABC einbla", "asrTokens": [[{"value": "t", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 1, "time": null}]], "asrConfidence": 0.8039350000000001, "rawInput": "theodor", "wakewordId": "alexa", "lang": null}
hermes/dialogueManager/continueSession {"customData": "WIKI de.fhem:ABC einblat","intentFilter":["de.fhem:ABC"],"sendIntentNotRecognized": true,"sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44","siteId": "wohnzimmer","text": "t"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/tts/say {"text": "t", "siteId": "wohnzimmer", "lang": null, "id": "533d6e0a-4de5-4295-8824-94906a1bdb71", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "volume": null}
hermes/tts/sayFinished {"siteId": "wohnzimmer", "id": "533d6e0a-4de5-4295-8824-94906a1bdb71", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/nlu/query {"input": "theodor", "siteId": "wohnzimmer", "id": null, "intentFilter": ["de.fhem:ABC"], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "wakewordId": "alexa", "lang": null, "customData": "WIKI de.fhem:ABC einblat", "asrConfidence": 1.0, "customEntities": null}
hermes/nlu/intentParsed {"input": "t", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "t"}, "slotName": "Ch", "rawValue": "theodor", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 7}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/intent/de.fhem:ABC {"input": "t", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "de.fhem.ABC", "value": {"kind": "Unknown", "value": "t"}, "slotName": "Ch", "rawValue": "theodor", "confidence": 1.0, "range": {"start": 0, "end": 1, "rawStart": 0, "rawEnd": 7}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "customData": "WIKI de.fhem:ABC einblat", "asrTokens": [[{"value": "t", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 1, "time": null}]], "asrConfidence": 1.0, "rawInput": "theodor", "wakewordId": "alexa", "lang": null}
hermes/dialogueManager/continueSession {"customData": "WIKI de.fhem:ABC einblatt","intentFilter":["de.fhem:ABC"],"sendIntentNotRecognized": true,"sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44","siteId": "wohnzimmer","text": "t"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/tts/say {"text": "t", "siteId": "wohnzimmer", "lang": null, "id": "0fc597fb-a96f-4cc2-8e08-f9f1cc6052d3", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "volume": null}
hermes/tts/sayFinished {"siteId": "wohnzimmer", "id": "0fc597fb-a96f-4cc2-8e08-f9f1cc6052d3", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/nlu/query {"input": "suche", "siteId": "wohnzimmer", "id": null, "intentFilter": ["de.fhem:ABC"], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "wakewordId": "alexa", "lang": null, "customData": "WIKI de.fhem:ABC einblatt", "asrConfidence": 1.0, "customEntities": null}
hermes/nlu/intentParsed {"input": "suche", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "Ch", "value": {"kind": "Unknown", "value": "suche"}, "slotName": "Ch", "rawValue": "suche", "confidence": 1.0, "range": {"start": 0, "end": 5, "rawStart": 0, "rawEnd": 5}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}
hermes/intent/de.fhem:ABC {"input": "suche", "intent": {"intentName": "de.fhem:ABC", "confidenceScore": 1.0}, "siteId": "wohnzimmer", "id": null, "slots": [{"entity": "Ch", "value": {"kind": "Unknown", "value": "suche"}, "slotName": "Ch", "rawValue": "suche", "confidence": 1.0, "range": {"start": 0, "end": 5, "rawStart": 0, "rawEnd": 5}}], "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "customData": "WIKI de.fhem:ABC einblatt", "asrTokens": [[{"value": "suche", "confidence": 1.0, "rangeStart": 0, "rangeEnd": 5, "time": null}]], "asrConfidence": 1.0, "rawInput": "suche", "wakewordId": "alexa", "lang": null}
hermes/dialogueManager/endSession {"customData": "WIKI de.fhem:ABC einblatt","intentFilter": null,"sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44","siteId": "wohnzimmer","text": "einblatt steht für  \u000a\u000adie pflanzengattung spathiphyllum aus der familie der aronstabgewächse\u000adie pflanzengattung malaxis aus der familie der orchideen"}
hermes/hotword/toggleOff {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/tts/say {"text": "einblatt steht für  \n\ndie pflanzengattung spathiphyllum aus der familie der aronstabgewächse\ndie pflanzengattung malaxis aus der familie der orchideen", "siteId": "wohnzimmer", "lang": null, "id": "a3224350-cdbd-4007-95a0-0f7b962e69a2", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "volume": null}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "ttsSay"}
hermes/dialogueManager/sessionEnded {"termination": {"reason": "nominal"}, "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44", "siteId": "wohnzimmer", "customData": "WIKI de.fhem:ABC einblatt"}
hermes/hotword/toggleOn {"siteId": "wohnzimmer", "reason": "dialogueSession"}
hermes/nlu/query {"input":{"customData": "WIKI de.fhem:ABC einblatt","intentFilter": null,"sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44","siteId": "wohnzimmer","text": "Habe abgebrochen"},"sessionId": "fhem.textCommand"}
hermes/tts/sayFinished {"siteId": "wohnzimmer", "id": "a3224350-cdbd-4007-95a0-0f7b962e69a2", "sessionId": "wohnzimmer-alexa-27a31494-5fd0-40d9-9321-bac52cb18d44"}


Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, 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.

Beta-User

Zitat von: JensS am 22 Dezember 2021, 16:14:12
Sorry, hab immer noch nicht kapiert worum es genau geht - ein MQTT-Mitschnitt einer solchen Stotterei wäre interessant.
Die Timeout-Option habe ich noch nicht genutzt und in der Referenz auch nicht gesehen.
Die Timeout-Option ist auch recht "frisch" und ich bin bisher auch nicht dazu gekommen, das vollständig zu testen, daher habe ich das bisher auch eher zurückhaltend kommuniziert. Tests sind aber willkommen. Im Kern geht es darum:
- U: Hi Rhasspy!
- R: Ping!
- U: Mach das Licht an!
- R: ist erledigt
- U: Mach alle Rollläden zu
- R: gerne!
- U: Stell das Licht auf 30%
- R: OK
- U: Das war's vorerst.
- R: Ping! (Dialog fertig)

Kurz: Man muss nicht ständig das wakeword bemühen, um die nächste Anweisung loszuwerden, sondern kann alles nacheinander abarbeiten.

Leider funktioniert das wie gesagt bei mir manchmal nicht und es verhakt sich was, ohne dass ich dem bisher auf die Schliche gekommen wäre (schon alleine mangels intensiverer Suche)...
Zitat
Hier ein WIKI-Dialog - ganz ohne Stotterei:
...das sieht beeindruckend aus :) .
Server: HP-elitedesk@Debian 12, 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: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

JensS

#1017
Wäre eine Rückfrage "sonst noch was?" mit "Mach alle Rollläden zu" bzw. "nein danke" eine Option?

p.s. Das ist mit dem normalen continueSession und dem steten Wechsel zw. "alle Intents ausser" und "confirm/cancelAction" zu lösen. Sehe kein Problem darin.
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, 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.

Beta-User

Zitat von: JensS am 22 Dezember 2021, 17:13:49
Wäre eine Rückfrage "sonst noch was?" mit "Mach alle Rollläden zu" bzw. "nein danke" eine Option?
"Nein Danke" dürfte nicht das Problem sein, das ist einfach "CancelAction", und das bleibt momentan so oder so aktiviert.

Bei qualifizierten Rückfragen sind wir wieder in der "intent not recognized"-Geschichte. Woher sollte RHASSPY wissen, wie es weitergeht? (könnte man ggf. irgendwie aus statistischen usw. Daten ableiten, ja, ist aber (m.E. zu) aufwändig).

Was ggf. denkbar wäre: Ein Hinweis, dass der Dialog noch offen ist. Hat aber den Nachteil, dass die Rückmeldung dadurch in jedem Fall länger wird (eine Bestätigung sollte unabhängig davon erfolgen), und es evtl. nur eine Gewohnheitsfrage ist: Wem klar ist, dass der Dialog (kurz) noch offen ist, wird entweder nichts mehr sagen oder aktiv zu machen... Daher habe ich das erst mal zurückgestellt, zumal ich auch nicht wußte, ob diese Art der Dialogfortführung überhaupt "gefällt"...
Server: HP-elitedesk@Debian 12, 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: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

JensS

#1019
Mit einem Attribut "continue = 1" könnte man auswerten, ob der Nutzer die eine oder andere Variante bevorzugt.
EDIT: In die Response-Sub müsste dann eine Weiche, welche den Hash entweder abschließend verarbeitet oder den Response-Text + "Sonst noch was?" für den Wert "text:" an die Dialog-Sub übergibt.
CancelAction müsste direkt durchgestellt werden.
Du hast dafür bestimmt schon eine Lösung - war mal wieder zu faul, das Modul durchzustöbern...

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, 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.