[Amazon Alexa] Nachfragen durch Alexa an den User

Begonnen von balli1187, 15 Februar 2022, 10:00:21

Vorheriges Thema - Nächstes Thema

balli1187

Mahlzeit,

ich nutze das Alex wie auch das Echodevice Modul zu Interaktion mit FHEM.
Gleich auch nochmal ein großes Dankeschön an die Entwickler!!!

Ich suche nach einer Möglichkeit, dass Alexa mir eine Frage stellt und die Antwort abwartet und weiter verabeitet.
Nativ fragt sich ja nach, wenn sie bspw. ein Kommando nicht richtig verstanden hat. Lässt sich das noch irgendwie anders triggern?
Bisher mache ich nur einfach Eingaben (Alexa, schalte dies/das) oder einfache Ausgaben (per echodevice und speak).

der User @rabehd hatte hier etwas von "Rückfragen versenden" geschrieben aber das konnte ich bisher noch nicht nachvollziehen.

Da ich eher nicht so der Morgenmensch bin, würde ich die Interaktion an einigen Stellen gern auf ein Minimum (Ja/nein) reduzieren ;)
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

MadMax-FHEM

Eventuell hilft hier der Custom Skill.

Bzw. prinzipiell sollte es damit oder einem "angelehnten Mechanismus" gehen.

Allerdings ist die Anleitung bzgl. Custom Skill im Wiki sehr "outdated", bzw. die Prinzipien sind wohl noch dieselben aber auf Amazon-Seite hat sich (wohl) einiges geändert bzw. mindestens die Screenshots etc. sind definitiv anders...

Und seit es Routinen gibt und ich (für mich) entschieden habe was ich per Sprache (wie) steuern will und was automatisch gehen soll (weil das ist mein Ziel: möglichst viel/alles automatisch ohne überhaupt was tun zu müssen: auch keine "Spracheingabe")...
...habe ich meine Custom Skills "schlafen gelegt" (verm. so, dass ich sie nicht mal mehr wirklich aufwecken kann ;-) )...

Ansonsten kann man ja auf Amazon Seite (Skills ;) also "Knowledge Skills" vorausgesetzt) sowas auf jeden Fall programmieren, manche Skills machen das ja schon, also mit Rückfragen...
...ob man das im/mit Custom Skill einfach "nutzen" kann (also "sowas" schon "eingebaut" ist: keine Ahnung) oder noch was implementiert werden muss: keine Ahnung...

Auf jeden Fall interessant... :)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

balli1187

Hallo Joachim,

Der Custom Skill oder ähnliches, was mit "zu viel" Programmieraufwand einhergeht, ist für mich da eher keine Option. Aufwand/Nutzen stimmt dann einfach nicht, da ich wahrscheinlich keine essentiellen Funktionen darüber abbilden werde.
Generell geht es mir da so wie dir - das meiste soll automatisch ablaufen, ohne das ich etwas dazu tun muss. Smart Home bedeutet ja nicht, ne schicke App zu haben oder eine wohlklingende elektronische Assistentin.

Hin und wieder wäre es aber ganz reizvoll, nach einer Meldung gleich reagieren zu können.
Ohne jetzt eine ausgiebige Sicherheitsdiskussion anzufangen aber sowas wie "Es hat geläutet. Soll ich die Tür öffnen?......" "Ja".  Wie gesagt - nur um das Prinzip nochmal darzustellen.

im echodevice thread wurden auch die blueprints reingeworfen aber auch damit hab ich noch keine Erfahrungen.
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

MadMax-FHEM

Bzgl. Nachfragen o.ä. also dass das "nett" wäre da bin ich voll "bei dir" ;)

Aber ich denke es wird nur mit dem Aufwand des Custom Skills (entweder out-of-the-box oder auch da noch nur mit Erweiterung) gehen...
...oder selbst einen Skill erstellen und mit fhem verbinden...

Außer: Amazon ändert was und macht es "einfach" zugänglich und zwar schon/auch für den SmartHome-Skill (auf den ja alexa-fhem Connector aufsetzt)...

D.h. das wäre eher auch etwas, was "man" Amazon "fragen" sollte...

Es gibt doch in der App die Möglichkeit "Feature-Wünsche" zu hinterlassen (gab es zumindest mal)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

rabehd

Wie wäre es mit einem konkreten Beispiel?
Da könnte man mögliche Lösungen diskutieren.

Auch funktionierende Lösungen kann man hinterfragen.

MadMax-FHEM

Zitat von: rabehd am 15 Februar 2022, 13:49:39
Wie wäre es mit einem konkreten Beispiel?
Da könnte man mögliche Lösungen diskutieren.

Luftfeuchte im Bad steigt.
(Ich dusche und habe vergessen den Lüfter einzuschalten)

