Einleitung

Vielen Dank für Ihr Vertrauen und den Kauf dieses Buchs. Die Entwicklung von Amazon Alexa und der Geräte unterliegt einer schnellen Dynamik. Ich habe versucht, die aktuellsten Entwicklungen in diesem Buch nach bestem Wissen und Gewissen zusammenzutragen. Sollte jedoch einer der Punkte bereits überholt sein, wenn Sie dieses Buch lesen, so bitte ich, dies zu entschuldigen.

Was noch vor gut zehn Jahren als Science-Fiction galt, gehört heute zu unserem Alltag. Sprachgesteuerte Geräte halten immer mehr Einzug in unseren Alltag. Fast jeder Smartphone-Nutzer hat die Möglichkeit, mit dem Google Assistant, Bixby oder eben auch Alexa zu interagieren.

Als Alexa-Nutzer und Skill-Entwickler möchte ich Ihnen mit diesem Buch einen Einstieg in die Alexa-Skill-Programmierung mit Node.js an die Hand geben. Ich hoffe, dass ich Sie kurzweilig in die Welt von Alexa einführen kann. Dabei greife ich auf Anekdoten aus meinem Familienalltag und Erfahrungen aus der Alexa-Skill-Programmierung mit der Programmiersprache JavaScript bzw. Node.js zurück.

Im Netz stoße ich immer wieder auf die gleichen Fragen und oft scheint den meisten Menschen nicht klar zu sein, dass es sich bei Alexa um einen cloudbasierten Dienst handelt, der Sprache nur als Interface nutzt. Die Logik dahinter ist meist kein Hexenwerk und hat nur indirekt etwas mit künstlicher Intelligenz‌ zu tun, je nach Definitionsart mehr oder weniger.

Trotzdem neigen wir Menschen dazu, Alexa im Alltag zu vermenschlichen. Das liegt vor allem an der Art und Weise, wie wir Alexa nutzen. In der Geschichte gab es noch nie eine Maschine, die wir einfach per Sprache bedienen konnten.

Als Alexa-Skill-Programmierer schwindet diese Illusion. Ein Ziel dieses Buchs ist es, Alexa und andere sprachgesteuerte Systeme zu entmystifizieren. Ich möchte Sie dazu ermächtigen, selbst den Ton in Ihren eigenen vier Wänden wieder anzugeben.

Wenn ich es dann noch schaffe, Sie dazu zu inspirieren, eigene Skills zu erstellen, hat dieses Buch seinen Zweck vollends erfüllt.

Also genug der Vorworte, packen wir es an!

Warum einen Alexa Skill programmieren?

Skills erweitern die Möglichkeiten von Alexa. Als Skill-Betreiber können Sie über das Alexa-Sprachinterface in Kontakt mit Ihren Nutzern treten und mit ihnen interagieren.

Als Suchmaschinenoptimierer und Publisher diverser Nischenblogs bekomme ich die Diskussion über den Wandel Googles von einer Suchmaschine zur Antwortmaschine mit. Viele SEOs kämpfen nun um »Position 0«. Das ist die Sprachantwort zu einer Suchanfrage und aktuell das oberste Ergebnis zu vielen Suchanfragen in Google.

Diesen Zirkus möchte ich als Publisher nicht mehr mitmachen, denn der Nutzen für den Publisher ist nicht erwiesen, wenn Google hergeht, sich den Content einer Seite schnappt und dem Nutzer die Antwort selbst sagt. In den meisten Fällen gelangt dann der Nutzer nicht auf die Seite des Publishers, sondern beendet seine Suche.

Als Publisher ist man der Dumme, wenn man hier nur auf Google vertraut.

Der Trend zur Voice Search‌ ist aber ungebrochen, so sollen im Jahr 2020 über 50% aller Suchen per Stimme erfolgen. Was können Sie also machen, um trotzdem Ihre Nutzer zu erreichen, ohne dass Sie von Google dabei übervorteilt werden?

Für mich war die Antwort schnell klar, als ich 2014 von Alexa hörte, dass Amazon sein System offen für Entwickler an den Markt bringen wollte. Ich wollte von nun an meinen Content primär über Alexa Skills veröffentlichen.

Zudem ist Sprache das natürlichste Interface, über das wir Menschen mit unserer Umwelt interagieren. Schon im Mutterbauch kommen wir mit Sprache in Berührung.

Sprachgesteuerte Systeme, wie Alexa mit ihren Skills, setzen Nutzungsbarrieren sehr niedrig an. Schon Kleinkinder können mit Alexa interagieren und ihre Ziele erreichen. Ältere Menschen haben oft keine Lust, neue Bedienkonzepte zu lernen, aber kaum eine Hemmschwelle, das Interface zu nutzen, das sie von Kindesbeinen an kennen: die Sprache.

