-
Notifications
You must be signed in to change notification settings - Fork 170
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update alexacustom.md #576
Merged
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,132 @@ | ||
--- | ||
title: "Alexa Custom-Skill" | ||
lastChanged: "14.09.2018" | ||
lastChanged: "01.02.2025" | ||
editLink: "https://github.com/ioBroker/ioBroker.docs/edit/master/docs/cloud/alexacustom.md" | ||
template: true | ||
--- | ||
|
||
# Der Alexa Custom-Skill | ||
|
||
?> ***Dies ist ein Platzhalter***. | ||
<br><br> | ||
Hilf mit bei ioBroker und erweitere diesen Artikel. | ||
Bitte beachte den [ioBroker Style Guide](community/styleguidedoc), | ||
damit die Änderungen einfacher übernommen werden können. | ||
## Was ist der ioBroker Alexa Custom Skill? ## | ||
|
||
Der ioBroker Alexa Custom Skill ermöglicht eine **erweiterte Sprachsteuerung** für dein Smart Home mit individuellen Befehlen. | ||
Im Gegensatz zum ioBroker.iot Skill, der Standard-Smart-Home-Befehle nutzt, erlaubt der Custom Skill **komplexe Interaktionen** wie Statusabfragen, | ||
individuelle Routinen oder das Starten von Automationen. | ||
|
||
Durch den Invocation Name `i o Broker` kannst du Alexa anweisen, bestimmte Aufgaben auszuführen oder Informationen aus deinem ioBroker-System abzurufen. | ||
|
||
### Funktionen und Möglichkeiten ### | ||
Der `ioBroker Custom` Alexa Skill ermöglicht individuelle Sprachbefehle für das Smart Home, Statusabfragen für Sensorwerte wie Temperatur oder Fensterstatus, die Steuerung von komplexen Szenen und Routinen sowie die Integration mit externen Diensten über ioBroker-Skripte. Er kann parallel mit dem `ioBroker.iot` Skill verwendet werden. | ||
|
||
### Einrichtung des ioBroker Custom Alexa Skills ### | ||
ioBroker.iot Adapter installieren: Der Custom Skill funktioniert nur mit dem ioBroker.iot Adapter. Falls dieser noch nicht installiert ist, kann er über den ioBroker-Adminbereich unter Adapter → ioBroker.iot Adapter installiert werden. | ||
|
||
### Alexa Custom Skill aktivieren ### | ||
|
||
Öffne die Amazon Alexa App oder rufe die Alexa-Skills-Seite auf. | ||
|
||
Suche nach `ioBroker Custom` Skill. | ||
|
||
Aktiviere den Skill und verknüpfe dein Amazon Alexa-Konto mit ioBroker. | ||
|
||
## Custom Skill - Eigene Sprachbefehle benutzen | ||
|
||
Die Antworten für den Custom Skill können auf zwei Arten verarbeitet werden: | ||
|
||
- mit text2command | ||
- mit JavaScript | ||
|
||
### text2command | ||
|
||
Falls eine `text2command`-Instanz in der Konfigurationsoberfläche definiert ist, wird die Anfrage an diese Instanz gesendet. | ||
|
||
`text2command` muss so konfiguriert sein, dass die erwartete Phrase erkannt und eine entsprechende Antwort generiert wird. | ||
|
||
### JavaScript | ||
|
||
Es besteht die Möglichkeit, die Anfrage direkt mit einem Skript zu verarbeiten. Dies ist die Standardoption, falls keine `text2command`-Instanz ausgewählt ist. | ||
|
||
Falls eine `text2command`-Instanz definiert wurde, muss diese Instanz die Antwort liefern, und die Antwort aus dem Skript wird ignoriert. | ||
|
||
Der Adapter stellt die Details in zwei States mit unterschiedlichem Detaillierungsgrad zur Verfügung: | ||
|
||
- `smart.lastCommand` enthält den empfangenen Text einschließlich Informationen über den Anfrage-Typ (Intent). Beispiel: askDevice Status Rasenmäher | ||
- `smart.lastCommandObj` enthält einen JSON-String, der zu einem Objekt geparst werden kann, welches die folgenden Informationen enthält: | ||
- `words`: Enthält die empfangenen Wörter als Array | ||
- `intent`: Enthält den Anfrage-Typ. Mögliche Werte sind: | ||
- v1 Skill: `askDevice`, `controlDevice`, `actionStart`, `actionEnd`, `askWhen`, `askWhere`, `askWho` | ||
- v2 Skill: `queryIntent` (wenn der gesamte gesprochene Text erfasst wurde), `controlDevice` (für ein Fallback mit nur teilweisem Text) | ||
- `deviceId`: Enthält eine Geräte-ID, die das Gerät identifiziert, von dem die Anfrage gesendet wurde (falls von Amazon bereitgestellt, sonst leer) | ||
- `deviceRoom`: Enthält eine zugeordnete Raumkennung, die in der ioBroker IoT-Admin-UI für gesammelte Geräte-IDs konfiguriert werden kann | ||
- `sessionId`: Enthält eine Sitzungs-ID der Skill-Sitzung, sollte gleich sein, wenn mehrere Befehle hintereinander gesprochen werden (falls von Amazon bereitgestellt, sonst leer) | ||
- `userId`: Enthält eine Benutzer-ID des Gerätebesitzers oder des interagierenden Benutzers (falls von Amazon bereitgestellt, sonst leer) | ||
- `userName`: Enthält einen zugeordneten Benutzernamen, der in der IoT-Admin-UI für gesammelte Benutzer-IDs konfiguriert werden kann | ||
|
||
Weitere Details zur Erkennung von Wörtern und den verschiedenen Anfrage-Typen des Alexa Custom Skills sind unter folgendem Link verfügbar: | ||
[ioBroker Forum](https://forum.iobroker.net/viewtopic.php?f=37&t=17452) | ||
|
||
### Antwort über `smart.lastResponse` State zurückgeben | ||
Die Antwort muss innerhalb von 200ms in den State smart.lastResponse geschrieben werden. Sie kann entweder ein einfacher Textstring oder ein JSON-Objekt sein. | ||
|
||
- Falls es sich um einen Textstring handelt, wird dieser als Antwort an den Skill zurückgesendet. | ||
- Falls die Antwort ein JSON-Objekt ist, können folgende Schlüssel verwendet werden: | ||
- `responseText`: Enthält den Text, der an Amazon zurückgegeben wird | ||
- `shouldEndSession`: Ein boolescher Wert, der steuert, ob die Sitzung nach der Antwort beendet wird oder für weitere Eingaben offen bleibt | ||
- `sessionId`: Enthält die Sitzungs-ID, für die die Antwort bestimmt ist. Falls nicht angegeben, wird die erste erwartete Sitzung verwendet. | ||
|
||
### Antwort über eine Nachricht an die iot-Instanz senden | ||
|
||
Die ioBroker iot-Instanz akzeptiert auch eine Nachricht mit dem Namen `alexaCustomResponse`, die den Schlüssel response enthält. Dieses Objekt kann die Schlüssel `responseText`,` shouldEndSession` und `sessionId` enthalten. | ||
|
||
Die iot-Instanz sendet keine Antwort auf die Nachricht zurück. | ||
|
||
### Beispiel eines Skripts zur Verarbeitung von Texten | ||
|
||
```js | ||
// Wichtig: ack=true setzen | ||
on({ id: 'iot.0.smart.lastCommand', ack: true, change: 'any' }, obj => { | ||
// Die Antwort muss innerhalb von 200ms vorbereitet und in iot.X.smart.lastResponse geschrieben werden | ||
setState('iot.0.smart.lastResponse', 'Received phrase is: ' + obj.state.val); // Wichtig: ack=false (Standard) | ||
}); | ||
``` | ||
|
||
### Beispiel eines Skripts zur Verarbeitung von JSON-Objekten | ||
|
||
```js | ||
// Wichtig: ack=true setzen | ||
on({ id: 'iot.0.smart.lastCommandObj', ack: true, change: 'any' }, obj => { | ||
// Die Antwort muss innerhalb von 200ms vorbereitet und in iot.X.smart.lastResponse geschrieben werden | ||
const request = JSON.parse(obj.state.val); | ||
const response = { | ||
responseText: 'Received phrase is: ' + request.words.join(' ') + '. Bye', | ||
shouldEndSession: true, | ||
sessionId: request.sessionId, | ||
}; | ||
|
||
// Antwort über State zurückgeben | ||
setState('iot.0.smart.lastResponse', JSON.stringify(response)); // Wichtig: ack=false (Standard) | ||
|
||
// Oder alternativ als Nachricht zurückgeben | ||
sendTo('iot.0', 'alexaCustomResponse', response); | ||
}); | ||
``` | ||
|
||
## Beispile für Sprachbefehle | ||
|
||
**Statusabfragen:** | ||
|
||
- „Alexa, frage ioBroker nach der Temperatur im Wohnzimmer.“ | ||
- „Alexa, frage ioBroker, ob das Garagentor offen ist.“ | ||
|
||
**Steuerbefehle:** | ||
|
||
- „Alexa, sage ioBroker, dass ich nach Hause komme.“ | ||
- „Alexa, bitte ioBroker, meine Kaffeemaschine zu starten.“ | ||
|
||
**Szenen und Routinen:** | ||
|
||
- „Alexa, sage ioBroker, dass ich schlafen gehe.“ | ||
|
||
## Vorteile des ioBroker Alexa Custom Skills ## | ||
|
||
Der ioBroker Custom Skill bietet eine hohe Flexibilität durch individuelle Sprachbefehle. | ||
Er ergänzt den IoT-Skill um eine umfassendere Sprachsteuerung, ermöglicht Statusabfragen für Sensorwerte und Systeminformationen und erlaubt die Integration von Automatisierungen und Skripten. Der Custom Skill bietet eine anpassbare und leistungsstarke Möglichkeit, das Smart Home über Alexa zu steuern. |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The word 'Beispile' is misspelled. It should be 'Beispiele'.
Copilot is powered by AI, so mistakes are possible. Review output carefully before use.