NEWS
Custom Skill v2 für ioBroker iot ab heute online
-
Hi,
seit heute ist der neue ioBroker iot Custom Skill v2 bei Amazon veröffentlicht. Alle bisherigen Nutzer nutzen nun automatisch diese Version. Man muss dazu an sich nichts updaten!
WICHTIG: Falls es probleme gibt mit dem iot Adapter sobald man den Custom Skill nutzt, dann bitte sicherstellen das mindestens iot in Version 1.13.0 oder höher installiert ist.
Der Custom Skill und der neue bessere Ansatz wurde in https://forum.iobroker.net/topic/56304/wie-spricht-man-mit-iobroker-iobroker-custom-skill-2022 mit der Community diskutiert und in https://forum.iobroker.net/topic/60835/test-custom-skill-v2-für-iobroker-iot getestet. Vielen Dank an alle die sich da beteiligt haben!
Details zu dem Skill und allen Möglichkeiten bitte ich Euch dem zweiten Post dieses Threads zu entnehmen.
Viel Spass,
Ingo und Bluefox
-
ioBroker Custom Skill v2 (enhanced by iot and Alexa2)
Hi All,
ich freue mich euch heute den neuen ioBroker Custom Skill v2 für Amazon Alexa vorstellen zu können. Dieser Post enthält einige Details über den Skill und seinen Möglichkeiten und wie dieser mit anderen Adaptern bzw. dem ioBroker-System genutzt werden kann. Vor allem mit text2Command, iot, alexa2 und eigenen Skripten mit dem JavaScript-Adapter können mächtige Interaktionen erstellt werden.
Was ist ein Custom Skill?
Ein Custom-Skill ist ein eigener Skill im Amazon Skill Store und bietet spezifischere Interaktionsmöglichkeiten als die Smart-Home-Skills, welche nur auf von Amazon definierte Geräte beschränkt sind.
Auch bei ioBroker ist der Custom Skill ein eigener Skill im Skill Store und wird mit der iobroker Pro Cloud verbunden und benötigt damit auch einen entsprechenden Pro-Cloud Account und eine damit verbundene iot Instanz.TL;DR Wofür brauche ich das jetzt? Was geht denn damit?
Ok, für die ungeduldigen hier eine ganz grobe Zusammenfassung was wir mit dem neuen Custom Skill, dem iot-Adapter und optional alexa2, text2Command und JavaScript machen können:
- Mit einer Startphrase "Alexa, sage/frage i.o. broker ..." den Skill öffnen und jeden Text an ioBroker weitergeben der gesprochen wird
- Text kann mit Text2Command oder eigenen JavaScript-Skripten verarbeitet werden
- Mit eigenen Skripten können auch Dialoge mit Rückfragen gebaut werden
- Über Alexa2 starten des Skills mit einem eigenen Text der gesprochen wird bzw. Frage die gestellt wird und dann User-Antwort entgegennehmen (Hallo Ingo, was kann ich für Dich tun?)
- Zuordnung der Geräte zu denen gesprochen wird zu Räumen und Alexa2 Devices (kommt noch)
- Zuordnung der Benutzer die sprechen zu Namen (kommt noch)
- Weiterleiten des erkannten Textes an Alexa2 "textCommand" State und damit Verarbeitung des Textes nur durch Amazon (so als ob man direkt gesprochen hätte)
- Weiterleiten des erkannten Textes an Alexa2 "textCommand" wenn eine eigene Verarbeitung via text2Command oder JavaScripts nicht möglich war
Wie funktioniert das ganze (wen es interessiert)?
Normalerweise haben Custom Skills vordefinierte Dialoge und Kommunikationsmodelle und -abfolgen einprogrammiert. Unser Custom Skill versuchen bestmöglich einfach den gesamten gesprochenen Text zu erfassen und an das ioBroker-System weiterzugeben. Das macht Amazon einem nicht ganz einfach, aber ich denke wir haben einen guten Kompromiss gefunden.
Es gibt genau zwei Möglichkeiten in Alexa-Custom-Skills, um den gesamten erkannten Text zu bekommen:
1.) Indem man spezielle Startworte definiert und dann den gesamten Text nach diesen bekommen kann. So haben wir in Summe 155 Startwörter definiert, wodurch 99% aller "Normalen Interaktions-Sätze" abgedeckt sein sollten, inklusive sehr vieler Kurzformen, die zB ein Gerätename oder Zimmername als erstes Wort enthalten. Die vollständige Liste ist unter https://docs.google.com/spreadsheets/d/17h7KKuYwp0atJ6_QFho1FBDulDZh7GNRDnZirP7atSg/edit?usp=sharing zu finden. Das ist bereits das Maximum an Startworten welche wir zur Verfügung haben, es können aber bei Bedarf Worte zusammengefasst werden o.ä.
2.) In dem man eine andere Interaktion hat, die vom Skill dann mit einer Rückfrage beendet wird kann man in einem "Dialogmodus" landen wo wir dann alle Worte erhalten können. Dies ist der Fall wenn man den Skill nur startet. Alternativ haben wir noch ein paar Sonderstartoptionen eingebaut, die aber nur über Umwege sinnvoll genutzt werden können (dazu später mehr)Wie interagiert man mit dem Skill?
Custom Skills haben immer eine Start-Phrase, mit der er aktiviert bzw. direkt befragt werden kann. Zusammen mit den Informationen oben ergeben sich die folgenden Interaktionsmöglichkeiten:
"menschliche" Interaktionsmöglichkeiten
- Alexa, starte i.o. broker startet den Skill und Alexa fragt "Hallo, was möchtest Du wissen oder steuern?" und ist im Dialogmodus
- Alexa, frage/sage i.o. broker <Startwort> ... erfasst den text der mit einem Startwort beginnt und erfasst idealerweise den Text und sendet Ihn an die ioBroker Instanz womit direkt gesteuert werden kann. Für den Fall das keins der möglichen Startworte genutzt wird gibt es einen "sehr groben" Fallback, welcher aber nur einzelne Wörter und nicht den gesamten text erkennen kann.
NEU: "Skript"-Interaktionsmöglichkeiten
Für die bessere Nutzung haben wir noch folgende weitere Startmöglichkeiten des Skills eingebaut, die zB per "textCommand"-State einer alexa2-Instanz ausgelöst werden können:
- Alexa, sage i.o. broker starte Dialog mit Guten morgen Ingo startet den Skill und Alexa sagt "Guten morgen Ingo" und hört danach auf weiteren Text vom User
- Alexa, sage i.o. broker starte Dialog mit Guten morgen Ingo, kann ich etwas für Dich tun startet den Skill und Alexa fragt "Guten morgen Ingo, kann ich etwas für Dich tun?" und hört danach auf weiteren Text vom User
- **Alexa, sage i.o. broker starte Dialog" startet den Skill und Alexa fragt nut "Ja?" (leider muss sie was fragen um danach zuzuhören) und ist im Dialogmodus
- In der Alexa-App kann man eine Routine anlegen, die den Custom Skill startet. Alexa fragt dann die Standardfrage "Hallo, was möchtest Du wissen oder steuern?" und ist im Dialogmodus
Wie wird der Text dann verarbeitet?
Der erkannte Text wird über die ioBroker Cloud an den iot Adapter gesendet.
Basierend auf den übermittelten Daten werden noch ein paar weitere Informationen ermittelt:
NEU: Raumzuordnung (kommt noch in iot Adapter-Update demnächst, intern bereits vorbereitet)
Die Daten von Amazon enthalten eine Geräte-ID des Geräts zu dem gesprochen wurde. Diese sind leider eindeutige IDs die mit nichts direkt verknüpfbar sind. Der iot Adapter sammelt alle Geräte-IDs die genutzt werden und bietet in der UI die Möglichkeit an diese einem Raum (aus enum.rooms) zuzuordnen und auch optional ein Alexa2.Echo-Devices.XXXX gerät zu wählen.Damit steht zusätzlich ein Raumname zur Verfügung und auch eine Verknüpfung zu Alexa2 für weitere Steuermöglichkeiten.
Im iot Adapter kann auch gewählt werden ob der Raumname dem erkannten Text (für text2Command) hinzugefügt werden soll und so in Text-Regeln genutzt werden kann.
NEU: Personenzuordnung (kommt noch in iot Adapter-Update demnächst, intern bereits vorbereitet)
Die Daten enthalten ebenfalls eine Benutzer/Sprecher-ID. Der iot Adapter sammelt auch diese IDs und erlaubt in der UI den IDs einen Namen zuzuordnen als Text).Es kann gewählt werden den Benutzernamen dem erkannten Text (für text2Command) hinzuzufügen und so in Text-Regeln zu nutzen.
Die weitere Verarbeitung kann nun auf verschiedene Arten erfolgen
NEU: Gesprochenen Text immer direkt an Alexa2 textCommand weitergeben
Wer den Custom Skill nur nutzen möchte um einen Dialog mit Alexa zu starten, die Verarbeitung des textes selbst aber von Alexa selbst "wie sonst auch" vornehmen lassen will, kann über die Raumzuordnung für alle Geräte das Alexa2-gerät zuordnen und der iot Adapter wird den erkannten Text direkt an textCommand weitergeben und so zurück zu Amazon. Damit kann man erreichen, dass Alexa zB aus Skripten heraus gestartet wird und zuhört, und dann auch die Verarbeitung macht. Es kann allerdings sein das textCommand Limitierungen hat!
Text2Command
Wenn im iot Adapter eine text2Command Instanz konfiguriert ist wird der Text an diese gesendet und kann dort über Regeln verarbeitet werden. Die Antwort wird zurückgegeben. Der Dialog wird aber immer beendet nachdem die Antwort ausgegeben wurde, da text2Command das nicht wieder vereinen kann.
NEU: Eine neue Option erlaubt es, im Falle das text2Command den Text mit keiner Regel verarbeiten konnte, anstelle der Fehlerantwort den Text immer an Alexa via Alexa2 textCommand weiterzugeben. Im Zweifel Antwortet Alexa mit einem Fehler.
Eigenes JavaScript
Der iot-Adapter hinterlegt die Daten der Anfrage in den states iot.X.smart.lastCommand (nur der Text) und iot.X.smart.lastCommandObj als umfangreiches JSON objekt mit allen Details:
- words: Array mit den erkannten Wörtern
- intent: Information welcher Intent von Amazon erkannt wurde
- deviceId: Device-ID von Amazon
- deviceRoom: Raumname (enum) der in iot dem Raum zugeordnet ist, wenn definiert
- alexa2DeviceObjectId: Object ID des Alexa2 devices wenn definiert
- sessionId: Eindeutige ID der Kommunikations-Session, kann zur Erkennung von Interaktionsabfolgen genutzt werden
- userId: User-ID von Amazon
- userName: Benutzer-name der dem in iot User zugeordnet ist
Auf diesen stateChange kann der JavaScript Adapter nun reagieren und eigene Logiken inklusive ganzer Dialoge erstellt werden.
Eine Antwort muss bei einem, eigenen JavaScript innerhalb von 200ms erfolgen, indem entweder diese in das State iot.X.smart.lastResponse geschrieben wird oder eine Message "alexaCustomResponse" an die iot Instanz gesendet wird.
Die Antwort kann:
- der Antworttext allein sein, welcher ausgegeben und der Dialog beendet wird.
- ein stringified JSON-Objekt sein. Es sollte dann die sessionId enthalten zu der diese Antwort gehört, den responseText und optional ein Boolean shouldEndSession, welcher angibt, ob der Dialog beendet ist oder weitergeführt werden soll.
Weitere Details zu den Verarbeitungsmöglichkeiten gibts in der Readme des iot-Adapters
Jetzt dann mal viel Spass beim coole Dinge damit bauen
Ingo
-
@apollon77 ich Danke euch ganz herzlich für eure Arbeit.
-
Ich bin immer wieder baff was ihr so auf die Beine stellt! Das bietet wieder eine Menge neuer Möglichkeiten, muss das erst mal verdauen bevor ich mich an die Änderungen mache. Ein paar Einsatzmöglichkeiten habe ich schon im Kopf
Herzlichen Dank für Euren EInsatz!!!!
-
@albert-k viel Spaß. Am besten gern hier über Anwendungen und wie man was kombinieren kann berichten.
-
@apollon77 Bin ich hier richtig mit Problemen?
Hab text2command schon ewig mit dem Skill im Einsatz und seit dem Update kommt nur "düdümm" wenn ich "Alexa, frage i o broker ..." nutze.
Sage ich am Echo Dot "Alexa, starte i o broker" kommt nur "wird mit Fire TV abgerufen" und danach "ich habe Probeme mich mit deinem Skill zu verbinden".Davor habe ich extra den Skill mal deaktiviert und neu mit meinem iobroker Konto verknüpft.
Ich habe keine Idee wo ich ansetzen könnte. -
@diginix Hm ... Da stimmt irgendwas nicht .... Du hast auch den "Custom iot Skill" deaktiviert und neu aktiviert? Ich habs gerade getestet und bei mir geht alles.
Das sieht mir so aus als ob der Skill bei dir nicht aktiv wäre
-
@diginix sagte in Custom Skill v2 für ioBroker iot ab heute online:
Hab text2command schon ewig mit dem Skill im Einsatz
Na so EWIG kann das nicht sein.... den neuen Skill tatsächlich im Einsatz oder noch den alten ?
-
@apollon77 Doch ist er.
Wenn ich in der Android App auf "Starten" klicke kann ich eine Echo auswählen und dann fragt mich der Echo auch was ich steuern will. Sage ich dann ein Triggerwort kommt wieder nur "düdümm"Im text2command funktionieren alle Test mit den Triggerworten.
Im iobroker Log landet nur etwas wenn ich im text2command WebUI die Tests nutze. -
@djmarc75 sagte in Custom Skill v2 für ioBroker iot ab heute online:
en neuen Skill tatsächlich im Einsatz oder noch den alten ?
Der neue Skill hat den alten ersetzt .. siehe erster Post ...
-
@apollon77 sagte in Custom Skill v2 für ioBroker iot ab heute online:
Der neue Skill hat den alten ersetzt .. siehe erster Post ...
aua, ja, sorry
-
@diginix Hm ... bin da gerade ratlos. Würde jetzt den Skill nochmal deaktivieren, dann ggf Alexa App neu starten um zu prüfen das er auch inaktiv ist und neu verbinden.
-
@djmarc75 text2command mit custom Skill bestimmt schon über 2 Jahre. Bis zum Update logischerweise mit der alten Skillver.
-
@apollon77
Deaktiviert und App gekillt
Skill neu gesucht und ersten Treffer gewählt
Ich hab das Konto genommen mit dem auch der iot Adapter arbeitet
Wenn ich in der App den Skill für ein Echo Dot starte und dieser dann fragt "Was möchtest du steuern" und ich sage ein von mir im text2command definiertes Wort, dann kommt von Alexa eine willkürliche Erklärung aus dem Netz. Also zB was eine Waschmaschine ist usw. Hat also nix mit iobroker zu tun.
Ich habe aber auch keine anderen custom Skill den man etwas fragen könnte bei Alexa im Einsatz.Im iot Adapter habe ich aber auch den Bug dass die Anzeige aller Alexa Geräte leer ist. Aber steuern lässt sich bisher alles regulär und sie werden auch als online in der Alexa App angezeigt.
Ich möchte nun ungern den iot Adapter from scratch installieren solange dieser Bug nicht gefixt ist.Eben nochmal text2command 3.0.2 und iot 1.14.4 neu gestartet. Aber nix hilft.
Möchte ungern auf meine text2command Dinge verzichten. Aber so funktioniert ja gar nichts. Ist ja mal wieder interessant dass das niemand sonst hat.Wüsste auch nicht wie ich ein Log erzeuge könnte. Bei iobroker kommt ja anscheinend nichts an.
-
@diginix Neuinstallation von iot bringt da nichts. Ich glaube iot auff GitHub hat den Anzeige bug gefixt aber weiss es nicht genau. Wenn Alexa schon gar nicht korrekt antwortet weiss ich auch nicht mehr weiter. chreib mal an info@iobroker.net ... Vllt sieht Bluefox noch irgendwas in den Tiefen der Logs.
Ich kann nur sagen das bei mir der Skill komplett tut wie er soll
-
@apollon77 E-Mail ist raus.
Ich frage mich gerade wo eigentlich bei text2command zum Rest die Verbindung geschaffen wird. Der Adapter hat ja keinerlei Instanz Config. Nur das WebUI mit den Texten und Triggerwörtern. Muss ich den Adapter noch irgendwo "verknüpfen/auswählen"?
Falls ja, war das vor dem Update nicht nötig oder ist Jahre her und ich habe es vergessen. -
@diginix Text2command hat auch eine normale Instanz und da läuft ein Prozess. Und im iot Adapter hast du die instanz gewählt. Das passt schon. Wenn da was nicht stimmen würde wäre die Meldung eine andere als Antwort.
-
@apollon77 Ihr seid einfach die GEILSTEN!!!!!! Endlich bekomme ich die Anfrage, wie sie auch gesprochen wurde!!!! In der richtigen Reihenfolge und so wie ich sie brauche!!!!!!! Und "reinige" wird endlich auch richtig erkannt!!!!
-
@apollon77 Ja aber es gibt kein Zahnrad in der Instanzübersicht. In der Instanz wo man auch die Regeln definiert gibt es aber Einstellungen. Da passt alles. Nach iot Update sehe ich nun wieder die Einstellungen dort und da ist text2command korrekt ausgewählt.
Bluefox hat leider noch nicht geantwortet, wird aber auch nicht nur meine E-Mail haben. -
@apollon77 Mit einer cleanen text2command.1 Instanz bekomme ich nun wieder Ausgaben über den Alexa custom Skill v2.
Entw. es ist eine bestimmte Regel der text2command.0 oder alle und sie müssen neu erstellt werden.
Ich versuche über das Instanz RAW dann mal den Unterschied oder die ursächliche Regel zu finden.Edit: Auch mit text2command.0 funktionieren alle alten Regeln. Aber nur wenn ich "Alexa, frage i o broker" sage und das Keywort erst sage nachdem Alexa gefragt hat "was möchtest du wissen oder steuern".
Sage ich direkt "Alexa, frage i o broker nach %keywort", erhalte ich nur den düdüm Quittierungsound.