Halten wir also fest, warum Alexa Skills in naher Zukunft sehr wichtig sein werden:

Über dieses Buch

Dieses Buch richtet sich an alle, die in die Alexa-Skill-Programmierung einsteigen möchten. Grundkenntnisse in JavaScript oder Webprogrammierung sind von Vorteil und erleichtern das Verständnis dieses Buchs. Ich habe jedoch darauf geachtet, Ihnen gleich am Anfang auch eine Möglichkeit zu zeigen, wie JavaScript-Code auch mithilfe eines Code-Generators im Netz automatisch erzeugt werden kann. So sind selbst blutige Anfänger in der Lage, einen ersten Skill zu erstellen.

Dieses Buch möchte vor allem anderen motivieren, in die Alexa-Skill-Entwicklung einzusteigen. Sie werden Schritt für Schritt in die Programmierung und in das Skill-Design eingeführt.

Aufbau des Buchs

Dieses Buch ist grob in drei Teile gegliedert. Teil I (Kapitel 1-4) beschäftigt sich mit den Grundlagen der Alexa-Skill-Programmierung.

In Kapitel 1 erkläre ich den Einstieg in die Alexa-Skill-Programmierung. Hier begleite ich Sie durch die Erstellung eines Alexa-Developer-Accounts und erkläre die grundlegende Funktionsweise eines Alexa Skills.

In Kapitel 2 zeige ich Ihnen, wie Sie den Kontext für Ja- und Nein-Antworten des Nutzers mit einem Skill erfassen können. Zudem erkläre ich den Unterschied zwischen Sitzungsattributen und persistenten Attributen.

Kapitel 3 befasst sich mit der Aussprache von Alexa und wie Sie diese mit SSML-Tags beeinflussen können.

Kapitel 4 stellt die Alexa-Interfaces in den Mittelpunkt. Es werden hier also Ausgabemöglichkeiten vorgestellt, die Sie potenziell mit einem Skill nutzen können. Außerdem wird hier die Frage geklärt, wie Sie Bilder und Videos für Ihren Skill verwenden können.

In Teil II (Kapitel 5-7) gehe ich auf die fortgeschrittenen Methoden und Techniken in der Skill-Programmierung ein.

Kapitel 5 widmet sich dem Dialogmanagement. Hier erkläre ich, wie Sie Zug um Zug Informationen im Dialog von einem Nutzer sammeln können und so aus den Antworten des Nutzers eine Antwort von Alexa erstellen können. Für Fortgeschrittene ist dann das Thema Kontextwechsel interessant, also die Frage, wie ein Skill damit umgeht, wenn ein Nutzer mal etwas anderes zwischenfragt, sodass er im Dialog nicht wieder von vorne anfangen muss.

In Kapitel 6 erkläre ich, wie Sie einen Skill in der AWS Cloud erstellen und Ihren Skill mit Microsoft Visual Studio Code programmieren können.

Kapitel 7 beschäftigt sich mit dem Thema API und wie Sie externe Informationen für Ihren Skill nutzen können. Sie lernen hier, wie Sie eine einfache externe Datenbank mit Hilfe von Google Sheets aufbauen und in Ihrem Skill für die Antwortausgabe nutzen können – oder, was für viele Onlinemarketer interessant sein dürfte, wie Sie die gegebenen Nutzerantworten per Post-Request in eine eigene Datenbank speichern bzw. für den E-Mail-Versand nutzen können.

In Teil III (Kapitel 8-10) werden schließlich die Skill-Promotion, die Vermarktung des Skills und Alexa-SEO thematisiert.

In Kapitel 8 erkläre ich, wie Sie Ihren Skill im Alexa Skill-Store eintragen und gebe Ihnen Tipps, wie Sie Ihren Skill von Amazon zertifiziert bekommen.

Das Kapitel 9 behandelt das Thema Alexa-SEO und erläutert Ihnen die Grundlagen, wie Alexa einen bestimmten Skill vorschlägt. Zudem gebe ich hier Tipps, wie Sie ihren Skill im Netz bekannt machen können.

In Kapitel 10 gehe ich auf die Thematik Voice Commerce ein und zeige Wege auf, wie Sie als Unternehmer bzw. Publisher mit Alexa Geld verdienen können.

Downloads zum Buch

Alle Codebeispiele finden Sie zum Download auf der Website des Verlags unter www.mitp.de/0114.

Wer Interesse an weiteren Code-Beispielen hat, dem empfehle ich auch das Repository von Amazon Alexa selbst. Sie finden es unter https://github.com/alexa oder, wenn Sie Interesse an den neusten Entwicklungen haben, unter https://github.com/alexa-labs.

