NEWS
Das Ende einer Alexa Sprachausgabe triggern
-
Gibt es eine Möglichkeit das Ende eines variablen Text den Alexa ausspricht per Blockly Script zu triggern?
Beispiel: Ich möchte mir das Wetter von Wetter.com ansagen lassen und im Anschluß daran die Werte meiner Wettersensoren ansagen lassen.
Da aber der Text von Wetter.com variabel ist und somit auch die Dauer der Ansage variabel ist muß ich wissen, wann die Ansage von Wetter.com zu Ende ist um dann die Ansage meiner Sensorwerte zu starten.Es gibt aber auch noch andere Szenarien in denen es nützlich sein kann das Ende einer Alexa Sprachausgabe zu kennen.
Ich habe diese Frage auch bei Github gestellt und Apollon77 hat mir folgendes geantwortet:
Ja und nein... EInzige Möglichkeit ist über message (siehe https://github.com/Apollon77/ioBroker.alexa2#send-alexa-device-command-sequences-via-messages) eine sequenz an nachrichten sprechen zu lassen, dann regelt Amazon das "nacheinander". Um sowas mal zu machen am besten im Forum mal fragen.Das was in dem Link steht ist vermutlich Java Script und Java Script kann ich leider nicht.
Vielleicht gibt es ja eine Möglichkeit das in Blockly einzubinden.
Die Möglichkeit die Anzahl der gesprochenen Zeichen zu ermitteln und anhand der Anzahl an Zeichen einen variablen Timeout in Blockly zu setzten ist nicht sonderlich befriedigend. Es wäre deshalb schön, wenn man die im Link beschriebene Möglichkeit in Blockly umsetzten könnte.
Vielen Dank in voraus
Stefan -
@stefan-wilke
Ich habe nur mal kurz was probiert...in diesem "kurzem" Beispiel sagt Alexa alles brav nacheinander an (alles ohne Trigger, also nur zum testen beim Blockly start), auch wenn die Texte unterschiedlich lang sind. Vielleicht meinst Du sowas in der Art...? Probleme kann es aber bei der Zeichenbegrenzung von speak geben. Wenn der Text zu lang wird, also über der Zeichenbegrenzung liegt, dann erfolgt gar keine Ansage. (ließe sich mit einem Semikolon lösen, aber dafür müßte man tatsächlich wieder Zeichen zählen)EDIT:
geht auch ohne die Liste (nur mit dem Textbaustein)
javascript.0 (333) script.js.99_Test.Alexa-Nacheinander: Das Wetter.de sagt für die nächste Stunde: Bedeckt mit leichtem Regen. Die Aussentemperatur beträgt aktuell: 11.2 Grad. Es ist jetzt 16:21
-
@dslraser Danke für die schnelle Antwort aber das ist nicht ganz was ich mit Frage gemeint habe.
Vielleicht habe ich auch meine Frage nicht genau beschrieben.
Ich habe einige Alexa Routinen unter anderem die Routine Wetter Würselen die nichts anderes macht als "frage wetter.com wie ist das Wetter in Würselen.
Diese Routine rufe ich im Blockly Script mit steuere Wetter Würselen mit wahr auf.
Alexa spricht den Text aber erst wenn der Wetterbericht vollständig angesagt wurde steht in dem Datenpunkt answerText der Text, der gesprochen wurde und erst dann könnte ich diesen Text mit anderen Texten zu einem zusammenfügen.Ich befürchte, das mir nichts anderes übrig bleibt als zuerst in meinen variablen Texten die Anzahl an Zeichen zu ermitteln und anhand der Zeichen mit variablen Timeouts zu arbeiten und dann erst die Alexa Routine zu starten.
-
@stefan-wilke
kannst Du denn nicht Deine Sensordaten in der Routine direkt hinterher einfügen...? -
@dslraser Deine Idee ist vom Prinzip her gut aber leider kommt jetzt das ABER.
Bei deiner Alexa Routine führt Alexa nicht die Routine aus sondern startet den Wetter.com Skill mit "frage Wetter punkt com wie ist das Wetter in Würselen"
Ich habe gerade deine Routine genau so auf meinen Smartphone erstellt und Alexa sagt mir tatsächlich das Wetter von Wetter.com an.
Wenn man aber anstatt den Text "frage Wetter punkt com wie ist das Wetter in Würselen" den Text "Wetter Würselen" einträgt, dann wir der normale Alexa Wetterbericht vorgelesen.
Leider kann man bei Alexa Routinen unter Aktion hinzufügen nur einmal eine Benutzerdefinierte Aktion ausführen lassen.