Alexa: soll ich den Lüfter einschalten?
Ich: ja
Alexa schaltet den Lüfter ein...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

rabehd

Zitat von: MadMax-FHEM am 15 Februar 2022, 13:51:53
Luftfeuchte im Bad steigt.
(Ich dusche und habe vergessen den Lüfter einzuschalten)

Alexa: soll ich den Lüfter einschalten?
Ich: ja
Alexa schaltet den Lüfter ein...

Gruß, Joachim

Meine Idee:
Event Luftfeuchte größer als löst Ansage aus und setzt eine Variable/Dummy für eine bestimmte Zeit.
Event voice wird ausgewertet, wenn Text passt und Variabel noch gesetzt ist, dann Aktion

Geht sicher auch anders.
Auch funktionierende Lösungen kann man hinterfragen.

MadMax-FHEM

#7
Zitat von: rabehd am 15 Februar 2022, 14:00:22
Meine Idee:
Event Luftfeuchte größer als löst Ansage aus und setzt eine Variable/Dummy für eine bestimmte Zeit.
Event voice wird ausgewertet, wenn Text passt und Variabel noch gesetzt ist, dann Aktion

Geht sicher auch anders.

Ja das habe ich in dem anderen Thread schon verstanden... ;)

ABER: man müsste ja mindestens sagen: "Alexa ja" und dann fraglich was Alexa mit der "Ansage" ja macht ;)

Ist nicht das was ich hierunter verstehe...

Mich hat ja schon "genervt", dass man beim Custom Skill immer erst mal den Custom Skill "aktivieren" muss:

Alexa sag Wohnung mach dies mach das usw.
(Wohnung war eines meiner Custom Skill "Namen" oder wie immer das genau genannt wurde / ich hatte verschiedene, damit eben zumindest ein wenig Sprachfluss ohne überflüssige Dinge möglich war)

Aber das ist ein generelles "Design Problem" von Amazon.

Google braucht "sowas" nicht, selbst wenn die Geräte/Möglichkeiten/Features/... von verschiedenen "Stellen" (Geräten, Firmen, ... -> bei Amazon wären das Skills) stammen...

Also das erste was bei einem solchen "Fluss" stört ist/wäre, dass man eben das "Wakeword" braucht.
Ohne das macht Alexa ja nichts.

Anders eben bei Skills, die das implementiert haben.
Die fragen nach und warten einfach auf eine (kurze) Antwort...

Ebenso wie das angesprochene "Szenario", wenn Alexa mal was nicht genau verstanden hat, dann frägt sie nach und wartet auf Antwort (ohne Wakeword-Aktivierung)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

balli1187

Zitat von: rabehd am 15 Februar 2022, 14:00:22
Meine Idee:
Event Luftfeuchte größer als löst Ansage aus und setzt eine Variable/Dummy für eine bestimmte Zeit.
Event voice wird ausgewertet, wenn Text passt und Variabel noch gesetzt ist, dann Aktion

Geht sicher auch anders.

Genau wie es Joachim beschreiben hat, ist hier wenig Sprachfluss vorhanden bzw. wenig Interaktion im Sinne von beidseitigen Reaktionen auf die "Unterhaltung".

Bei deiner Lösung bleibt für mich auch die Frage, wie die Antwort "Ja" an Alexa kommt. Das geht halt nur über die Wakewords. Das stört mich im Nomalfall nicht aber die Idee hinter diesem Thread war schon für "Kleinigkeiten" (Oder relevanten Funktionen, auf die ich eine Rückmeldung geben will) darauf verzichten zu können.

Ansonsten kann man das Beispiel auch so handhaben:
Alexa: "Die Luftfeuchtigkeit ist sehr hoch. [Denk dran den Lüfter einzuschalten.]"
Ich: "Alexa, Lüfter an."

Wenn aber eine besseres "Miteinander" im Sinnen von echten Antworten auf Fragen möglich wären, würde es mir besser gefallen. Ich hatte ein paar Hoffnungen, dass dies vielleicht über versteckte Funktionen in Routinen möglich wäre oder dergleichen.

Der Custom Skill ist aus den von Joachim genannten Gründen keine Option für mich. Ein doppeltes Wakeword gefällt mir einfach sprachlich nicht und hat geringen WAF.
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

locodriver

Ich probiere hier

https://forum.fhem.de/index.php/topic,126179.msg1207993.html#msg1207993

in ähnlicher Weise herum, allerdings bin ich noch nicht voran gekommen. Es hat aber nicht die oberste Prio bei mir - in den nächsten Tagen habe ich nicht genügend Zeit, mich damit zu beschäftigen...
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

MadMax-FHEM

Zitat von: locodriver am 15 Februar 2022, 17:11:31
Ich probiere hier

https://forum.fhem.de/index.php/topic,126179.msg1207993.html#msg1207993

