Anleitung zum Erstellen eines Alexa Skills Alexa Skills selbst programmieren - so geht's

Alexa Skills sind Anwendungen von Drittanbietern, die ihre Services über Amazons Sprachassistentin Alexa zur Verfügung stellen wollen. Vom Pupsgenerator zum Smart Home-Skill: Jeder kann mit dem Alexa Skills Kit selbst einen Skill programmieren. Unser Alexa Skill Experte Roman Alexander erklärt, wie das geht und was dazu nötig ist.

Jeder kann mit dem ASK einen Alexa Skill programmieren

Alexa Skills erstellen: Das sind die Skill-Arten

Um mit Alexa als Entwickler zu beginnen, muss man zuerst die verschiedenen Möglichkeiten verstehen, wie man an Alexa und die Alexa Entwicklerumgebung, und vor allem an das „Alexa Skills Kit“ herangehen kann.

Zunächst ist es wichtig zu wissen, dass Amazon mehrere Skill-„Vorlagen“ bereitstellt. Je nachdem, welche Vorlage man verwendet, kann man sich dann Programmieraufwand sparen, da man eventuell bereits auf Vorarbeit von Amazon zurückgreifen kann. So kann man den eigenen Skill in einigen Fällen sehr schnell entwickeln. Das gilt sowohl für die Flash Briefing Skills als auch die Smart Home Skills, die mit Hilfe einer bereitgestellten API erstellt werden. Für sie existieren bereits APIs, die weniger Kontrolle über den Skill erlauben, aber die Entwicklung auch vereinfachen. Es gibt folgende Skill-Arten:

  • Flash Briefing Skills: für Zeitungen oder News-Seiten gut geeignet.
  • Smart Home Skills: für die Anbieter von Smart Home-Geräten geeignet.
  • Video Skills: für Video-Anbieter wie Netflix geeignet.
  • Custom Skills: für alles andere, beispielsweise Spiele.

Elemente eines Skills

Skill Interface und Skill Service: Ein 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 der Skills liegt und ausgeführt wird. Das passiert in der Praxis meist in AWS Lambda.

Flash Briefing Skills

Flash Briefing Skills verwenden entweder einen RSS- oder JSON-Feed, der die neuen Elemente enthält, die als Teil des Flash Briefings vorgelesen werden. Solche Skills sind einfach zu entwickeln und eignen sich gut für Zeitungen und Blogger. Der Skill Service ist in diesem Fall keine Lambda-Funktion, sondern der RSS- oder JSON-Feed. Diese Art von Skills hat allerdings auch nur wenige Zusatzfunktionen.

Abbildung: Schematische Darstellung eines Flash Briefing Skills

Alexa Smart Home Skills

Smart Home Skills hingegen haben eine Benutzerschnittstelle (API), welche eine AWS Lambda-Funktion erfordert, die als Adapter für die Integration des Endgeräts fungiert. Vorteil dabei ist, dass man kein eigenes VUI entwickeln muss, sondern auf Amazon zurückgreifen kann. Anhand dieser API kann dann ein Smart Home-Befehl richtig interpretiert werden, und der Smart Home Anbieter kann sich auf die eigentliche Arbeit mit seinen Geräten konzentrieren.

Abbildung: Schematische Darstellung eines Smart Home Skills

Alexa Video Skills

Video Skills wurden entwickelt, um es Nutzern zu ermöglichen, Videos (und Filme) zu finden und anzusehen, ohne eine bestimmte Fähigkeit aufrufen zu müssen. Ein Nutzer könnte beispielsweise sagen: „Alexa, spiel Batman Returns“, ohne einen Anbieter oder ein Gerät anzugeben. Durch die Video Skill API ist Alexa über Videogeräte und -dienste informiert, die ein Benutzer besitzt oder abonniert hat, und ermöglicht es so, Videos zu zeigen.

Alexa Custom Skills

Custom Skills sind die flexibelste, aber auch komplexeste Variante, da der Entwickler selber das Interaktionsmodell bereitstellen muss. Das Interaktionsmodell ist im Wesentlichen das „Gespräch“, der Dialog zwischen Alexa und dem Benutzer. Es bildet die verschiedenen Arten ab, wie Benutzer ihre Frage stellen, wie Alexa die Informationen sammelt und wie Alexa die Anfrage beantwortet.