Über die Projekte im Buch

Das Skill-Beispiel mit den Weltraumfakten, das im Verlauf des Buchs erstellt wird, ist ein rein theoretisches Projekt und wurde noch nicht veröffentlicht. Es wurde nur zu Anschauungszwecken erstellt und getestet. Darüber hinaus nutze ich in diesem Buch aber auch Code von Skills, die schon so in der freien Wildbahn und von Amazon zertifiziert sind. Hier werden mitunter nur einzelne Teilaspekte zur Veranschaulichung genutzt.

Was nicht in diesem Buch steht

Als Autor dieses Buchs fiel mir die Entscheidung recht schwer, welche Inhalte ich ausführlich darstellen und welche Themen ich nur anreißen sollte. An dieser Stelle möchte ich mich bei meiner Lektorin Janina Bahlmann bedanken, die mir immer wieder Hinweise gab, was für einen Leser interessant sein könnte und was für Anfänger eher schwer verständlich ist.

Das Thema APL, also Alexa Presentation Language, habe ich in dem Buch nur kurz angerissen. Es ist derart umfangreich, dass man hierzu schon fast ein eigenes Buch schreiben könnte. Zudem finden in diesem Teilaspekt der Skill-Programmierung immer wieder Änderungen und Neuerungen statt. Auch das Thema Skill-Zertifizierung ist dabei nochmal etwas komplexer, da hierbei auch die Bildschirmausgabe mitberücksichtigt wird.

Dann gibt es noch das Thema Amazon Pay, also die Möglichkeit, per Sprache einen eigenen Onlineshop anzubinden und unabhängig vom Amazon Marketplace reale Waren per Sprache zu verkaufen. Für mich persönlich ist das eines der spannendsten und von vielen noch unterschätzen Themen, aber eben auch für den Einstieg leider zu umfangreich und komplex.

Auch das Thema Account Linking wird hier im Buch nur sehr kurz angerissen. Die Idee hierbei ist, dass der Nutzer seine Profildaten von einem anderen Internetdienst nutzen kann und seine Skill-Nutzung in einer externen Datenbank dauerhaft gespeichert und genutzt werden kann.

All diese Themen wollte ich Anfängern oder Anfängerinnen nicht zumuten. Das wäre die Aufgabe eines anderen, umfangreicheren Buchs.

Über den Autor

[Bild]Sammy Zimmermanns ist Marketing-Kommunikationswirt (DAMK), seit 2006 ist er Blogger und Suchmaschinenoptimierer und berät seine Kunden, wie sie in der Suchmaschine Google nach vorne kommen und mehr Nutzer erreichen.

Er hat die Entwicklung des Onlinemarketings seit vielen Jahren verfolgt und online diverse Fachartikel zum Thema Suchmaschinenoptimierung und Alexa veröffentlicht.

Sammy Zimmermanns hat auf Fachkonferenzen zu dem Themen WordPress, Suchmaschinenoptimierung und Alexa-Skill-Programmierung gesprochen und betreibt den Alexa-Stammtisch Dresden. 2018 wurde er als Top SEO Influencer vom SEO-Portal ausgezeichnet. Seit 2016 beschäftigt er sich intensiv mit der Alexa-Skill-Programmierung in der Sprache Node.js.

Er lebt mit seiner Frau und seinen beiden Kindern in Dresden. In seiner Freizeit treibt er gerne Kraft- und Ausdauersport. Sie erreichen ihn per E-Mail unter: info@internet-pr-beratung.de.

Wie ich zum Programmierer wurde

Ich bin eigentlich kein Programmierer von Hause aus, wer ist das schon? Denn eigentlich bin ich Blogger über Kaffee und SEO-Themen und berate meine Kunden, wie sie bei Google möglichst weit vorne in der Suche erscheinen. Alle Kenntnisse habe ich mir autodidaktisch beigebracht – mithilfe des Internets und den Vorlagen, die Amazon allen Entwicklern frei zur Verfügung stellt.

Ich habe einen Echo Dot seit Herbst 2016 und gehöre zu dem Kreis der Nutzer, die nur auf Einladung einen Amazon Echo bestellen konnten. Die ganze Entwicklung hat mich fasziniert und ich war seit der Vorstellung von Alexa gefesselt von dem Gedanken, hier selbst etwas zur Verbesserung dieser Sprachassistentin beitragen zu können.

