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: 775
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
Benutzeravatar

XdreaM
Beiträge: 26
Registriert: Fr 5. Jan 2018, 23:37
Vorhandene Echos: 1
Vorhandene Echo Dots: 2
Vorhandene Echo Shows: 2

Do 12. Aug 2021, 11:02

Falls noch Bedarf nach einem Skill zum öffnen von Webseiten per Sprachbefehl besteht, mein Skill MyPage ist seit heute verfügbar.

Es können bis zu 10 URLs hinterlegt werden, welche dann per Befehl, im Standardbrowser (Silk) des Echos geöffnet werden:
Alexa, öffne MyPage und lade/zeige/starte/öffne Seite [Seitennummer]

Optional kann zu jeder URL auch ein Name vergeben werden, über welchen die Seite ebenfalls geöffnet werden kann:
Alexa, öffne MyPage und lade/zeige/starte/öffne [Seitenname]

Die Verwaltung der hinterlegten Seiten erfolgt ebenfalls im Browser des Echos:
Alexa, öffne MyPage und lade/zeige/starte/öffne Seitenliste/Einstellungen/Setup

Hier muss vielleicht erwähnt werden, dass dies über die bescheuerte Bildschirmtastatur des Echos leider nicht sehr komfortabel ist. So etwas wie eine Zwischenablage, um URLs einfach zu kopieren, gibt es ja leider auch nicht.

Der Skill funktioniert nur auf Echos mit Display!
0 x
Benutzeravatar

XdreaM
Beiträge: 26
Registriert: Fr 5. Jan 2018, 23:37
Vorhandene Echos: 1
Vorhandene Echo Dots: 2
Vorhandene Echo Shows: 2

Do 12. Aug 2021, 17:49

Update:
Die Seitenliste lässt sich nun auch am PC bearbeiten. Dazu wird beim Aufruf der Seitenliste auf dem Show, nun ein Zugangscode (5 Minuten gültig) angezeigt, mit dem man sich auf dem PC in seine Seitenliste einloggen kann.
0 x
Benutzeravatar

demichve
Beiträge: 30
Registriert: Di 13. Dez 2016, 13:12
Vorhandene Echos: 2
Vorhandene Echo Shows: 2

Mo 21. Feb 2022, 06:06

XdreaM hat geschrieben:
Do 12. Aug 2021, 17:49
Update:
Die Seitenliste lässt sich nun auch am PC bearbeiten …
Hi,
Der Skill funktioniert prima. Das einzige Problem, was ich habe, ist die Verwendung in einer benutzerdefinierten Aktion in einer Routine..
Ich wollte den Befehl „Öffne MyPage und lade Seite 1“ abkürzen in „Öffne Seite 1“.
Dieser Befehl klappt dann allerdings innerhalb der Routine nicht.
Hat jemand eine Idee, woran es liegen kann?
Zuletzt geändert von demichve am Mo 21. Feb 2022, 06:33, insgesamt 1-mal geändert.
0 x
Benutzeravatar

XdreaM
Beiträge: 26
Registriert: Fr 5. Jan 2018, 23:37
Vorhandene Echos: 1
Vorhandene Echo Dots: 2
Vorhandene Echo Shows: 2

Mo 21. Feb 2022, 08:14

Versuche mal ein Leerzeichen zwischen "My" und "Page" in der Routine.
0 x
Benutzeravatar

demichve
Beiträge: 30
Registriert: Di 13. Dez 2016, 13:12
Vorhandene Echos: 2
Vorhandene Echo Shows: 2

Mo 21. Feb 2022, 13:48

Super! Jetzt klappt es :grinning:
Man muss wirklich My Page in die Routine schreiben.

Vielen Dank!
0 x
Antworten

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

  • Information