Entwicklung eines Alexa-Skills #1

In dieser kleinen Serie möchte ich zeigen, wie man mit wenig Aufwand mit Visual Studio in C# einen Alexa-Skill entwickeln und anschließend auf dem Amazon Echo oder Amazon Echo Dot testen kann. Bei Amazon Echo handelt es sich um ein von Amazon.com entwickeltes Audio-Gerät mit einem Lautsprecher und sieben Mikrofonen. Veröffentlicht wurde Amazon Echo in den Vereinigten Staaten am 23. Juni 2015, in Deutschland am 26. Oktober 2016. Die digitale Sprachsteuerung des Gerätes bietet die Funktionalität eines digitalen Assistenten (Amazon Alexa), der eine Audio-Schnittstelle zu diversen Internetdiensten bietet. Amazon hat diese Schnittstelle für Entwickler geöffnet und mit wenig Aufwand kann man so Erweiterungen vornehmen und dem digitalen Assistenten mit Skills verbessern.

Der Einstiegspunkt für das Anlegen eines neuen Skils ist die Developer Console, welche man unter der Url developer.amazon.com aufrufen kann.

Im oberen rechten Bereich kann man sich anmelden. Die Anmeldung kann hier mit einem bestehenden Amazon-Account erfolgen. Möchte man später den Skill auf seinem eigenen Echo oder Echo Dot testen, so muss der auf diesen Geräten eingerichtete Account verwendet werden.

Nach erfolgreicher Anmeldung sieht man die Startseite der Amazon Developer Console. Im oberen grauen Menü-Band gibt es den Punkt Alexa, den man anklicken muss.

Auf der folgenden Seite hat man die Wahl zwischen Alexa Skill Kit und Alexa Voice Service. Für uns ist an dieser Stelle das Alexa Skill Kit interessant und daher bestätigen wir mit einen Klick auf den Button Get started.

Hier wollen wir nun unseren ersten eigenen Skill anlegen, welches wir mit einem Klick auf den Button Add a New Skill durchführen.

In diesem Tutorial werden wir einen Skill entwickeln, welcher aus einer Anzahl von Komplimenten eines auswählt und dem User entsprechend ausgibt. Als Sprache wählen wir German aus, da unser Skill erstmal nur diese Sprache unterstützt. Im Feld Name kann man einen beliebigen Namen eingeben, über den später im Store der Skill gefunden bzw. angezeigt wird. Beim Invocation Namen handelt es sich um das Schlüsselwort zur Aktivierung des Skills. Dieser kann identisch mit dem Namen des Skills sein, muss es aber nicht. Für unseren Skill wähle ich den Namen Kompliment-Butler und als Invocation Namen Kompliment Butler. Die Einstellungen kann man dem folgenden Screenshot noch einmal entnehmen.

Anschließend geben wir die Konfiguration bzw. die Intents für unseren Skill an. Ein Skill kann verschiedene Intents bearbeiten und entsprechend eine andere Logik ausführen. In unserem Fall haben wir nur einen Intent, welcher uns später das Kompliment ermitteln soll. Die Intents gibt man in der Form einer JSON-Struktur an und für unseren Skill hat dieses die folgende Form.

{
  "intents": [
    {
      "intent": "AMAZON.CancelIntent"
    },
    {
      "intent": "AMAZON.HelpIntent"
    },
    {
      "intent": "AMAZON.StopIntent"
    },
    {
      "intent": "GetCompliment"
    }
  ]
}

Die Intents, welche mit dem Schlagwort AMAZON beginnen, sind bereits durch Amazon definiert und wir definieren darüber hinaus noch den eigenen Intent GetCompliment.

Intents können auch Slots beinhalten. Dabei handelt es sich um Platzhalter, welche später von dem Nutzer angegeben werden können. Beispiele wären zum Beispiel eine Anzahl oder auch ein Datum, was für die Bearbeitung des Skills notwendig ist. Für unser Beispiel benötigen wir keine Slots und daher bleibt das folgende Textfeld leer.

Nun muss man noch Beispielsätze für die ganzen definierten Intents angeben, damit Alexa lernt, durch welche Sätze welcher Intent gemeint ist. Der Aufbau ist dabei wie folgt: Zunächst wird der Name des Intents angegeben und anschließend der Beispielsatz. Zu beachten ist hierbei, dass es zwei Varianten gibt einen Skill auf Alexa zu starten.

Alexa starte Kompliment-Butler
Sage mir ein Kompliment
- - - 
Alexa frage Kompliment-Butler nach einem Kompliment

Daher müssen auch für beide Varianten entsprechend Beispielsätze vorhanden sein. Für unseren Skill haben wir die folgende Liste.

AMAZON.CancelIntent abbrechen
AMAZON.CancelIntent vergiss es
AMAZON.HelpIntent hilfe
AMAZON.HelpIntent kannst du mir helfen
AMAZON.HelpIntent ich komme nicht weiter
AMAZON.StopIntent stopp
AMAZON.StopIntent aufhören
AMAZON.StopIntent beenden
AMAZON.StopIntent danke
GetCompliment Sage mir ein Kompliment
GetCompliment Nach einem Kompliment

Mit einem Klick auf Next werden die Daten verarbeitet und wir müssen nun die eigentliche Logik unseres Skills angeben. Dieses können wir aber nicht in der Amazon Developer Console machen, sondern wir benötigen nun AWS, die Amazon Web Services. Hierzu rufen wir im Browser die URL aws.amazon.com auf.

Auch hier müssen wir einen Account anlegen bzw. mit einem bestehenden Accounts uns anmelden. Bei der Registrierung ist die Angabe einer Kreditkarte notwendig, welche aber nicht belastet wird, da dies erst bei einer hohen Anzahl von Aufrufen unseres Skills ist.

Im nächsten Schritt werden wir nun unseren Skill in Visual Studio entwickeln. Dies erkläre ich jedoch erst im nächsten Teil dieser Serie.

Alexa-Skill über VSTS auf AWS veröffentlichen AWS IoT Button einrichten GitHub-Account anlegen und erste Schritte mit Git