Sprachassistenten sind umstritten. Die eine Seite hat Angst vor der Totalüberwachung, die andere Seite ist begeistert durch die neuen Möglichkeiten. Auch wenn Alexa von Haus aus schon einiges kann, mit Skills, quasi die Apps für Alexa, können noch weitere Fähigkeiten dazukommen.

Alexa-Skill Programmierung
Die größte Herausforderung dabei ist die Umstellung der Bedienung. Kein Bildschirm, keine Touchbedienung, keine grafische Oberfläche – Nutzer wie Entwickler müssen sich komplett auf ein anderes Interface einlassen.
Amazon bietet für Skill-Entwickler reichlich Informationen, allerdings vornehmlich in englischer Sprache, (meiner Meinung nach) ziemlich unstrukturiert und bezieht sich weitgehend auf die Verwendung von NodeJS. Ein kleiner Skill mit einfachen Informationen die dem Nutzer kurz mitgeteilt werden, ist auch ohne viel Programmierung schnell erstellt. Sobald die Dialoge intensiver und weitere Informationen vom Nutzer benötigt werden, steigt allerdings die Komplexität.
JavaScript, Python und PHP
Amazon stellt für Alexa-Skills alles bereit. Entwicklungsumgebung, das Hosting mit NodeJS und die Integration der grundlegenden Funktionen. Für die Skilllogik kann JavaScript, Python oder PHP als Programmiersprache verwendet werden, letzteres aber nur, wenn selbst gehostet wird.
Ich habe bereits kleinere Skills mit PHP entwickelt. Grob gesagt, holt sich der Skill aus einem PHP-Skript alle nötigen Informationen und teilt sie so dem Nutzer mit. Das geht recht einfach, sobald aber das Dialogmodell ein gewisses Level übersteigt, wird es auf diesem Weg zum Teil doch sehr mühsam und die Fehlersuche erleichtert es auch nicht gerade.
Der Umstieg auf Alexa-Hosted-Skills liegt nahe, aber der fehlende Durchblick und die dafür nötige Zeit die aufgewendet werden muss, hat mich immer abgeschreckt. Zudem stehe ich auf…
…Kriegsfuß mit JavaScript
JavaScript und ich werden keine dicken Freunde mehr, da sich die Syntax nicht mit meiner Denke vereinbart. Was natürlich nur bedingt an JavaScript liegt, sondern wohl vielmehr an einem Mangel nötigen Hirnschmalzes…
Und dann noch serverseitiges JavaScript mit NodeJS einsetzen? Na vielen Dank.
Bei der PHP-Lösung zu bleiben, war aber nun mal dauerhaft auch keine Lösung. Da kam mir das Buch „Alexa Skills programmieren“ schon recht. Also Augen zu und durch.

Der Aufbau des Buches
Das Buch richtet sich zwar an Einsteiger in der Skill-Programmierung, aber ein wenig Programmiererfahrung kann zum besseren Verständnis definitiv nicht schaden.
Sammy Zimmermanns steigt auch gleich ein mit einem kleinen Skill, der dem Nutzer (einfache) Informationen ausgibt. Dabei werden aber bereits Intents und Utterances erklärt. Solch ein Skill ist schnell „zusammengeklickt“, Skills von dieser Art gibt es aber zuhauf und haben auch meist einen fragwürdigen bzw. kurzzeitigen Nutzen. Das noch weit mehr geht, offenbart sich in den nächsten Kapiteln.
Denn es wird noch deutlich komplexer, als nur ein paar Fakten vorzulesen. Antworten können für später gespeichert und verwendet werden, Bilder und Videos lassen sich auch auf Echo-Geräten mit Display anzeigen.
Besonders wichtig sind die Dialoge. Damit hier für den Nutzer ein weitgehend natürliches Gespräch entsteht, erfordert es doch einiges an Arbeit.
Neben weiteren technischen Möglichkeiten der Entwicklung, die weitgehend kostenlos von Amazon zur Verfügung gestellt werden, geht Sammy Zimmermanns auch auf die Verwendung von externen Daten ein. Die Quelle ist dabei letztlich nicht wichtig, es kommt nur auf die richtige Konnektivität an.
Die letzten etwa 60 Seiten des Buches beschäftigen sich mit dem Veröffentlichen und Bekanntmachen des eigenen Skills und wie damit auch Geld verdient werden kann.