in ähnlicher Weise herum, allerdings bin ich noch nicht voran gekommen. Es hat aber nicht die oberste Prio bei mir - in den nächsten Tagen habe ich nicht genügend Zeit, mich damit zu beschäftigen...

Ist aber ja ein (etwas) anders gelagertes Thema...

Hier geht es ja um Reaktion "ohne vorherige Ansprache"...

(für dein "dortiges Problem" was ja eher "DOIF-Problem/-Frage" ist oder eben auf Module "umgeleitet" wird/werden könnte, die eben genau für "Sprach-/Satz-Auswertung" geschrieben wurden: TEERKO, Babble, Talk2Fhem, ... Hatte ich ja bereits "geantwortet" ;)  )

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

#11
Bin heute zufällig hierrüber gestolpert: https://www.youtube.com/watch?v=UQkeaxrX7D8

Werde ich mir mal ansehen...

EDIT: @Andre (justme1968), falls du hier (zufällig) mitliest/drüber stolperst... Wäre das https://www.smarthomelab.ca/actionable-notifications-from-alexa-to-home-assistant/ mit einem fhem-Custom Skill auch möglich? Sollte doch eigentlich gehen? Es gibt ja "sowas" wie das https://github.com/custom-components/alexa_media_player auch in fhem -> Echodevice-Modul (läuft bei mir). Dann noch einen Custom Skill (habe ich auch noch irgendwo, sofern die noch laufen ;)  Wenn nicht, sollte doch das von hier https://github.com/keatontaylor/alexa-actions/blob/master/skill-manifests/locale_de_de.json auch einfach passen, es geht ja nur um das "Model" für die "actionable-notifications", oder? Dann nat. das python was auf AWS läuft. Da müsste das hier https://github.com/keatontaylor/alexa-actions/blob/master/lambda/lambda_function.py nat. angepasst werden, damit statt Homeassistant fhem "gerufen" wird. Den Code sollte es doch schon geben/gibt es doch schon!? Was mir (noch) nicht klar ist, wie wird die "Abfrage" getriggert (gut ja Text abspielen ist einfach aber wie wird dann "eingeschaltet", dass Alexa auf eine Antwort ala "Ja"/"Nein" wartet und v.a. wie erkenne ich [in fhem] wie zu welcher Aktion [da gibt es ja wohl eine ID] dann die Antwort gehört?). Was mich bei Custom Skills (bislang) immer gestört hat, war, dass dieser erst immer noch "aktiviert" werden musste, also: Alexa sag der Wohnung mach dies oder das (oder was auch immer der "Startsatz"/"-Wort" war). Aber wenn das hier mit einem Custom Skill ginge: :) :) :) :)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

balli1187

Klasse, Joachim. Genau sowas hatte ich im Sinn.

Im Video ist aber leider zur Umsetzung nicht allzu viel zu sehen. Werd bei Gelegenheit mal den Blog anschauen.
Bisher hab ich keinen Custom Skill aus oben genannten Gründen.
Daher sorry falls die Frage schon x mal kam: Kann ich custom skill und smart Home skill parallel betreiben. Ich würde den Custom skill, dann vorerst nur für diese Geschichte verwenden wollen.
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

MadMax-FHEM

Zitat von: balli1187 am 11 März 2022, 11:10:18
Daher sorry falls die Frage schon x mal kam: Kann ich custom skill und smart Home skill parallel betreiben. Ich würde den Custom skill, dann vorerst nur für diese Geschichte verwenden wollen.

Ja, geht (ging zumindest) parallel.

Sogar mit dem Connector zusammen.

Du musst halt in die config.json von alexa-fhem die "Credentials" deines Custom Skills eintragen, den selber auf WAS angelegten Custom Skill verknüpfen/aktivieren und nat. Port 3000 öffnen und weiterleiten zu alexa-fhem...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

plopes9000

With the code below in 37_echodevice I can now call a skill just with the skill id - no other setup required.

set ECHO_XYZ run_skill amzn1.ask.skill.9525f216-0058-4d37-bd0c-af5cabaa6a57

} elsif ($type eq "run_skill") {

                #Allgemeine Veariablen
                $SendUrl   .= "/api/behaviors/preview";
                $SendMetode = "POST";

                my $sequenceJson;

                # Sonderzeichen entfernen
                $SendData =~s/"/'/g;

                $SendData = '{"behaviorId":"PREVIEW","sequenceJson":"{\"@type\":\"com.amazon.alexa.behaviors.model.Sequence\",\"startNode\":{\"@type\":\"com.amazon.alexa.behaviors.model.SerialNode\",\"nodesToExecute\":[{\"@type\":\"com.amazon.alexa.behaviors.model.OpaquePayloadOperationNode\",\"type\":\"Alexa.Operation.SkillConnections.Launch\",\"operationPayload\":{\"targetDevice\":{\"deviceSerialNumber\":\"'.$hash->{helper}{".SERIAL"}. '\",\"deviceType\":\"'.$hash->{helper}{DEVICETYPE}.'\"},\"locale\":\"en-UK\",\"customerId\":\"' . $hash->{IODev}->{helper}{".CUSTOMER"} .'\",\"connectionRequest\":{\"uri\":\"connection://AMAZON.Launch/'.$SendData.'\",\"input\":{}}}}]}}","status":"ENABLED"}';
               
                $SendDataL  = $SendData;
}



