SDK
Die CustomSDK von Finn Wehn wurde iteriert. Die ursprüngliche SDK ist hier dokumentiert. Die Änderungen werden hier beschrieben.
Konfigurationsobjekt
let configObject = {
mqtt: 'localhost',
intentHandler: () => {},
variables: {},
zigbeeTopic: "",
zigbeeUpdater: () => {},
zigbeeDevices: [],
zigbeeGroups: [],
postSlots: () => {},
customSlots: []
}
Die Eigenschaften zigbeeDevices und zigbeeGroups enthalten alle Zigbee Devices und alle in Zigbee2MQTT eingerichteten Gruppen.
Die Eigenschaft postSlots erhält eine Funktion zum Registrieren von neuen Sloteinträgen an Rhasspy. Dabei muss der Slotname und die neuen Einträge übergeben werden. Außerdem kann optional festgelegt werden, ob die existierenden Einträge mit den neuen Überschrieben werden sollen.
Die Eigenschaft customSlots ist eine Liste mit allen dynamischen Slots. Diese ist nach Skills sortiert. Ausschließlich die Detailseite nutzt diese Eigenschaft.
Sessiondata
let sessionData = {
siteId: "default",
sessionId: "",
skill: "",
answer: "",
fail: ""
}
Die sessionData erhält zusätzlich noch eine Eigenschaft fail. Dort werden die Fehlermeldungen fail aus den Manifest Dateien der Skills zur Laufzeit festgehalten.
Antwort und Fehler generieren
function generateFailResponse(vars = [""], index=0, separator = "#"){
let parts = sessionData.fail[index].split(separator);
let answer = parts[0];
for (let i = 1; i < parts.length; i++){
if(!vars[i-1]){
answer = answer + parts[i]
return answer
}
answer = answer + vars[i-1] + parts[i];
}
return answer;
}
Die Funktionen zur Generation von Antwort und Fehlermeldung sind bis auf die verwendete Eigenschaft der sessionData identisch. Sie erhalten eine Liste vars an einzusetzenden Wörtern und fügen sie in den durch den index definierten Satz ein. Dieser Satz wird dann zurückgegeben.
Aufzählung generieren
function generateEnum(list, join = "und"){
let enumeration=""
if(list.length>1){
for (let index = 0; index < list.length; index++){
if(!list[index+1]){
enumeration+=` ${join} ${list[index]}`
return enumeration
}
else
enumeration+=` ${list[index]}`
}
}
else{
enumeration=list[0]
return enumeration
}
}
Diese Funktion erhält eine Liste list an Wörtern und generiert daraus eine, mit den Verbindungswort join verbundene, Aufzählung. Diese wird zurückgegeben.