Code verstehen
Beim erstellen eines Alexa Skills stellt es Amazon jedem frei, diesen mit einer modernen (Programmier-)Sprache seiner Wahl zu erstellen, hierzu zählen: Java, Phyton und C++. In unserem Beispiel haben wir auf Node.js zurückgegriffen. Bei Node.js handelt es sich um eine serverseitge JavaScript-Plattform. Das ereignisgesteuerte Modell von Node.js eignet sich hervorragend zum erstellen eines Alexa Skills.
Außerdem ist Node.js eines der größten Ökosysteme für Open Source-Bibliotheken. Eine solche Bibliothek ist das von Amazon bereitgestellte Alexa-SDK.
‘use strict’;
Mit ECMA5 wurde die Richtlinie “use strict” eingeführt. Durch die Deklaration mit ‘use strict’; legen Webbrowser einen strengeren Maßstab an den Tag. Hierzu gehört unter anderem, dass falls eine Variable nicht deklariert wird, ein Fehler (Reference Error) zurückgegeben wird.
Die Deklaration zu Beginn des Skripts sorgt für eine globale Gültigkeit.
const Alexa = require(‘alexa-sdk’);
Mit der obigen Codezeile wird die Alexa-SDK Bibliothek in die Lambda Funktion integriert. Hierdurch werden die Kernfunktionen von Alexa in der Lambda Funktion verfügbar gemacht. Bedienen hierzu muss man sich der ‘require()’ Anweisung.
const handlers = { … };
Immer wenn eine Lambda Funktion erstellt wird, wird ein handler spezifiziert. Sobald Alexa eine Anforderung an die Lambda Funktion sendet, fängt das Script mit der Verarbeitung der Anforderung an. All diese Anforderungen werden von einem Objekt namens handler verarbeitet.
Der handler teilt Alexa mit, wie mit verschiedenen Anforderungen umzugehen ist.
‘GetNewFactIntent’: function ()
Innerhalb des Objekts handlers werden die Intents des Interaktionsmodells abgebildet. Hinzugefügt wird ein Intent in einen handler durch Nennung des Namens des Intents. Solange der Name der Handler-Funktion mit dem Namen des Intent übereinstimmt, ordnet das Alexa SDK das gewünschte Intent dem entsprechenden handler automatisch zu.
Im Beispiel wird der ‘GetNewFactIntent’ dann ausgeführt, wenn man zu Alexa eines der folgenden Sätze sagt:
Hierbei handelt es sich um die Utterences, die zum Intent erstellt wurden sind.
‘LaunchRequest’: function ()
Bei einem LaunchRequest muss kein spezifischer Intent, samt Utterences erstellt werden.
Die Alexa SDK-Bibliothek enthält unter anderem die Methode .emit (), die eine JSON-Antwort generiert, wenn Alexa den GetNewFactIntent auslöst. In diesem Beispiel wird mit
this.emit(‘GetFact’);
auf die gleichnamige Funktion zugegriffen ( aufgerufen).
exports.handler = function (event, context) {…}
Funktion die jedesmal AWS Lambda aufruft, wenn Alexa den Code ausführt. Notwendig für alle Lambda-Funktionen.
const alexa = Alexa.handler(event, context);
- event: Ereignisdaten werden an den handler übergeben.
- context: handler werden Laufzeitinformationen der Lambda-Funktion zur Verfügung gestellt.
alexa.registerHandlers(handlers);
Sorgt dafür, dass die Lambda-Funktion jedesmal aufgerufen wird, wenn Alexa den Skill anwendet.
alexa.execute();
Die Logik der Fertigkeit wird ausgeführt.
0 Kommentare