Perhaps even better is to combine the announcement with calling the skill like below.
The code below does already work, just that atm the values are hardcoded.


elsif ($type eq "announcement") {

                #Allgemeine Veariablen
                $SendUrl   .= "/api/behaviors/preview";
                $SendMetode = "POST";

                my $sequenceJson;

                # Sonderzeichen entfernen
                $SendData =~s/"/'/g;

                my $announcement="<speak>my announcement goes here</speak>";
                my $skill_id="amzn1.ask.skill.9525f216-0058-4d37-bd0c-af5cabaa6a57";
                my $event_id="my_callback_id";
                my $skill_args='\"eventId\":\"'.$event_id.'\",\"answers\":[\"Yes\",\"No\"]';
                $SendData = '{"behaviorId":"PREVIEW","sequenceJson":"{\"@type\":\"com.amazon.alexa.behaviors.model.Sequence\",\"startNode\":{\"@type\":\"com.amazon.alexa.behaviors.model.SerialNode\",\"nodesToExecute\":[{\"@type\":\"com.amazon.alexa.behaviors.model.OpaquePayloadOperationNode\",\"type\":\"Alexa.DeviceControls.Volume\",\"operationPayload\":{\"deviceSerialNumber\":\"' . $hash->{helper}{".SERIAL"} . '\",\"customerId\":\"' . $hash->{IODev}->{helper}{".CUSTOMER"} .'\",\"locale\":\"de-DE\",\"value\":\"'.$SpeakVolume.'\",\"deviceType\":\"' . $hash->{helper}{DEVICETYPE} . '\"}},{\"@type\":\"com.amazon.alexa.behaviors.model.OpaquePayloadOperationNode\",\"type\":\"AlexaAnnouncement\",\"operationPayload\":{\"expireAfter\":\"PT5S\",\"content\":[{\"locale\":\"\",\"display\":{\"title\":\"FHEM\",\"body\":\"'.$announcement.'\"},\"speak\":{\"type\":\"ssml\",\"value\":\"' . $announcement . '\"}}],\"customerId\":\"' . $hash->{IODev}->{helper}{".CUSTOMER"} .'\",\"target\":{\"customerId\":\"' . $hash->{IODev}->{helper}{".CUSTOMER"} .'\",\"devices\":[{\"deviceSerialNumber\":\"' . $hash->{helper}{".SERIAL"} . '\",\"deviceTypeId\":\"' . $hash->{helper}{DEVICETYPE} . '\"}]}}},{\"@type\":\"com.amazon.alexa.behaviors.model.OpaquePayloadOperationNode\",\"type\":\"Alexa.DeviceControls.Volume\",\"operationPayload\":{\"deviceSerialNumber\":\"' . $hash->{helper}{".SERIAL"} . '\",\"customerId\":\"' . $hash->{IODev}->{helper}{".CUSTOMER"} .'\",\"locale\":\"de-DE\",\"value\":\"'.ReadingsVal($name , "volume", 50).'\",\"deviceType\":\"' . $hash->{helper}{DEVICETYPE} . '\"}},{\"@type\":\"com.amazon.alexa.behaviors.model.OpaquePayloadOperationNode\",\"type\":\"Alexa.Operation.SkillConnections.Launch\",\"operationPayload\":{\"targetDevice\":{\"deviceSerialNumber\":\"'.$hash->{helper}{".SERIAL"}. '\",\"deviceType\":\"'.$hash->{helper}{DEVICETYPE}.'\"},\"locale\":\"en-UK\",\"customerId\":\"' . $hash->{IODev}->{helper}{".CUSTOMER"} .'\",\"connectionRequest\":{\"uri\":\"connection://AMAZON.Launch/'.$skill_id.'\",\"input\":{'.$skill_args.'}}}}]}}","status":"ENABLED"}';
                $SendDataL  = $SendData;
}


Is this making any sense?

Next would be to receive the input arguments in the lambda function, and send back to fhem the response ... this is the part I'm less sure how to tackle.

Also not keen on opening any port to the internet ... keep hoping there is a way to use the existing echodevice or alexa connector connection instead of opening a port.

Cheers,
Paulo