Alexa macht jetzt täglich Sport für dich

Nach mehreren Versuchen haben Axel und ich es nun geschafft unseren ersten Alexa Skill in den Amazon Store zu bekommen. Chantal Steinberger hat uns dazu extra noch ein super Icon gezeichnet. Vielen Dank

Damit kann nun jeder Alexa für sich trainieren lassen und so ganz einfach und bequem Kalorien verbrennen. ?

 

Das Training kann einfach gestartet werden mit:
„Alexa, starte tägliches Training“

Nun stehen eine Reihe an Trainingsmöglichkeiten zur Verfügung:
Laufen, Krafttraining, Crossfit, Rücken, Brust, Bizeps, Trizeps, usw
Bauch Beine Po (extra für die Frauen ?)

 

Falls der Weg zum Kühlschrank mal zu weit ist, kannst Du Alexa auch Bier für dich trinken lassen.
„Alexa, starte tägliches Training“

Bier trinken, geh zum Oktoberfest, mach Party, Disco Disco, usw

Auf Youtube findet ihr auch ein paar Beispielvideos

 

Entwicklung Skill:
Zuerst haben wir uns einen Account bei https://developer.amazon.com angelegt. 
Danach haben wir über die „alexa developer console“ unsere Intents „FuerMichIntent“ und „WiesnIntent“ definiert.

Interfaces: Haben wir keine also konnten wir diesen Punkt überspringen.
Endpoint: die URL zu unserem Azure Service und natürlich das richtige Zertifikat

 

Entwicklung Skill API:
Die Api ist eine ASP .net Core WebApp, die bei Microsoft in der Azure Cloud läuft.
Für das Logging haben wir Log4Net verwendet, da uns dies schon bekannt ist.

Prinzipiell ist es eigentlich ganz einfach und nur 3 Schritte:
1.) Validierung (Application Id, RequestVerification, TimeStampTelerance)
2.) Response Typ erkennen (Launch, Intent)
3.) Intent erkennen und entsprechenden Text zurückgeben

Alexa schickt die Anfragen per POST Request, daher nur dies notwendig.
Die Attribute [FromBody] und [FromHeader] um die Werte direkt als Parameter zu bekommen, konnten wir leider nicht nutzen, da man den Body validierung muss

[HttpPost]

public IActionResult HandleSkillRequest()
{
    string body;
    using (var reader = new StreamReader(Request.Body, Encoding.UTF8))
    {
        body = reader.ReadToEnd();
        m_Logger.LogDebug("body: " + body);
    }

    SkillRequest input = JsonConvert.DeserializeObject<SkillRequest>(body);
}

Zur Validerung die Signature auslesen

string signatureCertChainUrl = Request.Headers["SignatureCertChainUrl"];
var signature = Request.Headers["Signature"];

Und nun das Command und den Intent auswerten

var requestType = input.GetRequestType();
if (requestType == typeof(IntentRequest))
if (requestType == typeof(LaunchRequest))

var intentRequest = skillRequest.Request as IntentRequest;
if (intentRequest.Intent.Name.Equals(Statics.AmazonStopIntent))
if (intentRequest.Intent.Name.Equals(Statics.FuerMichIntent))
if (intentRequest.Intent.Name.Equals(Statics.WiesnIntent))

 

 

Der Code für den WebService liegt in unserem Git Repo.

Wir freuen uns auf euer Feedback.
Viel Spaß beim Trainieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert