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