Ankündigung

Einklappen
Keine Ankündigung bisher.

Alexa Custom Skill für EDOMI (LBS 19000646 und 19000647)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • jonofe
    antwortet
    Zitat von junibart Beitrag anzeigen

    Spricht was dagegen, in der Alexa.php dem "outputSpeech" statt "plaintext" eher "SSML" zuzuweisen und im ResponseText (E8) SSML-Tags (z.B. <say-as interpret-as="digits"> %1% </say-as> ) zuzulassen? Dann wäre man völlig frei in der Gestaltung der Aussprache.
    das könnte man konfigurierbar machen, so dass man es individuell für jeden Command Validator einstellen kann. werde es mal prüfen und dann ins nächste Update mit reinbringen.

    Einen Kommentar schreiben:


  • junibart
    antwortet
    Zitat von jonofe Beitrag anzeigen
    Alle diese von dir aufgelisteten ungewöhnlichen Ansagen liegen wie schon von dir vermutet an Alexa und nicht am Skill. ggf. kann man im Skill aber noch ein paar sinnvolle mappings machen.
    Spricht was dagegen, in der Alexa.php dem "outputSpeech" statt "plaintext" eher "SSML" zuzuweisen und im ResponseText (E8) SSML-Tags (z.B. <say-as interpret-as="digits"> %1% </say-as> ) zuzulassen? Dann wäre man völlig frei in der Gestaltung der Aussprache.

    Nur so eine Idee- bin schon total happy mit dem aktuellen Stand.

    Gunnar

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Du kannst das sehr gut in der Amazon Developer Console testen. Und zwar unter "Test" und dort bei "Voice Simulator". Damit kannst du am PC hören, wie Alexa einen entsprechenden Befehl ausspricht. Alle diese von dir aufgelisteten ungewöhnlichen Ansagen liegen wie schon von dir vermutet an Alexa und nicht am Skill. ggf. kann man im Skill aber noch ein paar sinnvolle mappings machen.

    EDIT: Vielleicht ein LBS, der eine beliebige rationale Zahl in einen String umwandelt.
    Zuletzt geändert von jonofe; 13.02.2017, 22:06.

    Einen Kommentar schreiben:


  • junibart
    antwortet
    So, noch ein bisschen weiter gespielt:

    Die Ansagen von Alexa kommen manchmal etwas ungewöhnlich daher.

    "Die Aussentemperatur beträgt minus zwei {Pause} fünf Grad Celsius" (an E7 lag der wert -2.5 an).
    Vermutlich muss man die Dezimalzahl erst auseinandernehmen und an passender Stelle den Text "Komma" einfügen?


    "Das WLan-Passwort lautet eins eins eins eins eintausendeinhundertelf Durchwahl eins eins eins eins eintausendeinhundertelf"
    (an E7 lag 1111 1111 1111 1111 bzw. mein richtiger WLan-Schlüssel)

    Gibt es eigentlich "Formatierungsregeln" für Alexas Aussprache, also z.B. wie man einzelne Ziffern und große Zahlen erzwingen kann? Ein Punkt scheint z.B. eine kurze Pause zu erzeugen.

    EDIT: Gerade gefunden: Es gibt eine Beschreibungssparache (SSML), mit der man das modellieren kann. Wird das unterstützt?
    (https://developer.amazon.com/public/...ssml-reference)

    Muss jetzt nur ein wenig kürzer treten, meine Gattin ist schon etwas angefressen von der Konkurrenz im Haus. Am WE hab ich sturmfrei... spätestens dann gehts weiter.

    Grüße,

    Gunnar
    Zuletzt geändert von junibart; 13.02.2017, 21:50.

    Einen Kommentar schreiben:


  • junibart
    antwortet
    Zitat von jonofe Beitrag anzeigen
    In alexa.php werden am Anfang ja die $targets definiert.
    Dort ist nun bei mindestens einem Eintrag (die meisten haben vermutlich nur ein Target definiert) der Array-Eintrag 'status' => true zu definieren.
    Genau das war es. Jetzt läuft es.

    EDIT:
    Auch die Statusabfragen funktionieren. Wunderbar!


    Besten Dank!

    Gunnar
    Zuletzt geändert von junibart; 13.02.2017, 20:54.

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Glaube ich habe eine Änderung vergessen:

    In alexa.php werden am Anfang ja die $targets definiert.
    Dort ist nun bei mindestens einem Eintrag (die meisten haben vermutlich nur ein Target definiert) der Array-Eintrag 'status' => true zu definieren.
    Das ist dann das Target (Verbindung zum Alexa Receiver LBS), über die mögliche Statusantworten erwartet werden.


    PHP-Code:
    $targets = array(
        array(
            
    'ip' => '192.168.0.###'// IP des EDOMI Servers
            
    'protocol' => 'tcp'// muss "tcp" sein
            
    'port' => ####, // port des Alexa Receivers LBS
            
    'status' => true // true wenn von diesem EDOMI Server die Antworten auf Statusabfragen kommen sollen
        
    )
    ); 

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von junibart Beitrag anzeigen
    Noch eine Sache:
    In der Alexa.php auchen in dem zu editierenden Abschnitt in Version 0.3 noch folgende Zeilen auf:

    PHP-Code:
    $userIdValidation 'amzn1.ask.account.AE4DXT...';
    $userIdValidation false
    Sind die relevant?
    Das kann so bleiben. Durch das FALSE bleibt die User Validierung ausgeschaltet.


    Zitat von junibart Beitrag anzeigen
    Alle vorher konfigurierten Befehle funktionieren- Schalten und Rolläden fahren wird ausgeführt, es kommt jedoch kein Antworttext mehr. Stattdessen eine weile hektisches blaues flimmern und dann "Der angeforderte Skill braucht zu lange für die Antwort."

    Die Antworttext-Eingänge sind bis auf einen leer, beim Rolladen hatte ich testhalber "Jawoll" eingetragen... auch da kam nichts.
    Kann aber auch an einem Fehler meinereits liegen, ich geh morgen nochmal alles genau durch.
    Die Antworteingänge sind ausschließlich für Statusanfragen relevant. Dazu muss auf jeden Fall ein Statuswert an E7 vorhanden sein.
    Die normale Bestätigung von Schaltbefehlen erfolgt in alexa.php und sollte eigentlich immer "Okay" lauten, solange $debug in alexa.php auf FALSE steht.
    Wenn du den Status eines Rolladen abfragen willst, dann brauchst deine Positions-GA auf E7 (0-255). Mehr ist nicht notwendig. Dann sollte Alexa mit dem Standardsatz "Die Position ist XX Prozent." antworten.

    Als Debug-Info ist folgender Befehl ganz hilfreich:

    Code:
    tail -f /usr/local/edomi/www/data/log/alexa.log

    Einen Kommentar schreiben:


  • junibart
    antwortet
    Noch eine Sache:
    In der Alexa.php auchen in dem zu editierenden Abschnitt in Version 0.3 noch folgende Zeilen auf:

    PHP-Code:
    $userIdValidation 'amzn1.ask.account.AE4DXT...';
    $userIdValidation false
    Sind die relevant?

    Ansonsten eine kurze Zwischenmeldung für heute:

    Alexa Skill aktualisiert, EDOMI-LBS in v0.3 eingespielt, sonstige Konfiguration beibehalten.

    Alle vorher konfigurierten Befehle funktionieren- Schalten und Rolläden fahren wird ausgeführt, es kommt jedoch kein Antworttext mehr. Stattdessen eine weile hektisches blaues flimmern und dann "Der angeforderte Skill braucht zu lange für die Antwort."

    Die Antworttext-Eingänge sind bis auf einen leer, beim Rolladen hatte ich testhalber "Jawoll" eingetragen... auch da kam nichts.
    Kann aber auch an einem Fehler meinereits liegen, ich geh morgen nochmal alles genau durch.
    Gute Nacht,

    Gunnar

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von junibart Beitrag anzeigen


    Die Lösung ist, bei einem Update des skills bei Amazon *zuerst* die Custom Slot Types zu erfassen, und erst dann die Intents und Utterances durch die neuen Versionen zu ersetzen.
    Na es hatte ja schon einen Hintergrund, dass ich oben geschrieben hatte, dass man mit den Custom Slots anfangen soll. Das liegt daran, dass bei jeder Änderung eines Slot Types der Skill neu gebaut wird und eine semantische Prüfung stattfindet.

    Vielleicht sollte ich es noch expliziter formulieren

    Einen Kommentar schreiben:


  • junibart
    antwortet
    Zitat von jonofe Beitrag anzeigen
    Syntaxfehler wird korrigiert. Danke für den Hinweis.

    Ist das Problem mit den Slots beim Anleger neuer oder beim Anpassen bestehender passiert?
    Taucht ganz unten auf der Seite ein Fehler auf? (unter den Utterances)
    Ja, es taucht eine Fehlermeldung auf.
    Die Lösung ist, bei einem Update des skills bei Amazon *zuerst* die Custom Slot Types zu erfassen, und erst dann die Intents und Utterances durch die neuen Versionen zu ersetzen. Damit lief das Update des Skills nun durch.
    Mal sehen, ob Edomi jetzt immer noch auf Alexa hört ;-)

    Grüße,
    Gunnar

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Syntaxfehler wird korrigiert. Danke für den Hinweis.

    Ist das Problem mit den Slots beim Anleger neuer oder beim Anpassen bestehender passiert?
    Taucht ganz unten auf der Seite ein Fehler auf? (unter den Utterances)

    Einen Kommentar schreiben:


  • junibart
    antwortet
    Zitat von jonofe Beitrag anzeigen
    Ich habe jetzt endlich ein paar freie Stunden am Wochenende dazu genutzt das Update zum EDOMI Alexa Custom Skill fertigzustellen und grob zu dokumentieren.
    ...
    Ich freue mich wie immer über euer stets konstruktives Feedback...
    Viele Spaß ...
    Hi,

    vielen Dank für das Update! Hab mich gleich mal darangemacht.
    Der erste Stolperstein lauerte bei den Intents, da ist irgendwo bei Zeile 311 ein Komma zuviel:

    Zwischenablage01.jpg
    Momentan scheitere ich daran, die Custom Slot Types zu erweitern- ich kann sie zwar erfassen, aber nach dem Speichern wird nicht die Übersicht über all diese Slot Types angezeigt, sondern nur meine Eingbe mit aktivem "cancel"-Button...

    Hat jemand eine Idee?


    Gunnar

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Ich habe jetzt endlich ein paar freie Stunden am Wochenende dazu genutzt das Update zum EDOMI Alexa Custom Skill fertigzustellen und grob zu dokumentieren.
    Bevor ich die LBS freischalte, wollte ich noch eine kurze Vorgehensweise für das Update darstellen:
    1. LBS19000646 Alexa Receiver downloaden (enthaltene ZIP Datei entpacken. alexa.php/alexa.intent/alexa.slots/alexa.utterances/PDF Doku/PNGs)
    2. Wenn der Custom Skill schon im Einsatz ist, dann weiter mit Schritt 5.
    3. Gemäß enthaltener PDF Doku einen EDOMI Alexa Custom Skill anlegen
    4. Wenn ihr nach PDF vorgegangen seid und an den entsprechenden Stellen auch die Inhalte des Updates 0.3.0 verwendet habt, dann seid ihr eigentlich jetzt fertig.
    5. Zunächst das Update des Interaction Models vornehmen
      1. Dazu MUSS mit dem Anlegen und Anpassen der custom slots begonnen werden (alexa.slots im angehängten ZIP File des LBS19000646) bevor die Intents und Utterances aktualisiert werden. Dies muss leider manuell erfolgen. Da auch einige custom slots ergänzt wurden, bitte genau überprüfen.)
      2. Jetzt Intents und Utterances updaten. Dazu jeweils die Daten aus den Dateien alexa.intent und alexa.utterances in das Intent Model in der Amazon Developer Console kopieren.
      3. Wenn alles richtig gemacht wurde, dann sollte nach klicken auf "SAVE" das Update des Custom Skills auf Seiten Amazons laufen.
    6. Jetzt das Update des Custom Skills einspielen. Dazu die Dateil alexa.php an die richtig Stelle auf eurem Heimserver kopieren, so dass dies zu euren Einstellungen in der Amazon Developer Console passt.
    7. Jetzt die beiden LBS 19000646 und 19000647 in EDOMI einspielen.
    8. Nun kann man mit einem schon bestehenden Schaltbefehl testen, ob zumindest das noch funktioniert, was auch sschon vor dem Update funktionierte.
    Aber das Ziel war natürlich, dass noch mehr geht als vorher. Folgendes ist an Funktionalität dazugekommen:

    - Rolläden Positionsbefehle
    - Licht Dimmwerte anspringen
    - Licht Dimmwerte abfragen
    - Rolläden Postions Statusabfragen
    - Licht Statusabfragen
    - Licht Farbstatusabfragen
    - Allgemeine Statusabfragen
    - Individualisierte Antworten durch Alexa

    Beispiel:
    Alexa, starte EDOMI und fahre die Rolläden im Büro auf 70%
    Antwort: Okay.

    Dazu benötigt man einen Alexa Command Validator LBS mit folgenden Eingängen:
    E1: Verbindung zum Intent Ausgang des Alexa Receiver
    E2: 8
    E3: "rolläden position"
    E4: leer
    E5: "Büro"
    Den Ausgang A2 verwedent man dann um die Position der entsprechenden Rolläden anzufahren (1 Byte Positions GA)

    Alexa, frage EDOMI nach dem Status des Licht(s) im Büro.
    Antwort (Bsp.): Die Deckenleuchte ist eingeschaltet und die Schreibtischleuchte ist ausgeschaltet.

    Dazu benötigt man einen Alexa Command Validator LBS mit folgenden Eingängen:
    E1: Verbindung zum Intent Ausgang des Alexa Receiver
    E2: 8
    E3: "licht status"
    E4: "licht"
    E5: "Büro"
    E6: leer
    E7: hier kommt der Ausgang eines 18000001 LBS an (E1: Status Deckenleuchte, E2: Status Schreibtischleuchte, E13: "|")
    E8: "Die Deckenleuchte ist %1% und die Schreibtischleuchte ist %2%."
    E9: "0:ausgeschaltet|1:eingeschaltet||0:ausgeschal tet| 1 :eingeschaltet"

    Dadurch werden die Statuswerte beider Leuchten kombiniert und der aktuelle Wert wird auf das richtig Wort gemapped und in den Text eingesetzt.
    Die resultierende Antwort wird dann an den Custom Skill (alexa.php) übertragen und schließlich ausgegeben.

    Hier nochmal als Bild: Screenshot from 2017-02-12 21-04-26.png



    Welche Kommandos möglich sind und wie die Syntax gewählt wurde ist im Wesentlichen aus dem Intent Model ableitbar.
    Die Utterances zusammen mit den Custom Slots sollten hierbei helfen.

    Ich freue mich wie immer über euer stets konstruktives Feedback...

    Viele Spaß ...



    Zuletzt geändert von jonofe; 12.02.2017, 23:17.

    Einen Kommentar schreiben:


  • junibart
    antwortet
    Zitat von jonofe Beitrag anzeigen
    ...ist das Testen ein wenig aufwändiger. Insbesondere der Command Validator ist nach nicht für alle Intents fertig.
    Aber es dauert sicher nicht mehr lange.

    Hoffe das steigert jetzt die Vorfreude

    ​​​
    JAAAA

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von junibart Beitrag anzeigen

    Hi André,

    sag mal....
    die Liste der Dinge, die im kommenden Update dabei sein sollten (u.a. Rolladenposition, akustische Rückmeldung von Werten) klang sehr interessant... hast Du schon einen Plan, wann Du Update auf uns loslassen kannst? Bin schon sehr gespannt...

    Grüße,
    Gunnar
    Hi Gunnar,

    ja stimmt, ist schon ein wenig her. War leider krank und hatte ein paar andere Prioritäten, aber grundsätzlich ist das schon recht weit.
    Ich kann schon Rollädenpositionen anfahren und auch schon neben Default-Statusantworten auch individuelle Antworten konfigurieren.

    Bsp.für Defaultantwort bei "Licht status"
    Frage: "Alexa, frage EDOMI nach den Status der Deckenleuchte im Büro"
    Antwort: Der Status ist eingeschaltet.

    Bsp.für individuelle Antwort bei "Licht status"
    Frage: "Alexa, frage EDOMI nach den Status des Lichts im Büro"
    Antwort: Die Deckenleuchte ist eingeschaltet und die Schreibtischleuchte ist ausgeschaltet.

    Ich hoffe das ich am Wochenende ein erstes Update veröffentlichen kann.
    Da es ja i.d.R. alle Einstellungen betrifft:
    - Intents
    - Custom Slots
    - Utterances
    - alexa.php
    - Alexa Receiver
    - Alexa Command Validator
    ist das Testen ein wenig aufwändiger. Insbesondere der Command Validator ist nach nicht für alle Intents fertig.
    Aber es dauert sicher nicht mehr lange.

    Hoffe das steigert jetzt die Vorfreude

    ​​​​​​​VG André



    Einen Kommentar schreiben:

Lädt...
X