Skill zum öffnen von Webseiten

Hier wird über Skills, welche es bereits gibt, diskutiert.
Benutzeravatar

JSAnyone
Beiträge: 2
Registriert: Fr 20. Nov 2020, 14:10

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:

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();
        }
    }      
};
Zuletzt geändert von JSAnyone am Fr 19. Feb 2021, 11:35, insgesamt 1-mal geändert.
1 x
Benutzeravatar

LotharF
Beiträge: 2
Registriert: Mi 24. Mär 2021, 11:07

Mi 24. Mär 2021, 11:12

Ich habe versucht den Skill "nachzubauen". Bekomme aber beim Testen immer nur die Fehlermeldung "Bei der Antwort des angeforderten Skill ist ein Problem aufgetreten".
Den gleichen Fehler bekomme ich dann auch, wenn ich die Vorlage von "DaBus" nehme.
@JSAnyone
Könntest du evtl. den ganzen Code einstellen? Oder kann mir jemand sagen, wo mein Fehler liegt?
0 x
Benutzeravatar

paoplo
Beiträge: 667
Registriert: Mo 17. Apr 2017, 10:53
Vorhandene Echos: 5

Mi 24. Mär 2021, 12:58

Man nehme....
Nodemcu, wemos d1, o. ä.
Installiere tasmota schalte wemo Emulation ein.
Erstelle eine rule mit welcher ein http request geschickt wird. Zeitaufwand 10min und fertig ist die kiste
Zuletzt geändert von paoplo am Mi 24. Mär 2021, 12:59, insgesamt 1-mal geändert.
0 x
Benutzeravatar

LotharF
Beiträge: 2
Registriert: Mi 24. Mär 2021, 11:07

Do 25. Mär 2021, 09:42

Und wie soll man damit dann beim Echo Show den Firefox und direkt eine bestimmte Internetseite öffnen? :thinking:
Eine URL kann ich ja auch per Script im IoBroker senden ... nur damit wird mir diese beim Echo Show nicht geöffnet ... oder hast du da einen Tip wie das doch gehen soll :grinning:
0 x
Benutzeravatar

phistix
Beiträge: 1
Registriert: Mo 3. Mai 2021, 23:18

Mo 3. Mai 2021, 23:24

JSAnyone hat geschrieben:
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:

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();
        }
    }      
};
Hey,

ich hab versucht das ganze nachzubauen. Bin leider nicht sehr bewandert, was die Programmierung angeht.
Wie schaffe ich es denn den OpenWebsiteIntent aufzurufen? Ich hab schon versucht den Code in den LaunchRequestHandler zu kopieren. Aber anscheinend wird er nicht verarbeitet.
Das Beispiel von DaBus hab ich erfolgreich kopieren können, allerdings möchte ich tatsächlich gerne mit einem Befehl direkt auf die Webseite springen
0 x
Antworten

Zurück zu „Fähigkeiten (Skills) zum downloaden“

  • Information