PHP: Inhalt eines Amazon Alexa Skills Request holen und loggen

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.

 

 

 

Voraussetzungen

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.

 

Das Skript

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

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?

 

Habt ihr noch keinen Echo?! Dann hier kaufen:)

 

Quellen und weitere Links

 

Copyright © 2017 AxxG – Alexander Gräsel




Kommentar verfassen