Erste Berührung mit der Skill-Programmierung hatte ich durch ein Video auf YouTube des YouTubers Venix (https://www.youtube.com/watch?v=v7vVywojhzE). Dort wurde Schritt für Schritt erklärt, wie man einen Google-Suche-Skill für Alexa erstellt.

Damals fand ich noch, dass eine Google-Suche für Alexa eine prima Sache wäre. Ich habe mich also an den Rechner gesetzt und bin dieses Tutorial Schritt für Schritt durchgegangen. Nach ein wenig Code-Frickelei war ich stolzer Ersteller eines Google-Suche-Skills für meine Alexa.

Neugierig, wie ich nun mal bin, habe ich mir auch die Google-Skill-Code-Dateien auf GitHub, die dieses Tutorial empfahl, angesehen. (https://github.com/tartanguru/alexa-google-search).

Ich eröffnete auch einen Developer-Account auf https://developer.amazon.com/de/ für die Erstellung meines Skills und Sprachmodells und einen AWS-Account unter https://aws.amazon.com/de/ für den eigentlichen Programmcode.

Eine mentale Hürde für viele ist das Hinterlegen der Kreditkartendaten für die Eröffnung des AWS-Accounts‌. Der YouTuber Venix versicherte mir, dass das hier eigentlich nur eine Formalie ist und man nichts für seine Skills bezahlen müsse.

Da mein Naturell relativ risikofreudig ist, habe ich seiner Aussage vertraut und es bis jetzt nicht bereut. Ich habe ohnehin nur eine Prepaid-Kreditkarte und konnte so einen eventuellen Schaden relativ sicher begrenzen.

Aber so viel vorweg, ich habe mithilfe des Internets bis heute keinen einzigen Cent an AWS‌ bezahlt. Denn Amazon hat ein AWS-Promotional-Credits-Programm‌. Jeder Entwickler, der dort angemeldet ist, bekommt monatlich AWS-Credits‌ im Wert von 100 Dollar geschenkt. Dieser Betrag reicht locker aus, um auch populäre Skills zu betreiben, und bei Bedarf werden diese Credits auch erneuert. Amazon will die Skill-Entwicklung und den -Betrieb für seine Entwickler kostenneutral halten.

Wer also Alexa Skills entwickeln möchte, sollte sich unbedingt hier anmelden:

https://developer.amazon.com/de/alexa-skills-kit/alexa-aws-credits.

Kapitel 1:
Der Einstieg in die Alexa-Skill-Programmierung

In diesem Kapitel werden Sie einen Hosted-Skill‌ direkt in der Alexa Developer Console‌ einrichten. Dafür nutzen wir auch gleich schon mal das von Amazon vorgegebene »Fact Skill‌«-Template‌, das Sie nach Ihrem Geschmack anpassen können. Hier im Buch geht es um einen einfachen Fakten-Skill zum Thema Weltraum. Sie können natürlich aber auch ein ganz eigenes Faktenthema wählen. Das Prinzip bleibt das gleiche.

Um Ihren eigenen Skill zu programmieren, benötigen Sie als Erstes einen Alexa-Developer-Account‌, damit Sie loslegen können. Dafür gehen Sie auf die Seite https://developer.amazon.com/alexa/console/ask.

[Bild]

Alexa-Developer-Console-Anmeldemaske

Klicken Sie nun auf Create your Amazon account.

[Bild]

Abb. 1.2: Alexa Developer Console, Create account

Jetzt geben Sie Ihren Entwicklernamen sowie Ihre E-Mail-Adresse ein und vergeben ein Passwort mit mindestens 6 Zeichen. Danach klicken Sie unten auf den blauen Button.

[Bild]

Abb. 1.3: E-Mail-Adresse bestätigen

Zu guter Letzt müssen Sie die Einrichtung mit einem One-Time Password‌ (OTP) bestätigen.

[Bild]

Abb. 1.4: Developer-Registrierung

Jetzt müssen alle Pflichtangaben in dem Formular ausgefüllt werden. Sie legen hier auch den Firmennamen fest, falls Sie für eine Firma Skills entwickeln möchten. Wenn Sie alles gewissenhaft ausgefüllt haben, klicken Sie auf Accept and Continue.

[Bild]

Abb. 1.5: Amazon Developer Services Agreement

In dieser Maske klicken Sie für den Ausdruck des Vertrages auf Print Agreement und anschließend auf Accept and Continue.

[Bild]

Abb. 1.6: Amazon Developer Console

Jetzt sind Sie in der Amazon Developer Console‌ registriert. Sie haben nun die Möglichkeit, hier Ihre Steuerdaten und Kontoverbindungen für App- oder Skill-Einnahmen zu hinterlegen. Dann haben Sie einen vollwertigen Amazon-Developer-Account und können neben Skills auch Apps für Smartphones entwickeln, aber das ist ein anderes Thema.

Fahren Sie in der Amazon Developer Console oben in der Navigation auf Alexa und klicken Sie anschließend im Untermenü auf Alexa Skills Kit.

[Bild]

Abb. 1.7: Alexa Skills Kit in der Navigation oben

Jetzt sind Sie in der Alexa Developer Console. Von hier aus überblicken Sie alle Ihre Skills, eventuelle Verdienste, Zahlungen sowie das Hosting, falls Sie »Alexa-Hosted« für Ihren Skill ausgewählt haben.

[Bild]

Abb. 1.8: Die Alexa Developer Console

Die Hürde, einen Skill zu entwickeln, hat Amazon immer weiter gesenkt und vereinfacht, indem Sie nun bei der Skill-Erstellung die Wahl haben: Sie können Ihren Programmcode in einer AWS Cloud, in einer privaten Cloud oder als »Alexa-Hosted«-Skill anlegen. Für den Einstieg wählen Sie die einfachste Variante, einen Alexa-Hosted-Skill‌.

[Bild]

Abb. 1.9: Screenshot aus der Alexa Developer Console

Der Vorteil der Alexa-Hosted-Skills ist, dass Sie sich als Entwickler keine Sorgen darum machen müssen, wie die Cloud betrieben wird. Amazon stellt den Nutzern eine fertige Umgebung für den Skill zusammen, der dem Betreiber nicht berechnet wird. Sie müssen hier auch keine Kreditkartendaten hinterlegen. Ich werde in Kapitel 6 näher darauf eingehen, wie Sie einen Skill selbst über die AWS Cloud‌ einrichten und betreiben. Aber fangen wir zunächst mit den Grundlagen an.

Wenn Sie keine Scheu vor Programmcode haben, neue Dinge lernen möchten oder gar schon selbst etwas in JavaScript‌ programmiert haben, ist die Seite https://github.com/alexa/ der richtige Einstiegspunkt für Sie.

Dort finden Sie fertige Alexa Skills als Vorlagen für Ihren eigenen Skill. Auch das Hosted-Skill-Codebeispiel‌ befindet sich dort. Im Prinzip brauchen Sie hier nur noch im Code die Texte für die Sprachausgabe und Textanzeige zu verändern. Das einfachste Beispiel für den Einstieg ist wohl das Code-Beispiel für einen »Fact Skill« unter https://github.com/alexa/skill-sample-nodejs-fact. Ich habe so angefangen, indem ich mir die index.js-Datei des Code-Beispiels im Browser angeschaut und versucht habe, die Stellen zu finden, wo ein Text ausgegeben wurde. Anschließend habe ich ihn an meine Idee angepasst.

Zudem empfehle ich Ihnen, sich im Netz über JavaScript fortzubilden. Über eine Google-Suche nach »JavaScript Tutorial‌« werden Ihnen viele nützliche Quellen angezeigt, um die Grundlagen von JavaScript zu lernen.

1.1  Was ist ein Alexa Skill?

Ein Alexa Skill‌ ist im Prinzip eine Voice-App‌, nur dass diese nicht auf einem Gerät installiert, sondern in der Cloud‌ betrieben wird. Ein Skill wird also nicht installiert, sondern nur aktiviert.

Das hat für den Nutzer den Vorteil, dass er keine Ressourcen‌ für die Speicherung einer Applikation auf seinem Gerät benötigt. Dieser Vorteil beinhaltet aber auch gleichzeitig den Nachteil, dass ein Skill nur mit einer Internetverbindung zur Cloud funktionieren kann.

Alexa wird mithilfe von Skills schlauer, aktuell gibt es international über 100.000 Skills. In Deutschland sind es gerade mal etwas über 11.600. Die beliebtesten Kategorien sind in Deutschland Musik & Audio (2989), Spiele & Quiz (1604), Bildung & Nachschlagewerke (945), Lifestyle (891) und News (791), Stand 11.11.2019. Wie eine Case Study der Website beyto.com schreibt, ist das Skill-Wachstum in Deutschland‌ eher gebremst, siehe https://www.beyto.com/wachstum-skills-amazon-alexa-skill-store-oktober-2019/.

1.1.1  Wie wird ein Skill aufgerufen?

Per Sprache wird dem Amazon-Echo-Gerät eine Frage oder Aufforderung mitgeteilt. Ein Nutzer könnte zum Beispiel sagen: »Alexa, öffne Bierflasche.« Dieser einfache Satz wird von der KI‌ in die Bestandteile zerlegt und interpretiert:

[Wake Word], [Launch Word] [Invocation Name] [Connecting Word] [Utterance]

Diese Wake Words kennt Amazon Echo:

  • Alexa

  • Amazon

  • Computer

  • Echo

Das Wake Word‌ (Weckwort) muss vom Nutzer über die Alexa-Companion-App‌ eingestellt werden. Standardmäßig ist »Alexa« voreingestellt. Bisher ist Alexa der einzige Heimassistent, der den Nutzern hier eine Wahlmöglichkeit lässt, das ist einer der Gründe, warum Alexa so beliebt ist.

Beispiel

Alexa, öffne Bierflasche und gib mir einen Trinkspruch.

Diese »Launch«-Wörter kennt Amazon Echo:

  • Start

  • Starte

  • Öffne

  • Frage

  • Lade

  • sprich mit

  • führe (Ausführungsname) aus

  • benutze

Diese Kommandos sollten Sie im Hinterkopf behalten, wenn Sie einen »Invocation Name‌« für Ihren Skill auswählen, um eine möglichst natürliche Kommunikation zu ermöglichen.

Beispiel

Alexa, öffne Bierflasche und gib mir einen Trinkspruch.

Was ist ein Invocation-Name?

Der Invocation-Name bzw. Ausführungsname‌ ist der Name des Skills. Der Skill-Name‌ ist fast frei wählbar. Er sollte zu einer natürlichen Sprache passen. In unserem Beispiel lautet der Ausführungsname Bierflasche.

Wenn also der Bierflasche-Skill‌ aktiviert wurde, erkennt Alexa ihn und kann zu der Aufforderung »Alexa, öffne Bierflasche« eine sinnvolle Antwort geben.

Beispiel

Alexa, öffne Bierflasche und gib mir einen Trinkspruch.

»Connecting«-Wörter für Skills:

  • mit

  • und

  • aus

  • um

  • für

Beispiel

Alexa, öffne Bierflasche und gib mir einen Trinkspruch.

Was bedeutet »Utterance«?

»Utterance«‌ ist das englische Wort für Äußerung. Äußerungen können bestimmte Intents zugeordnet werden.

Beispiel

Alexa, öffne Bierflasche und gib mir einen Trinkspruch.

Was bedeutet Intent?

Wenn wir miteinander kommunizieren, haben wir immer eine Intention ‌(Absicht), warum wir kommunizieren. Wenn wir etwas Bestimmtes wissen wollen, fragen wir also unseren Gesprächspartner etwas. In der Skill-Programmierung wird der Begriff Intent genauso verwendet. Mit einem Alexa-Skill-Intent soll also eine bestimmte Absicht des Anwenders befriedigt werden.

Wenn Sie einen Skill programmieren möchten, sollten Sie sorgfältig alle Nutzungsszenarios‌ Ihres Skills planen und jedem Szenario einen Intent zuordnen. In dem vorangegangenen Beispiel meines Bierflasche-Skills wurde die Äußerung »gib mir einen Trinkspruch« dem Intent »Trinkspruch« zugeordnet, der genau diesen Wunsch des Nutzers erfüllt. Die Äußerung »gib mir ein Bier« würde das Geräusch einer aufploppenden Bierflasche abspielen und ist demzufolge dem Bierflaschen-Intent zugeordnet.

1.1.2  Wie funktioniert ein Skill genau?

[Bild]

Abb. 1.10: Funktionsschema eines Alexa Skills

Das Schema in Abbildung 1.10 zeigt den theoretischen Aufbau eines Alexa Skil‌ls. In dem Beispiel gibt ein Nutzer ein Sprachkomma‌ndo an Alexa. Dieses Sprachkommando wird durch‌ NLP, Natural Language Proce‌ssing, als ein bestimmter »Intent« erkannt, der im Sprachmodell zum Skill hinterlegt ist und in maschinenlesbaren JSO‌N-Code umgewandelt wird. Ein Intent ist hier also eine Nutzerabsicht, die im Sprachmodell hinterlegt ist und durch bestimmte Äußerungen des Nutzers eine bestimmte Reaktion des Skills auslöst. Der JSON-Code wird zur Ausführung an den Programmcode in der AWS‌ Lambda zur Verarbeitung gesendet.

Je nach Skill und Programmcode wird entweder eine externe Datenbank als Antwortquelle‌ abgefragt, ein IoT(Internet of Things)-Gerät angesprochen oder eine im Code hinterlegte Antwort/ein Ergebnis berechnet. Diese wird dann im JSON-Format zurückgesendet und durch die NLP Unit in für Menschen verständlicher Sprache ausgegeben.

Als Skill-Programmierer haben Sie Einfluss auf das Sprachmodell des Skills. Dieses kann direkt in der Alexa Skill Console erstellt werden.

Die zweite wichtige Komponente ist die Skill-Logik‌, diese wird als Code, idealerweise als AWS-Lambda-Funktion, ausgeführt. Sie müssen aber Ihren Skill-Code nicht unbedingt in der AWS Cloud‌ hosten. Ein per HTTPS verschlüsselter Server genügt auch. Der Einfachheit halber beschränke ich mich in diesem Buch auf Beispiele, die primär die AWS-Clouddienste nutzen.

1.2  Den Skill in der Alexa Developer Console anlegen

Die Sprache festlegen

Um einen neuen Skill in der Alexa Developer Console anzulegen, klicken Sie oben auf Build. Zuerst legen Sie die Sprache für Ihren Skill fest.

[Bild]

Abb. 1.11: Sprachmodell auswählen und festlegen

Den Invocation-Namen erstellen

Danach erstellen Sie den Invocation‌-Namen, der den Skill starten soll.

[Bild]

Abb. 1.12: Invocation Name erstellen

Einen eigenen Intent erstellen

Anschließend können Sie mit dem Erstellen eigener Intents oder dem Einbinden von vorinstallierten Amazon-Intents fortfahren.

[Bild]

Abb. 1.13: Intent erstellen

Eigene Trainingsäußerungen erstellen

Nun können Sie für Ihren »EigenerIntent« Ihre Äußerungen hinterlegen. In diesem Beispiel habe ich mich dafür entschieden, auch Slot‌s zu verwenden.

[Bild]

Abb. 1.14: Trainingsäußerungen erstellen

Wenn Sie alle Äußerungen für diesen Intent eingegeben haben, klicken Sie oben zunächst auf Save Model und dann auf Build Model.

[Bild]

Abb. 1.15: Save Model und Build Model

1.2.1  Slot-Typ erstellen

Bei meinen Äußerungen hier im Beispiel habe ich mit {Antwort} einen Slot mit dem Namen »Antwort« definiert (siehe Abbildung 1.14). Slots sind wie Variablen, die in einer Äußerung ausgetauscht werden können. Durch die Nutzung von Slots in den Äußerungen können Sie eine Vielzahl von Äußerungen mit geringem Aufwand erstellen.

Diesen Slots wiederum werden Slot-Typen‌ zugeordnet. Im Folgenden zeige ich Ihnen, wie das geht.

[Bild]

Abb. 1.16: Slot-Typ erstellen, Schritt 1

Nachdem Sie auf add Slot Type geklickt haben, können Sie auswählen, ob Sie einen eigenen neuen Slot Type erstellen oder einen vortrainierten nutzen möchten.

Amazon bietet mittlerweile über 49 vortrainierte Slot Types an. Das geht von Slot Types für Schauspieler, Fluglinien, Flughäfen, Tiere, Künstler, Bücher bis hin zu Regionen, Städte, Länder und viele mehr. In diesen vortrainierten Slot-Typen sind die gängigsten Begriffe zum Slot-Typ schon voreingetragen. Sie können diese aber meistens weiter ergänzen, falls mal ein Begriff nicht eingetragen ist.

[Bild]

Abb. 1.17: Slot-Typ erstellen, Schritt 2

[Bild]

Abb. 1.18: Slot-Typ erstellen, Schritt 3

Wenn Amazon keinen relevanten Slot Type für Ihren Skill vorrätig hat, können Sie ganz einfach einen eigenen Slot Type definieren, indem Sie den Namen des neuen Slot-Typs in das Eingabefeld unter Create custom slot type‌ eintragen und anschließend auf den gleichnamigen Button daneben klicken (Abbildung 1.17).

In meinem Beispiel habe ich die Slot-Typen »Antworten« mit den Werten »Spruch«, »Aussage« und »Antwort« erstellt.

Nun versteht mein Skill also die Äußerungen:

Sie können hier auch Synonyme für bestimmte Begriffe hinterlegen. Dies verbessert nochmals die Erkennungsrate.

Zudem können Synonyme‌ und IDs‌ auch nützlich sein, um bestimmte Parameter‌ zu erkennen, die normalerweise kein Mensch sagen würde. Diese Parameter können dann für bestimmte Variablen im Programmiercode eingesetzt werden, um beispielsweise eine bestimmte API-URL‌ abrufen zu können.

Beispiel

Eine Wetter-API erfordert die Postleitzahl für die Abfrage der Wetterdaten. Anstatt den Nutzer zu nötigen, eine Postleitzahl zu sagen, kann er ganz natürlich die Stadt nennen, denn im Sprachmodell wurde im Feld ID die Postleitzahl hinterlegt. Der Code übergibt für die Wetterdaten-Anfrage die ID mit der Postleitzahl anstatt des Städtenamens, mit dem die Wetter-API nichts anfangen könnte.

1.2.2  Das JSON-Sprachmodell

Sie können Ihr JSON-Sprachmodell‌ für den Skill ganz komfortabel in der Alexa Developer Console automatisch erstellen lassen.

Die Alexa Developer Console erstellt dieses Modell, nachdem Sie all Ihre Intents, Trainingsäußerungen und eventuellen Slots mit Slot-Typen angelegt haben, wenn Sie auf SAVE MODEL‌ und anschließend auf BUILD MODEL‌ geklickt haben.

Sie können aber auch, anstatt zuerst alles manuell in der Alexa Developer Console zu erstellen, die JSON-Sprachmodelle der Codebeispiele von GitHub‌ direkt in den JSON-Editor der Alexa Developer Console kopieren und das Model nachher Ihren Anforderungen anpassen. Das spart Zeit!

Bei jedem Skill-Beispiel auf GitHub ist auch das Sprachmodell mit dabei, für unser Beispiel ist es hier zu finden: https://github.com/alexa/skill-sample-nodejs-fact/blob/master/models/de-DE.json. Sie sollten sich das Sprachmodell zu Beginn intensiv anschauen, um zu verstehen, wie ein Nutzer mit dem Beispiel-Skill interagieren kann.

Amazon gibt dem Entwickler Pflicht-Intent‌s vor, die von Amazon selbst vortrainiert sind. Zu Pflicht-Intents gehören AMAZON.CancelIntent, AMAZON.HelpIntent und AMAZON.StopIntent. Zudem gibt es noch optionale Intents von Amazon, die auch vortrainiert sind. Als Entwickler können Sie diese meistens mit weiteren Äußerungen ergänzen. Ich schreibe deswegen »meistens«, weil das bei manchen vortrainierten Intents nicht möglich ist. So ist eine weitere Ergänzung des Intents Amazon.Number, sinnlos und nicht möglich, da für diesen Intent schon alle Zahlen, die es gibt, vortrainiert sind.

[Bild]

Abb. 1.19: Ein Alexa-Sprachmodell in JSON-Format

Interessant wird es bei den selbst erstellten Intents. Hier können Sie als »Voice Designer« Ihrer Kreativität freien Lauf lassen und Äußerungen hinterlegen, die eine bestimmte Programmierlogik auslösen. In der oben dargestellten Abbildung liefert der Skill »Weltraumfakten«‌ bei der Äußerung »erzähle mir Wissenswertes« einen zufälligen Fakt zum Themengebiet Weltraum. Dieses Sprachmodell kann jeder kostenfrei von GitHub kopieren und über den JSON-Editor in der Alexa Developer Console hinterlegen. Abbildung 1.20 zeigt, wie das dann aussieht.

[Bild]

Abb. 1.20: Der JSON-Editor in der Alexa Developer Console

1.2.3  Alexa-Interface festlegen

Im nächsten Schritt legen Sie fest, welche Interfaces der Skill nutzen kann.

Ein Entwickler kann in der Alexa Developer Console unter Interfaces festlegen, ob der Skill einen Audio-Player beinhaltet, ein Display-Interface für die Anzeige der Antworten auf einem Bildschirm, einen Video-Player, Echo-Buttons oder die neue Alexa Presentation Language‌ (APL‌) nutzt. Zuletzt kann man hier auch entscheiden, ob Alexa die »Auto Delegation‌« nutzt. Damit legt man fest, ob Alexa automatisch eine Konversation‌ Zug um Zug managen soll. Für den Einstieg ist dieser Punkt erst einmal irrelevant. Dazu mehr ab Kapitel 5.

In meinem Beispiel wird kein besonderes Interface‌ festgelegt, da der Skill nur eine einfache Sprachausgabe mit Antwortkarten‌‌ für die Alexa App ausgibt. Der Nutzer kann also nur die Antwort hören und später noch einmal in der Alexa App nachlesen, was Alexa ihm geantwortet hat.

[Bild]

Abb. 1.21: Interface-Auswahl in der Alexa Developer Console

1.2.4  Endpoint festlegen

Sofern Sie sich bei der Skill-Erstellung nicht für einen Alexa-Hosted-Skill entschieden haben, können Sie hier in diesem Schritt festlegen, wo Ihr Programmiercode liegt. Sie »verheiraten« hier das JSON-Sprachmodell mit Ihrem Programmiercode.

[Bild]

Abb. 1.22: Endpoint festlegen

Hier könnten Sie auch Ihre eigene Cloud als Standort für Ihren Code angeben. In dem aktuellen Beispiel muss ich nichts eintragen, da ich die Alexa-Hosted-Variante ausgewählt habe. Der Endpoint‌ wurde also schon automatisch von Amazon eingetragen.