Re: Skill zum öffnen von Webseiten
Verfasst: Fr 19. Feb 2021, 11:32
				
				Hallo zusammen, 
Ich habe jetzt rausgefunden, wie man eine Website direkt ohne das Dashboard öffnen kann:
https://forums.developer.amazon.com/que ... owser.html
Was mir leider nach wie vor noch unklar ist, ist wie (und ob) man eine Seite direkt im Vollbildmodus öffnen kann.
Ein mögliches APL-Dokument, das einen Button anbietet falls die Website nicht automatisch öffnet (passiert bei meinem alten Show manchmal) und ein möglicher Intent Handler für dieses APL-Dokument (Ist nicht da ganze index.js File sondern nur der entscheidende Teil!) habe ich angehängt:
Ist es in diesem Forum nicht möglich, Dateien anzuhängen? Dann halt so:
			Ich habe jetzt rausgefunden, wie man eine Website direkt ohne das Dashboard öffnen kann:
https://forums.developer.amazon.com/que ... owser.html
Was mir leider nach wie vor noch unklar ist, ist wie (und ob) man eine Seite direkt im Vollbildmodus öffnen kann.
Ein mögliches APL-Dokument, das einen Button anbietet falls die Website nicht automatisch öffnet (passiert bei meinem alten Show manchmal) und ein möglicher Intent Handler für dieses APL-Dokument (Ist nicht da ganze index.js File sondern nur der entscheidende Teil!) habe ich angehängt:
Ist es in diesem Forum nicht möglich, Dateien anzuhängen? Dann halt so:
Code: Alles auswählen
{
    "type": "APL",
    "version": "1.4",
    "settings": {},
    "theme": "dark",
    "import": [
        {
            "name": "alexa-layouts",
            "version": "1.1.0"
        }
    ],
    "resources": [],
    "styles": {
        "bigText": {
            "values": [
                {
                    "fontSize": "72dp",
                    "textAlign": "center"
                }
            ]
        },
        "smallText": {
            "values": [
                {
                    "fontSize": "20dp",
                    "textAlign": "left"
                }
            ]
        }
    },
    "onMount": [],
    "graphics": {},
    "commands": {},
    "layouts": {},
    "mainTemplate": {
        "parameters": [
            "text",
            "assets"
        ],
        "items": [
            {
                "type": "Container",
                "items": [
                    {
                        "type": "Text",
                        "style": "bigText",
                        "paddingTop": "12dp",
                        "paddingBottom": "12dp",
                        "text": "${text.heading}"
                    },
                    {
                        "type": "Container",
                        "paddingTop": "16dp",
                        "paddingLeft": "16dp",
                        "paddingRight": "16dp",
                        "paddingBottom": "16dp",
                        "items": [
                            {
                                "type": "Text",
                                "style": "smallText",
                                "paddingTop": "12dp",
                                "paddingBottom": "12dp",
                                "text": "${text.subtitle}"
                            },
                            {
                                "type": "AlexaButton",
                                "buttonText": "${assets.URL}",
                                "id": "containedButtonId",
                                "paddingLeft": "12dp",
                                "paddingRight": "12dp",
                                "paddingBottom": "12dp",
                                "paddingTop": "12dp",
                                "primaryAction": {
                                    "type": "OpenURL",
                                    "source": "${assets.URL}",
                                    "onFail": {
                                        "type": "SetValue",
                                        "componentId": "errorText",
                                        "property": "text",
                                        "value": "Die Webseite kann nicht geöffnet werden (${event.source.value})"
                                    }
                                }
                            }
                        ]
                    }
                ],
                "height": "100%",
                "width": "100%"
            }
        ]
    }
}Code: Alles auswählen
const OpenWebsiteIntentHandler = {
    canHandle(handlerInput) {
        return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
            && Alexa.getIntentName(handlerInput.requestEnvelope) === 'OpenWebsiteIntent';
    },
    handle(handlerInput) {
        let url = "https://www.amazon.com";
        if (supportsAPL(handlerInput)) {
            return handlerInput.responseBuilder
                .speak("Die Website wird geöffnet")
                .withShouldEndSession(true)
                .addDirective({
                    type: 'Alexa.Presentation.APL.RenderDocument',
                    version: '1.5',
                    token: 'MeinToken',
                    document: require('./openWebsite.json'),
                    datasources: {
                        text: {
                            heading: "Website wird geöffnet...",
                            subtitle: "Sollte die Website nicht automatisch öffnen, kann der folgende Button verwendet werden:"
                        },
                        assets: {
                            URL: url
                        }
                    }
                })
                .addDirective({
                    type: "Alexa.Presentation.APL.ExecuteCommands",
                    token: 'MeinToken',
                    commands: [{
                        type: "OpenURL",
                        source: url,
                        onFail: {
                            type: "SetValue",
                            componentId: "errorText",
                            property: "text",
                            value: "That didn't work"
                        }
                    }],
                })
                .getResponse();
        }
        else{
            return handlerInput.responseBuilder
                .speak("Diese Funktion kann nur auf Geräten mit Display ausgeführt werden.")
                .getResponse();
        }
    }      
};