Sprache verstehen und auswerten
Alexa ist wie alle Computer: erstmal strunzdumm. Sie kann nur das, was in der Programmierung vorgegeben wird. Und genau hier liegt eine der wesentlichen Aufgaben in der Entwicklung von Alexa-Skills: möglichst viele Ereignisse bzw. Sprachkonstrukte die der Nutzer in das Gerät spricht voraus erahnen und anwenden zu können. Das System Alexa versteht nur das Wort und liefert es an den Skill weiter. Was der damit anfängt, liegt beim Entwickler.
Darum ist ein Verständnis des Dialogmodells sehr wichtig um Intents, Slots und Utterances richtig einsetzen zu können. Basierend darauf ergeben sich früher oder später auch Verzweigungen im Ablauf, oder es müssen Schritte noch einmal wiederholt oder zwischengespeichert werden. Genau an diesen Dingen war mit meiner bisherigen Lösung ein produktives Weiterkommen nicht mehr so wirklich möglich.
Diesen Abschnitt empfinde ich als einen der wichtigsten im Buch und wird auch sehr gut und anschaulich erklärt.
Das ist auch gut so, denn erst dann ergeben sich noch einige weitere Möglichkeiten.
Externe Quellen, MP3, Videos, Zahlungen, Alexa-App
Sobald ein Skill aktuelle Informationen bereitstellen soll, sind externe Quellen beinahe unumgänglich. Sei es nun ein Textfile was regelmäig bereitgestellt wird, die Abfrage einer Datenbank oder das Abspielen einer MP3-Datei – ohne eine externe Datenquelle wird das nur schwierig möglich.
Auch dieser Aspekt findet im Buch Berücksichtigung, genau wie das Thema Zahlungen. Amazon bietet nämlich für Entwickler die Möglichkeit, mit Skills Geld zu verdienen. Entweder mit kostenpflichtigen Skills oder mit Zusatzleistungen, die direkt im Skill erworben werden können.
Das ist aber nicht das Ende der Fahnenstange, denn auch Online-Shopping-Skills für den eigenen Webshop sind möglich. Bei Produkten, die unbedingt auf eine visuelle Darstellung angewiesen sind ist das zugegebenermaßen natürlich etwas schwer, Alexa-Skills haben aber die Möglichkeit, die Alexa-App auf dem Smartphone mit in das „Skillgeschehen“ mit einzubeziehen. Darin lassen sich dem Nutzer weitere Informationen geben, die über reines Audio nicht darstellbar sind.
Sinnvolle Skills
Ich habe selbst drei Echo und einen Fire-TV-Stick. Hauptsächlich nutze ich die Echos für Musik und Podcasts zu hören und zur Steuerung diverser Steckdosen. Der einzig wirklich sinnvolle Skill, der mir bisher untergekommen ist und auch wirklich regelmäßig benutzt wird, ist der Abfallkalender.
Seitdem habe ich nicht einmal mehr vergessen den Müll an die Straße zu stellen. Dieser Skill ist ein perfektes Beispiel wie sich externe Daten mit Alexa verknüpfen lassen und dabei auch die Alexa-App auf dem Smartphone noch mit einbezogen wird bzw. einbezogen werden muss.
Fazit: PHP ade
Dank dem Buch werde ich meine bereits fertigen und nur mäßig funktionierenden Skills umstellen. Auch wenn die Entwicklung im Browser ungewohnt und irgendwie sperrig ist.
Zimmermanns stellt im Buch auch eine Methode mit Visual Studio Code vor, mit der Skills auch lokal entwickelt werden können.
Klare Empfehlung also: Wer vor Utterances, Intents, Slots und Slot-Types sitzt und Alexas berühmtes „Das weiß ich leider nicht“ durch die Gedanken zieht, wird mit diesem Buch eine große Hilfe erhalten. Der Schreibstil ist locker und das Buch gut strukturiert.
Was sehr nervt ist die Bindung als Taschenbuch. Hier hätte ich mir ein Hardcover gewünscht, was nach dem Öffnen auch so hinter der Tastatur liegen kann.