Custom Skills werden entweder in AWS Lambda gehostet, bei Amazon Alexa oder in einem selbst festgelegten HTTPS-fähigen Webserver. Ein eigener Server muss allerdings von Amazon geprüft werden, um mit dem notwendigen Zertifikat ausgestattet zu werden.

Custom Skills unterstützen auch die sogenannten Slots, die im Grunde Benutzereingaben darstellen, mit denen der Skill weiter arbeiten kann. Slots sind analog zur Programmierung Variablen, die einen Datentyp, einen Slot type haben. Beispiel dafür sind die Slot types AMAZON.NUMBER oder AMAZON.DURATION. Als Entwickler kann man auch eigene Slot types festlegen.

Abbildung: Schematische Darstellung eines Custom Skills

Den eigenen Alexa Skill erstellen - das ist zu beachten

Bei der Programmierung von Alexa Skills muss man sich vorher im Klaren sein, welche Funktionen der Skill genau haben soll und zu welchem Zweck er dient. Die gerade beschriebenen Skill-Templates können als Hilfe dienen, da für viele Zwecke eine der bereitgestellten Vorlagen von Amazon geeignet ist.

Für alle anderen muss allerdings ein Custom Skill entwickelt werden. Bei dessen Entwicklung sollte man allerdings häufige Fehler vermeiden. Darunter fallen zum Beispiel:

  • Unzureichende Bereitstellung von Wörtern  in den Slots: manchmal verwenden Menschen für ein- und dasselbe Wort eine Vielzahl an Synonymen, die teilweise auch durch Akzent sich unterscheiden. Die Slot types unterstützen Synonyme für ein Wort, die man aber auch entsprechend angeben muss.
  • Nutzerführung klarstellen: dem Nutzer sollte jederzeit klar sein, wo er sich befindet. Die Verwendung der von Amazon angebotenen Hilfe-Funktion ist wichtig, um schlechte Nutzer-Erfahrungen zu vermeiden.
  • Analysieren der Nutzereingaben und viele Tests: bevor ein Skill live geht, sollte er am besten mit einem Testfeld an Nutzern getestet werden. Amazon bietet eine Möglichkeit zum Beta-Test an, zudem gibt es eine Vielzahl an Möglichkeiten, um Skills auch während der Entwicklung zu testen.

ASK: So wird der Alexa Skill erstellt

Das Skill Interface eines Alexa Skills wird zunächst in der Alexa Developer Console entwickelt, wohingegen der Skill Service, wie  vorhin beschrieben, entweder in AWS Lambda gehostet wird, oder in einem eigenen Webservice.

Funktionen für Alexa-Skills, die in AWS Lambda gehostet werden, kann man in Node.js, Java oder Python schreiben, während ein eigener Webservice in jeder geeigneten Sprache erstellt werden kann, solange die Amazon API damit erreicht werden kann. Für die drei genannten Programmiersprachen steht jeweils ein Software Development Kit (SDK) zur Verfügung. 

Ebenfalls hilfreich ist im Umgang mit Alexa das Speech Synthesis Markup Language (SSML). Mit SSML kann man Alexas Antworten selber anpassen, da Alexa ansonsten die Antwort mit ihrem eigenen Standardverfahren durchführt.

Mehr zur Alexa Skills Entwicklung

Mehr zur Alexa Skill Entwicklung findet sich unter smart-home-system.org, dem Expertenblog von Roman Alexander - oder in seinem Buch "Alexa Skills entwickeln".

Mehr Experten auf home&smart

Lesenswerte Expertenblogs finden Sie in unserem Experten Blog-Verzeichnis
Weitere Experten-Beiträge finden Sie in unserem Experten-Verzeichnis

 

Weitere Alexa How-tos

Alexa Skills aktivieren und verwalten - so geht 's
Alexa Skills richtig anwenden
Alexa und Skills im Browser testen und nutzen
7 IFTTT Rezepte für Amazon Echo | Programmieren war gestern
Alexa FAQ: Häufige Fragen zur Nutzung von Amazon Echo und Alexa
Anleitung: Amazon Echo zurücksetzen bei Problemen
How-To: Sonos Multiroom Lautsprecher mit Alexa steuern
How-To: Google Suche mit dem Amazon Echo verwenden

Mehr Trends und Smart Home News

Wie gefällt Ihnen dieser Artikel?
gefällt das
Gefällt mir Gefällt mir nicht
Sie können den Artikel nur einmal bewerten.
Vielen Dank für Ihre Bewertung!
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".