Meiner Meinung nach sollte jeder Softwareentwickler wissen was, wann, wie und wo in seinem Programm passiert. Besonders bei einem sprachgesteuerten Interface, wie beim Amazon Echo, ist das sehr wichtig. Daher schauen wir uns heute an, wie wir den Request eines Amazon Alexa Skill Aufrufs loggen können.
In meinem Beitrag gehe ich auf die Entwicklung eines Amazon Alexa Custom Skill als Web Service ein. Das heißt ich nutze kein Amazon Lambda, sondern einen einfachen PHP-fähigen Webspace, der aber über HTTPS erreichbar ist. Wenn ihr mehr über die Voraussetzungen wissen wollt, hier ist ein Beitrag zu dem Thema.
Sind alle Voraussetzungen erfüllt und hat vielleicht dieses Beispiel funktioniert, geht es jetzt weiter. Ihr legt entweder eine neue index.php Datei an oder verwendet die vorhandene schreibt das hier rein:
<?php
// Daten aus dem Request holen
$entityBody = file_get_contents ( 'php://input' );
// Datei namens echo.log öffen
$datei_handle = fopen ( "echo.log", "a+" );
// etwas validierung
if (is_string($entityBody ) && json_decode ( $entityBody ) != null) {
// Request schoen formatieren
fputs ( $datei_handle, "\n" );
fputs ( $datei_handle, json_encode ( json_decode ( $entityBody ), JSON_PRETTY_PRINT ) );
fputs ( $datei_handle, "\n" );
}
// alles speichern und beenden
fclose ( $datei_handle );
?>
Das Ergebnis sollte so aussehen:
{
"version": "1.0",
"session": {
"new": true,
"sessionId": "amzn1.echo-api.session.3bx",
"application": {
"applicationId": "amzn1.ask.skill.xxx"
},
"user": {
"userId": "amzn1.ask.account.AERD35SIXMYMYY6NADKNOQ"
}
},
"context": {
"AudioPlayer": {
"playerActivity": "IDLE"
},
"System": {
"application": {
"applicationId": "amzn1.ask.skill.xxx"
},
"user": {
"userId": "amzn1.ask.account.AERD35SIXMYMYY6NADKNOQ"
},
"device": {
"supportedInterfaces": {
"AudioPlayer": {}
}
}
}
},
"request": {
"type": "LaunchRequest",
"requestId": "amzn1.echo-api.request.861e",
"timestamp": "2017-03-23T16:47:09Z",
"locale": "de-DE"
}
}
cool oder?
Copyright © 2017 AxxG – Alexander Gräsel
Great article! I really appreciate the way you explained everything so clearly – it feels like you put a lot of effort into making it useful for readers. I’ve been exploring different tools and resources myself, It’s been a game changer for me, and reading your post actually gave me even more ideas on how to apply it. Thanks for sharing such valuable insights!