Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Alexa Custom Skill für EDOMI (LBS 19000646 und 19000647)
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
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,
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:
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 ) );
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!
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.
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.
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.
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.
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.
erst mal fettes Lob und Danke für deine Arbeit!!!
Ist eine Mega coole Sache und ich bin gespannt was da noch so kommt…
Habe gestern das Ganze Konstrukt in Betrieb genommen und es funktioniert (zum Teil) sogar ;o)
Das einfache EIN/AUS ansteuern funktioniert super.
Bei einer Statusabfrage bekomme ich am EDOMI Server die Fehlermeldung:
Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000646.php | Fehlercode: 1 | Zeile: 108 | Call to undefined function msg_get_queue()
FATALERROR
Ich vermute, dass ich bei dem Custom-Skill was verbockt habe was dem LBS nicht so gut gefällt. Finde aber nichts, ist ja auch recht viel. Wie kann ich das am besten rausfinden? Gibt’s da ein Log oder so?
Kleine Ergänzung (für Linux Schwächlinge wie ich es bin) zu deinem HowTo:
Die Rechte der alexa.php auf den Edomi Server Ausführbar machen damit es funktioniert ;o)
Bei einer Statusabfrage bekomme ich am EDOMI Server die Fehlermeldung:
Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000646.php | Fehlercode: 1 | Zeile: 108 | Call to undefined function msg_get_queue()
FATALERROR
Ich vermute, dass ich bei dem Custom-Skill was verbockt habe was dem LBS nicht so gut gefällt. Finde aber nichts, ist ja auch recht viel. Wie kann ich das am besten rausfinden? Gibt’s da ein Log oder so?
Nein, alles gut. Du musst lediglich das Paket php-process installieren:
Code:
yum install php-process
Da ich es gefühlt in >20 LBS verwende, haben die meisten das wohl schon installiert und ich hatte vergessen es explizit zu erwähnen.
Danach sollte dann auch die Kommunikation zurück von EDOMI an alexa.php funktionieren.
Kleine Ergänzung (für Linux Schwächlinge wie ich es bin) zu deinem HowTo:
Die Rechte der alexa.php auf den Edomi Server Ausführbar machen damit es funktioniert ;o)
Auch von mir ein fettes Dankeschön,
mir hat bei Status abfragen nur eins nicht gefallen, ich habe in Wohnzimmer 6 unterschidliche Lichter, das war dann dem entsprechend eine Lange ansage von Alexa.
Ich habe Stringverbinder soweit geändert dass mir Statusansage nur aus eingeschalteten Lampen zusammengesetzt wird. Es ist dann auch möglich mitzuteilen dass alle Lampen aus sind.
LBS 19000894Unbenannt2.JPG
Na das war ja die Idee hinter dem Eingang Response Text, dass jeder such den Text so formatieren kann wie er möchte. Das kann dann ein Status aller Leuchten, es können nur die eingeschalteten oder gar nur die Info, dass mindestens eine Leuchte eingeschaltet ist. Mann muss sich halt nur vorher das, was man hören möchte, als Logikwert bauen und mit einem Text und Wertemapping versehen. That's it!
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar