Wie ein Request und ein Response eines Amazon Alexa Skills aufgebaut ist, hat Amazon schon sehr schön auf dieser Seite beschrieben:
https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa-skills-kit-interface-reference
Darum gehe ich lieber auf die Besonderheiten ein.
Hier ist ein typischer Amazon Alexa Skill Request:
{
"version": "1.0",
"session": {
"new": true,
"sessionId": "amzn1.echo-api.session.c3b35a9a-ed87-497b-8269-de",
"application": {
"applicationId": "amzn1.ask.skill.20eb8709-a6bb-42ed-a126-d"
},
"user": {
"userId": "amzn1.ask.account.AGO7JIGK7IX"
}
},
"context": {
"AudioPlayer": {
"playerActivity": "IDLE"
},
"System": {
"application": {
"applicationId": "amzn1.ask.skill.20eb8709-a6bb-42ed-a126-d"
},
"user": {
"userId": "amzn1.ask.account.AGO7JIGK7IP"
},
"device": {
"supportedInterfaces": {
"AudioPlayer": {}
}
}
}
},
"request": {
"type": "LaunchRequest",
"requestId": "amzn1.echo-api.request.b2412b76-33ac-4831-a7b2-0",
"timestamp": "2017-02-08T18:47:42Z",
"locale": "de-DE"
}
}
Wie wir sehen können, besteht der Request aus dem Attribut Version (Zeile 2) und 3 weiteren Objekten (Session – Zeile 3, Context – Zeile 13, Request – Zeile 31). Amazon selbst schreibt, dass das Session-Objekt nicht bei jedem Request dabei ist. Also nur bei Launch-, Intent und SessionEndedRequests.

Aber, und das steht da nirgendwo, gilt das Gleiche auch für die anderen Objekte, dem Request und dem Context-Objekt. Zum Beispiel sendet der Testclient unter developer.amazon.com, NIE ein Context-Objekt. Nie. Wirklick nie, Da könnt ihr warten, bis ihr schwarz werdet.

Wenn ihr das AudioPlayer Interface verwendet, seit gewarnt! Hier gibt es Requests der Typen:
Die KEINEN oder nur einen GANZ BESTIMMTEN Response erwarten.

Allein die Warnung am Anfang der Amazon Dokumentation sollte einen Entwickler „wachsam“ machen. Da steht nämlich:

und auch beim Response sollte man wachsam bleiben, da man aktuell immer das Attribut Version mit „1.0“ vorbelegen muss.

Copyright © 2017 AxxG – Alexander Gräsel
Kommentar verfassen