In seinen ersten beiden Artikeln hat unser homeandsmart-Experte Roman Alexander nun die Grundlagen der Alexa-Skill-Typen gezeigt und erklärt, wie man in fünf Minuten einen Flash Briefing Skill einrichten kann. Um die Serie zu vervollständigen, gibt er nun noch einen technischen Überblick über Alexa als Ganzes:
Roman Alexander über den schematischen Alexa-Überblick
Hier nun ein schematischer Überblick über Alexa. Der Alexa Cloud-Service erhält eine Anfrage (request) und reagiert darauf mit einer „response“, die für den Skill zum Ausführungszeitpunkt ein „event“ darstellt.
Skill Interface und Skill Service
Ein Custom Alexa Skill besteht aus dem Skill Service und dem Skill Interface. Vereinfacht könnte man sagen, das Frontend ist die Sprachschnittstelle (Voice user interface oder VUI), die über das Sprachinteraktionsmodell konfiguriert wird. Das Backend, der Skill service, ist der Ort an dem die Logik deiner Skills liegt und ausgeführt wird.
Andere Skill-Typen haben denselben Aufbau, er wird allerdings von Amazon bereitgestellt. Nur bei Custom Skills kann man dies selber festlegen.
Skill Interface und interaction model
Im Skill Interface kann der Programmierer, je nach Skill-Typ, vieles festlegen. Das Skill Interface selbst besteht hauptsächlich aus dem „Interaction model“. Das ist die Datei, die alle intents, utterances, slots und optional Dialogtypen für Mehrfachdialoge eines Alexa-Skills enthält.
Somit legt sie die Logik des Skills und die Sprachschnittstelle fest, über die Benutzer mit dem Skill interagieren. Interaction models werden für jede Sprache einzeln in einer JSON-Datei festgelegt, die im Ordner „models“ abgelegt wird. Somit liegen in /models bspw. bei einem Skill, der auf Deutsch und Englisch verfügbar ist, folgende Dateien:
- en-US.json
- de-DE.json
Das Interaction model kann auch Regeln zur Priorisierung von Nutzeranfragen beinhalten. Das Interaktionsmodell ist also wie die Abbildung einer grafischen Benutzeroberfläche für Alexa.
Das Interaktionsmodell-JSON wird unterteilt in drei Bestandteile:
languageModel: Das languageModel beinhaltet alle „Intents“ für die Sprachanwendung. Intents sind einzelne Anforderungen eines Nutzers in einem Dialog, beispielsweise wenn der Nutzer in einem Ratespiel nach einer neuen Frage verlangt, oder das Programm beenden will, oder in einen anderen Modus gehen will. Intents sind ähnlich wie eine Methode in einem Programm, beispielsweise sind standardmäßig die folgenden Intents in Custom Skills angelegt:
- CancelIntent
- HelpIntent
- StopIntent
- NavigateHomeIntent
- FallbackIntent
Jeder Intent enthält drei Felder, das Intent-Feld mit dem Namen, das Slot-Feld mit einem oder mehreren Slots und unter „samples“ die sogenannten „utterances“ (Äußerungen).
Utterances
Unter "samples" können eine oder mehrere Beispiel-Äußerungen auf diesen Intent gemappt werden, um ihn zu starten. So müssen die Nutzer nicht immer denselben Satz sagen, um genau diesen Intent auszulösen. Außerdem kennen die Nutzer den Satz nicht, also sollte hier eine möglichst breite Verteilung von natürlich klingenden Sätzen zu finden sein. Beispielsweise sagt nicht jeder „Sag mir...“, sondern auch „Gib mir...“, „Finde für mich...“, und so weiter.
Slots
Slots sind die optionalen Arguments in einem Intent, also beispielsweise Namen, Mengen oder Daten, und werden durch ihren Datentyp definiert. Slots werden mit geschweiften Klammern und ihrem jeweiligen Namen referenziert. Meistens gibt man ihnen sprechende Namen, zum Beispiel "{vacationPlace}" für einen Skill zur Urlaubsplanung.
Es werden einige Slot-Typen und Intents von Amazon bereits ausgeliefert, man erkennt sie an dem vorgestellten Präfix „AMAZON“. Einige der bereits verfügbaren Slot-Typen sind zum Beispiel „LITERAL“ (veraltet), „NUMBER“ oder „DATE“.
Andere, selbst angelegte Slot-Typen, sind im languageModel unter „types“ abgelegt, inklusive aller möglichen Ausprägungen für den Slot-Typ.
Diese „Custom Slots“ helfen Alexa, die Präzision bei der Erkennung von Anfragen zu steigern. Beispiel könnten in einem Skill für U-Bahn Fahrpläne die Namen der Stationen sein. Allerdings bietet Amazon viele Slots bereits an, bei denen auch geografische Informationen beinhaltet sind. Es bietet sich dann immer an, die Amazon Slots zu verwenden. Auch können die slots von Amazon mit weiteren Einträgen erweitert werden, was im Kapitel 5 – häufige Fragen – gezeigt wird.
Auch beinhaltet languageModel den „Invocation Name“, er ist der eindeutige Name, mit der der Skill aufgerufen wird.
Dialog
Nach dem languageModel folgen die Elemente für den Dialog. Ein „Dialog“ ist ein Gespräch des Benutzers mit Alexa, in dem Alexa Fragen stellt und der Benutzer antwortet und wird auch als „session“ bezeichnet. Der Dialog ist an einen Intent gebunden, der den generellen Request des Nutzers repräsentiert. Alexa führt einen Dialog so lange, bis alle Slots, die vom Dialogmodell vorgegeben sind, gefüllt und bestätigt sind.
Daher werden im Dialog-Teil nur intents aufgeführt, bei denen es notwendig ist, slots zu füllen. Intents ohne slots könnten beispielsweise Anweisungen an Alexa sein. Bei intents mit slot(s) wird dann angegeben, ob eine Bestätigung (confirmation) oder ein Aufrufen (elicitation) notwendig ist. Außerdem werden hier Eingaben (prompts) für den jeweiligen intent referenziert, die Alexa dann konkret in diesem intent verwenden wird.
Prompts
Alexas Antworten (prompts) in einem Dialog werden im dritten Teil des JSONs angegeben und haben eine ID zur Referenzierung im Dialogmodell. Alexa kann so nachfragen oder eine Antwort ausgeben. Man kann zudem für denselben Prompt zur Variation mehrere Varianten, also andere Sätze angeben.
Das Handbuch zur Alexa Skill Entwicklung
Mehr zur Alexa Skill Entwicklung findet sich unter smart-home-system.org, dem Expertenblog von Roman Alexander - oder in seinem Buch „Alexa Skill entwickeln: Das Handbuch für Einsteiger“
Mehr Experten auf home&smart
Lesenswerte Expertenblogs finden Sie in unserem Experten Blog-Verzeichnis
Weitere Experten-Beiträge finden Sie in unserem Experten-Verzeichnis
Die mit * gekennzeichneten Links sind sogenannte Affiliate Links. Kommt über einen solchen Link ein Einkauf zustande, werden wir mit einer Provision beteiligt. Für Sie entstehen dabei keine Mehrkosten.
Wir haben Kooperationen mit verschiedenen Partnern. Unter anderem verdienen wir als Amazon-Partner an qualifizierten Verkäufen.