NEWS
Wie spricht man mit ioBroker? iobroker Custom-Skill 2022
-
Hi All,
neben dem "iot Smart Home Skill" um via Alexa seine Geräte zu steuern hat ioBroker auch einen sogenannten "Custom Skill". Die Idee von diesem ist, dass man etwas natürlicher mit seinem ioBroker "reden" kann um Befehle auszuführen die nicht von Amazon anhand des Gerätetyps sehr strikt vorgegeben sind. Der Custom Skill beginnt dabei immer mit "Sage/Frage ioBroker ..." oder mit etwas wie "Starte/Öffne ioBroker".
Wer den Custom Skill noch nicht kennt sei zum Release-Post verwiesen unter https://forum.iobroker.net/topic/15629/neu-iobroker-alexa-custom-skill-verfügbar
Etwas Background (einfach überspringen und unten weiterlesen wen es nicht interessiert)
Jetzt mag man denken "Hey ist doch simpel man bekommt einfach den gesprochenen Text (der Alexa2 Adapter holt den doch auch aus der Sprachhistory)" - tja da hat man leider die Rechnung ohne Amazon gemacht Das Ziel von Amazon für alle Skills ist das man klare Dialoge definiert, die das System dann auch erkennen kann. Das war schon so als wir den Custom-Skill erstellt haben und hat sich nicht wirklich geändert. Es gibt keinen wirklichen Weg einen Frei gesagten Text einfach direkt durchzureichen (Ausser einer Deprecated Option die es nur für Amerika gibt, aber Amazon auch versucht loszuwerden).
Der bisherige Custom-Skill hat daher auf seeehr komplexe Art versucht erwartete Sätze nachzugestalten und für die einzelnen Komponenten mit Wortlisten gearbeitet. Der Vorteil davon ist, das Amazon im Zweifel mit ein bissl "Fuzzy" nachhilft und so auch Worte gematcht werden die nicht in der Liste stehen. Der große Nachteil ist aber, dass am Ende der "gesprochenen Text" auf der Strecke bleibt und nur "eine wild durcheinander gewürfelte Liste an Wörtern" rauskommt je nachdem was Amazon denkt in den einzelnen Erkennungskomponenten gefunden wurde.
Wenn aber Wörter in den Listen fehlen, kann es auch passieren das diese ganz fehlen.
So wurde zB bisher aus "er soll Flur Küche und Kinderzimmer reinigen" im Zuge der Erkennung "controlDevice wohnzimmer flur er soll"Im Zuge der Prüfung des eben genannten Issues habe ich mir mal wieder die Zeit genommen und geschaut ob es inzwischen vllt bessere Optionen gibt.
Custom Skill Plan 2022 (der Teil wo wir Eure Hilfe brauchen kommt als nächstes)
Das Ergebnis meiner Prüfung und Experimente waren am Ende recht ernüchternd, aber dennoch erfolgreich in gewisser Weise.
Vorn weg: Einen einfachen Weg an den gesamten gesprochenen Text zu kommen gibt es immer noch nicht - ausser in einem Ausnahmefall indem man einen Dialog vordefiniert ... aber genau das ist bei uns nicht wirklich sinnvoll möglich. Alle Varianten die ich versucht habe das zu kombinieren sind im leeren verlaufen.Am Ende gibt es aber inzwischen eine Option die uns der Sache etwas näher bringt und was ich gern als Basis für eine 2022er Version des Custom-Skills nehmen würde.
Es funktioniert das man einzelne Phrasen definiert die aus einem (oder mehreren) Triggerworten bestehen und dann kann man den Rest des danach gesprochenen Textes rausbekommen. ABER das Trigger-Wort selbst bekommt man nichtDer Workaround dazu ist, dass man pro Triggerwort eine eigene Definition anlegt die einen eigenen Namen hat und man so indirekt über den Namen der Aktion (Intent) das "fehlende" Wort mit transportieren und wieder anfügen kann.
Also praktisches Beispiel mit "schalte {query}" kann man allen Text abgreifen der mit "schalte" beginnt und wenn man das "QueryIntentSchalte" nennt kann man das Wort rekonstruierenAlso dann suchen wir mal alle Wörter mit dem eine solche Sprachaktion beginnen kann ... fast ... wir dürfen maximal 240 solche Intents frei definieren (10 brauchen wir für generelle Dinge). Daraus entsteht folgender angepasster Plan für den Custom Skill 2022:
- Alles was in einem natürlichen Redefluss mit "Alexa, sage ioBroker ...." oder "Alexa, frage ioBroker ..." oder "Alexa, öffne/starte ioBroker -> Hallo, was möchtest Du wissen oder Steuern?" als erstes Wort danach Sinn macht versuchen wir als "Einzel-Triggerwort" umzusetzen
- Wenn es dabei Wortvariationen gibt, wo es für eine Textverarbeitung nicht so schlimm ist das "ein passendes ähnliches Wort" erfasst wird, dann nehmen wir das als variation zu einem Hauptwort und sparen damit einen Intent-Slot
- Dann ist die Frage was sollten wir noch aufnehmen an Einzelwörtern die wichtig sind (vllt Raumnamen bzw wichtige Gerätebezeichnungen?
- Zu guter letzt lassen wir noch einen Slot übrig der eine "Fuzzy Erfassung" wie früher für andere mögliche Konstellationen erlaubt quasi als Fallback - mit dem Wissen das dann halt nicht der echte Wortfluss da ist.
... und da kommt Ihr ins Spiel ...
TL;DR (für die die überspungen haben)
Um den ioBroker Custom-Skill zu aktualisieren wollen wir das Konzept etwas ändern und versuchen nun mit Eurer Hilfe Wortlisten zu finden die wir dazu benötigen damit Alexa das gesprochene erkennt. Wer wissen will warum man nicht einfach den gesprochenen Text nehmen kann, lese bitte doch oben
Wobei brauchen wir Eure Hilfe?
Nach den Infos oben gehts nun ans eingemachte und zum "Brainstorming" Teil:
1.) Welche Wörter brauchen wir um im normalen Redefluss mit
- "Alexa, frage ioBroker ..."
- "Alexa, sage ioBroker ..."
- "Alexa, öffne/starte iobroker. -> Hallo, was möchtest Du wissen oder steuern?
die Sätze weiterzuführen?
Relevant hier ist jeweils quasi das Erste Wort danach. Damit wir nicht bei 0 Anfangen habe ich basierend auf meinen Gedanken und mit dem bisherigen Custom-Skill schonmal das gesammelt was bestimmt 80-90% der Dinge schon abdecken sollte. Die Liste findet Ihr unter https://docs.google.com/spreadsheets/d/17h7KKuYwp0atJ6_QFho1FBDulDZh7GNRDnZirP7atSg/edit?usp=sharing
Die Liste definiert ein Hauptwort und "Alternativworte" - letztere würden dann im zum Server gesendeten Text als das Hauptwort enthalten sein!
Ebenfalls enthalten ist eine Liste von "Füllworten" die in meinen Augen keine verändernde Bedeutung als erstes Wort haben. Diese würden wir dann einfach weglassen. Gibt es da noch mehr?
Bitte überlegt mal in Gedanken was fehlt und postet es hier im Forum. Ich hoffe auf rege Beteiligung
2.) Welche sonstigen Worte (auch wenn es eigentlich keine natürliches Sprechen wäre) brauchen wir noch? Also wenn wir sagen wollen "Alexa, sage ioBroker, Küchenlicht an" und das erfassen wollen bräuchten wir "Küchenlicht" als Triggerwort - oder es ist ok das das im "Fallback" erfasst wird.
Sagt mal was dazu.Ja ich weiss nicht ganz so simpel ... aber genau deswegen würde ich mich über Eure Unterstützung freuen ...
Ingo
-
@apollon77 Sehr gut, danke!!!
Hab gerade in Deine Liste geschaut. Für die Kombination aus Saugen und Wischen würde ich das Schlüsselwort "Reinige" / "reinigen" sehen. Wäre das redundant zu "Putze"/"putzen"? -
@rkccorian Das ist eine gute Frage. An sich ist "putzen" und "reinigen" ein Überbegriff von Saugen und auch Wischen ... aber formal keine Funktion eines geräts was ich kenne. Aus dem grund habe ich für jetzt mal "Putze" als eigenständiges Wort gesehen ... wenn man es mal zusammenfassen müsste wäre ich auch dabei es als unterwort von "wischen" zu sehen ...
Bei dieser ganzen Zusammenfasserei ist immer die Frage wieviel Informationen am Ende verloren gehen wenn "wische das Wohnzimmer" anstelle "putze das Wohnzimmer" beim Server ankommt.Deswegen auch der Thread hier ... ich hab da eine Meinung (vllt) ... aber ist halt nur eine.
So lange wir noch worte frei haben (und für mich gewissen "Kommandoworte die man natürlich sagen würde" in jedem Fall gegenüber anderen noch zu sammelnden Worten wenn es darum geht mit dem Limit von 240 umzugehen
Also aktuell haben wir noch ca. 200 Hauptworte verfügbar
EDIT: Ich würde aus dem eben gesagten "reinige" mit als Hauptwort aufnehmen fürs erste. Erledigt
-
@apollon77
Hintergrund: Hab nen Roborock S7 MaxV Ultra. Der kann nur Saugen, nur Wischen oder Beides und der spricht von "reinigen". Daher habe ich im Kopf die Begriffe sauge, wische und reinige als Kommandos. Falls möglich gerne auch hinten angestellt, sodass "sage ioBroker Reinige Flur" genauso geht, wie "sage ioBroker er soll den Flur reinigen". -
@rkccorian Wichtiger Anwendungsfall damit ... also bleibt es getrennt
-
Die Tabelle enthält ausschließlich deutsche Begriffe. Ich habe keine Alexa, aber im Sprachgebrauch nutzen wir doch alle mehr oder weniger Oft „denglish“.
Daher was mir gefehlt hätte beim ersten Blick
Iobroker prüfe
Oder Iobroker check mal -
@dos1973 ok checke Bzw Check füge ich als alternativ Wörter für prüfen hinzu.
-
Hallo,
ich habe dam als mit dem text2command auch ziehmlich viele von diesen Varianten gesammelt. Ich kann die Liste damit ergänzen
oben:
oberes, obere, obiges, oberenunten:
untere, unteres, unterenaus:
ausschalten, ausgeschaltet
ausmachen, ausstellen, abstellen, abschalten, abgeschaltet, ausgemacht, abgestelltan:
ein, einschalten, eingeschaltet, angeschaltet
anstellen, anmachen, anschaltet, angestellt, angemachtschließe
zumachen, zusperren, abschließengibt es die Hauptwörter
auf & zu?
"iobroker, fenster zu!"Das war mal schnell ein brainstorming, jetzt gehts erst mal raus auf den Spielplatz
Gruß
Pix -
@pix Perfekt, wird ergänzt!
gibt es die Hauptwörter
auf & zu?
"iobroker, fenster zu!"Bedenke ... hauptwort muss am Anfang stehen! in dem Zuge wären beide noch sinnsvolle Füllwörter "iobroker, auf der Veranda die Tür öffnen" (oje .. hoffe sowas sagt nicht wirklich einer)
Was man am Ende noch Sammeln muss sind die "200 restlichen" möglichen Startwörter die wir noch frei haben wo ich vllt wirklich sowas wie Fenster, Tür, Staubsauber,Fernseher, ... machen würde ... hat jemand da Lust mal ne Lisste zu basteln?
-
Wie sieht es denn aus mit dem wort Bewässerung aus ?
-
@desa ja könnte in so eine lange Wortliste von potentiellen Startworten gehören.
-
@apollon77 Bei 'stoppe' fallen mir noch als Unterworte 'beende' und 'beenden' ein (verwendet meine Frau statt stopp). Würde ab auch zu 'aus' passen.
Und bei 'starte' könnte man noch 'beginne' hinzufügen.
Eine Question könnte auch mit 'ist' bzw. 'sind' starten (z.B. "sind alle Fenster zu/geschlossen?" oder "ist die Türe offen?" - wobei 'alle' ein Füllwort wäre). Dann würde sich das aber mit den bereits vorhandenen Füllworten spießen. Oder verstehe ich das falsch?
-
@apollon77 Wie sieht es mit "Pausiere(n)" und "Setze fort" aus?
-
@dr-bakterius beenden und beginnen ist hinzugefügt.
ist/sind sind schon füllworte.
Alle hab ich noch mit allen und allem als extra Wort hinzugfeügrt weil es wichtig für den Kontext ist. ein "sind alle ..." ist ja wieder "sind"
-
@desa Berwässerung Ist mal in der einen Fallback Wortliste schon drin
-
@rkccorian pause hinzugefügt, "setze" als Startwort ist schon drin
-
Hier mal mein Feedback.
Auf der einen Seite finde ich es toll, dass man sich die Mühe mit dem Custom Skill macht.
Meine Prämisse aber ist, dass Jeder bei mir im Haus die Geräte steuern können muss, ohne wissen zu müssen welche "magic Words" ausser " Alexa" er sagen muss.Und solange Amazon immer noch von den Usern erwartet, dass man sagen muss "sage XYZ dass.." brauche ich das leider nicht.
Unintuitiver gehts kaum. Ich kann doch nicht irgendwelchen Gästen sagen, dass sie sich bitte "Sage Iobroker, dass" merken sollen wenn sie im Gästezimmer etwas steuern wollen.Ich persönlich finde das Konzept von Amazon schlecht, dass zuerst mal die gesagten Befehle von Amazon selbst interpretiert werden und dann erst zu den Skills weitergegeben werden , bzw. man den Skill mit "sage Blubb dass" ansprechen muss.
Das kling a) bescheuert und b) kann sich das Keiner merken. Schon vor allem dann wenn die Skills so dämlich heißen, dass der Satz mal gar keinen Sinn gibt.
Viel einfacher für den User wäre doch, dass man das Gesagte erstmal an die Skills gibt und dann wenn keiner der Skills was damit anfangen kann Amazon irgendwas mit dem Befehl macht. Am besten wäre noch wen man die Skills in der Reihenfolge wie der Befehl durchgeschleust wird sortieren könnte. Dann würde der Iobroker Custom Skill ganz oben stehen, dann kämen zwei drei Andere vielleicht für Musik usw, und am Ende soll sich Amazon selbst um den Befehl kümmern wenn sich keiner der Skills angesprochen gefühlt hat.Dann könnte man sich ev. auch das "sage ..." sparen.
Aber das ist nur meine bescheidene Meinung.
Anonsten: Wenn jemand bereit ist ständig "Alexa, sage Iobroker" zu sagen, finde ich das toll, dass ihr das realisiert.
Sobald man "richtig" mit Alexa reden kann, springe ich sofort auf diesen Zug auf.Gruss Ralf
-
Naja, dann werden wir doch mal etwas kreativer :-))
Es gibt inzwischen auch die Option bis zu 5 weotere "Skill Launch phrases" anzugeben. Vllt bekommen wir ja damit was gebastelt was natürlicher ist (denke es bleibt aber irgendwie limitiert)?
Hat hier noch jemand ideen?
Skill launch phrases requirements
Skill launch Phrases are an optional new way to teach Alexa how an end-customer might invoke your skill as a modal launch, along with the standard invocation pattern of "Alexa, open ". For example, similar to invocation name pattern "Alexa, Open Tasty Recipes Skill", you might have something like "can you give me a tasty recipe" as skill launch phrase.
Name-free interaction skill launch phrases must meet the following requirements:Variety: You should provide a good variety of skill launch phrases to offer unique interactions to customers. If your skill can handle specific use cases, make sure to include those in your skill launch phrases. For instance, customers would be interested to know if a weather forecast skill can answer "what is the fishing forecast for lake chelan" or "how should I dress tomorrow" or "give me today's allergy forecast".
Skill Capabilities: Skill launch phrases should accurately reflect skill capabilities. Make sure to avoid generic launch phrases that conflict with other use cases. For example, a sound skill should avoid adding the phrase "turn on fireplace" because other customers may use that phrase to turn on the actual fireplace. A more accurate choice for a name-free interaction with a sleep sound skill is "turn on fireplace sound" or "turn on fireplace noise" since it is more relevant to the skill's capabilities.
Brand: You should build skill launch phrases that capture your brand, which will not only reduce use case conflicts for bad CX but also increase skill awareness for customers. You can include part or full skill name or recognizable branding in the launch phrases. For example, ‘acme quiz’.
Complete utterances: You should avoid one token and generic skill launch phrases that can be interpreted in multiple ways. Keep the following best practices in mind:
Build your launch phrases to be specific to your skill's use cases. For instance, "cancer" can be interpreted as a disease or a star sign. If the skill is for horoscope, you should make sure to disambiguate by adding context. For example, use "cancer horoscope" and "horoscope for cancer" and "give me cancer horoscope". In order to foster a linguistically-natural interaction, build sample utterances that include both an object and a verb. For example, "horoscope" wouldn't be a good sample utterance because the full interaction would be similar to a user saying "Alexa, horoscope". A better alternative would be "give me today's horoscope".
Und dazu noch Intent Launch Phrases:
Intent launch phrases requirements
For Name Free Interaction, you can identify which intents are natural ingress points (or invocation points) for your skill. Where end users might currently need to say "Alexa, open Tasty Recipes Skill and give me a recipe for meatballs", you can indicate to Alexa that your getRecipe intent is a natural ingress point, and provide common natural phrases that would be used to deep-link into this intent such as simply, "give me a tasty recipe for meatballs".Name-free interaction intents and intent launch phrases must meet the following requirements:
DON’T Include slots in the intent launch sample phrases.
DO: Be sure that the sample utterances for your NFI intents support the Name-free Interaction outside of the Skill. Some skills will require some optimization to utterances in order to better train the new system. Until now, your VUI may be trained with utterances that perform in the context of being “in the skill”, as such one word utterances and some phrases are not ideal for helping Alexa match requests from users outside of your skill to your NFI intents.
Highlight important use cases:The phrases provided in the nfi container give you the mechanism to indicate which sample utterances/use cases are of the highest importance so that we can weight these utterances among the rest.
Variety: You should provide a good variety of intent launch phrases to offer unique interactions to customers. If your skill can handle specific use cases, make sure to include those in your intent launch phrases. For instance, customers would be interested to know if a weather forecast skill can answer "what is the fishing forecast for lake chelan" or "how should I dress tomorrow" or "give me today's allergy forecast".
Skill Capabilities: Intent launch phrases should accurately reflect skill capabilities. Make sure to avoid generic launch phrases that conflict with other use cases. For example, a sound skill should avoid adding the phrase "turn on fireplace" because other customers may use that phrase to turn on the actual fireplace. A more accurate choice for a name-free interaction with a sleep sound skill is "turn on fireplace sound" or "turn on fireplace noise" since it is more relevant to the skill's capabilities.
Complete utterance: You should avoid one token and generic sample utterances that can be interpreted in multiple ways. Keep the following best practices in mind:
Build your intent launch phrases to be specific to your intent's use cases. For instance, ‘cancer’ can be interpreted as a disease or a star sign. If the skill is for horoscope, you should make sure to disambiguate by adding context. For example, use ‘cancer horoscope’ and ‘horoscope for cancer’ and 'give me cancer horoscope'. In order to foster a linguistically-natural interaction, add intent launch phrases that include both an object and a verb. For example, "horoscope" wouldn't be a good sample utterance because the full interaction would be similar to a user saying "Alexa, horoscope". A better alternative would be "give me today's horoscope". You should provide accurate slot entries with regard to intent response. For example, the developer of an animal sounds skill should add all supported animal types for the slot value '{animal}' instead of only listing cat and dog.
Number of utterances: If your intent has only one to a few sample utterances this is not enough to train Alexa on how to map name-free utterances to your intents. We recommend you try to have 10 sample utterances per ingress point in your interaction model including your 5 intent launch phrases.
-
@apollon77
Aha!!!
Das klingt vielversprechend,
Nehmen wir mal an wir hätten zwei Butler im Haus. Alexa und Jarvis.
Dann könnte man doch vielleicht die Alexa immer Bitten dem Jarvis was zu sagen.
Also "Alexa, sag Jarvis dass er das Licht ausmachen soll"
Das wäre auch jeden Fall nicht perfekt aber intuitiver. Und das schnallt auch ein Gast.
Coll wäre ja dann auch wenn Jarvis mit anderer Stimme den Befehl bestätigt.
Gruss Ralf -
@derrapf Theme ist nur was nehmen .. die Jarvis, Sam, "dem Haus" (oder was auch immer besser ist) Diskussion hatten wir auch schonmal Auch wieder schwierig da alle vorstellungen unter einen Hut zu bringen