Fakten-Skill für Alexa in C# entwickeln

Im Rahmen der letzten Meetups, welche ich zum Bereich Skill-Entwicklung für Alexa zusammen mit meinem Kollegen Thomas gehalten habe, habe ich einen kleinen Fakten-Skill über medialesson entwickelt und den Teilnehmerinnen und Teilnehmern vorgestellt. Ausgehend von diesem Beispiel habe ich ein Template für Visual Studio entwickelt, welches es ermöglicht mit sehr wenig Aufwand seinen eigenen Fakten-Skill zu schreiben und diesen dann auch zur Zertifizierung an Amazon zu übersenden. In diesem Beitrag möchte ich das Template kurz vorstellen und vielleicht entwickelt der eine oder andere ja dadurch seinen eigenen Skill.

Zunächst müssen wir uns die Zip-Datei, welche alle notwendigen Daten beinhaltet, aus meinem GitHub-Repository herunterladen.

Diese Datei brauchen wir nicht entpacken, sondern können diese direkt an den angegebenen Pfad kopieren. Normalerweise sollte der unter der folgendem Pfad erreichbar sein:

%userprofile%\documents\Visual Studio 2017\Templates\ProjectTemplates

Anschließend können wir in Visual Studio ein neues Projekt anlegen und haben hier jetzt eine neue Vorlage zur Auswahl.

Wenn wir nun dieses Template Alexa Fact Skill auswählen, können wir direkt einen Namen für die Solution vergeben und mit OK bestätigen. Wir erhalten dann den folgenden Projekt-Aufbau.

Zunächst schauen wir uns den MessagesService an. Dieser beantwortet zum einen den Launch Request und zum anderen die notwendigen Amazon-Intents, wie Help, Stop und Cancel. Hier können in die jeweilige Liste nun kurze prägnante Sätze eingetragen werden, welche dann per Zufall ausgewählt und wiedergegeben werden. Durch die Verwendung von Listen ist es möglich eine gewisse Varianz in den Skill zu integrieren, denn Alexa antwortet nicht immer mit dem gleichen Satz und so wird es für den Zuhörer nicht so schnell langweilig.

/// <summary> 
/// The launch request messages 
/// </summary>
private static readonly List<string> LaunchRequestMessages = new List<string>
{ 
  "Willkommen.", 
  "Willkommen bei meinem Fakten-Skill.", 
};

Um nun den Skill mit Fakten zu füttern, gibt es die JSON-Datei facts.json im Ordner Data. Die Struktur dieser Datei ist relativ einfach gehalten, denn jedes Fact-Objekt besteht aus zwei Properties: intent und texts. Die Property intent ist der Name für einen Intent, welchen man im Developer-Portal angelegt hat. So weiß der Skill welche möglichen Antworten er präsentieren muss. Auch hier habe ich mich wieder für eine Liste von Antwortmöglichkeiten entschieden. Hier kann nun eine beliebige Anzahl von Fakten hinterlegt werden.

[
  {
    "intent": "IntentName",
    "texts": [
      "Text 1",
      "Text 2",
      "Text 3"
    ]
  }
]

Die eigentliche Logik passiert in der Datei Function.cs, aber diese wurde von mir bereits soweit vorbereitet, dass hier keine Änderungen notwendig sind.

Damit sind wir eigentlich schon fertig und der Skill kann entsprechend unter developer.amazon.com angelegt und mit Intents und Utterances gefüllt werden und anschließend kann der Skill bereits getestet und zur Zertifizierung eingereicht werden.

Ich wünsche viel Spaß beim Entwickeln eines eigenen Fakten-Skills für Alexa.

Cascadia: Monospace-Schriftart von Microsoft Alexa Skills Workshop in Stuttgart Animation in Xamarin.Forms-Apps