Alexa Skills mit .NET entwickeln

Ich habe ja bereits gezeigt, wie man mit wenig Aufwand seinen eigenen Skill für Alexa entwickeln kann. Mittlerweile habe ich schon selbst einige Alexa-Skills veröffentlicht und habe mir eine kleine Projekt-Vorlage gebastelt, welche die Erstellung eines eigenen Skills um ein Vielfaches beschleunigt. Diese Vorlage findet man in einem GitHub-Repository und kann sich dort eine Zip-Datei herunterladen, welche man dann nur noch in das Vorlagenverzeichnis von Visual Studio speichern muss und anschließend kann die Entwicklung des Skills losgehen.

Es empfiehlt sich die kostenlose Erweiterung AWS Toolkit von Amazon für Visual Studio zu installieren, damit ihr euren Skill direkt aus Visual Studio hochladen könnt.

Nachdem ihr die Zip-Datei an den richtigen Ort kopiert habt, habt ihr bei der Projekt-Auswahl einen neuen Eintrag Alexa Skill .NET bei den Vorschlägen. Dieses beinhaltet alles, um euren ersten eigenen Skill zu schreiben.

Nachdem ihr ein neues Projekt angelegt habt, stehen euch verschiedene Extension Methods, Services und ein Basis-Aufbau für euren Skill zur Verfügung.

Der Einstiegspunkt ist in der Datei Function.cs und hier gibt es in der Vorlage nur die Methode FunctionHandler, welche bereits die notwendigen Intents (Stop, Cancel, Help) und den Launch-Intent verarbeitet. Hierfür müssen in der Datei MessageService.cs nur noch die entsprechenden Messages eingefügt werden.

public SkillResponse FunctionHandler(SkillRequest input, 
    ILambdaContext context)
{
    var requestType = input.GetRequestType();

    if (requestType == typeof(LaunchRequest))
    {
        return ResponseService.
            CreatePlainTextSkillResponse(MessagesService.
                GetLaunchMessage(), false);
    }

    if (requestType == typeof(IntentRequest))
    {
        if (!(input.Request is IntentRequest intentRequest))
            return ResponseService.
                CreatePlainTextSkillResponse(MessagesService.
                    GetErrorMessage(), true);

        switch (intentRequest.Intent.Name)
        {
            case Statics.AmazonHelpIntent:
                return ResponseService.
                    CreatePlainTextSkillResponse(MessagesService.
                        GetHelpMessage(), false);
            case Statics.AmazonCancelIntent:
            case Statics.AmazonStopIntent:
                return ResponseService.
                    CreatePlainTextSkillResponse(MessagesService.
                        GetStopOrCancelMessage(), true);
            default:
                return ResponseService.
                    CreatePlainTextSkillResponse(MessagesService.
                        GetHelpMessage(), false);
        }
    }

    return ResponseService.
        CreatePlainTextSkillResponse(MessagesService.
            GetErrorMessage(), true);
}

Ich wünsche nun viel Spaß bei der Erstellung eures eigenen Skills und bei Wünschen für eine kommende Version könnt ihr auf GitHub einfach einen Issue anlegen.

WordPress-Seite als Xamarin.Forms App – Teil 1 Von Xamarin.Forms zu .NET MAUI Fira Code: Schriftart für Programmierer