Expertenbeitrag von Roman Alexander | Alexa-Skill Fachmann Alexa Skills entwickeln: technischer Überblick

Roman Alexander ist nicht nur Alexa-Skill-Experte sondern auch Buchautor und Betreiber von smart-home-system.org. In diesem Artikel gibt er einen technischen Überblick über Amazons Alexa und die Alexa Skill Entwicklung im allgemeinen.

Ein technischer Überblick zu Amazons Alexa und der Alexa-Skill-Entwicklung im Allgemeinen

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.

Schematischer Alexa-Überblick

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.

Ein Custom Alexa Skill besteht aus dem Skill Service und dem Skill Interface

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.

Roman Alexander - selbstständiger App-Entwickler und erfolgreicher Buchautor

Roman Alexander beschäftigt sich gerne mit neuesten Technologien und liebt es, innovative Dinge auszuprobieren. Dabei fokussiert er sich vor allem auf verteilte Technologien und das Smart Home. Zum Thema Smart Home ist er auch als Buchautor erfolgreich mit seinen Büchern "Alexa Skills entwickeln" und "Amazon Echo – das Handbuch für Alexa, Echo Dot und Smart Home".

Neues zu Alexa Skills
verwandte Themen
News