Amazon Echo - Flash News mit Symcon erstellen und von Alexa vorlesen lassen

Hallo Alexa-Freunde,

ergänzend zu der Anleitung unter:
https://www.symcon.de/forum/threads/32361-Amazon-Echo-an-Symcon-anbinden-inklusive-Proxy
möchte ich hier beschreiben, wie man den neuen Flashnews Skill nutzen kann.

Die Flash News sind ja eine Art Kurznachrichtenservice, bei dem man sich über den Amazon Echo Nachrichten vorlesen lassen kann. Neu ist nun (5.10.2016), dass es nun einen extra Skill Typ gibt, mit dem man selbst solche Kurznachrichten erstellt. Die eigentlichen Nachrichten werden hierbei entweder über ein JSON Objekt oder einen RSS Feed übergeben. Ein solches JSON Objekt kann man natürlich auch über Symcon bereitstellen!

Hierzu nun kurz die Anleitung:

(Aktuell geht Deutsch noch nicht bei diesem Skill-Typus, allerdings zeigen sich die ersten Eindeutschungen der Alexa-App, also lang wird es wohl nicht dauern und das Prinzip wird sicher gleich bleiben).

Bitte keine besonderen Ansprüche an Ausgereiftheit und Qualität des Codes stellen, das ist mehr eine Machbarkeitsstudie. Könnt ihr ja erweitern.

  1. Voraussetzung ist, das man ein funktionsfähiges Echo oder Tap Gerät hat (die Basics siehe im obigen Link).

  2. Ladet Euch folgendes Skript runter und fügt es irgendwo in Symcon ein:

<?php

// Provide JSON response
header('Content-Type: application/json;charset=UTF-8');

$aussentemp = strval(GetValue(25770 /*[Wetter Lokal\KS300 Wetterstation\Temperatur Aussen]*/));
$wassertemp = strval(GetValue(54542 /*[Heizung\Heizungstemps\WW Ist]*/));

$json = '[
  {
    "uid": "EXAMPLE_CHANNEL_MULTI_ITEM_JSON_TTS_1",
    "updateDate": "2016-04-10T00:00:00.0Z",
    "titleText": "Multi Item JSON (TTS)",
    "mainText": "External temperature is '.$aussentemp.' Grad",
    "redirectionUrl": "https://www.amazon.com",
    "description": "this is a description"
  },
  {
    "uid": "EXAMPLE_CHANNEL_MULTI_ITEM_JSON_TTS_2",
    "updateDate": "2016-04-10T00:00:00.0Z",
    "titleText": "Multi Item JSON (TTS)",
    "mainText": "Water temperature is '.$wassertemp.' Grad",
    "redirectionUrl": "https://www.amazon.com",
    "description": "this is a description"
  }
]';

// Response do Amazon Web Service (or GUI)
header('Content-Length: ' . strlen($json));

echo $json;

?>

Tauscht die beiden Variablen gegen irgendwelche Variablen aus eurem Symcon, was ihr eben Alexa erzählen lassen wollt, aus. Ggfs. lassen sich auch weitere JSON Sektionen ergänzen bzw. die Texte natürlich auch erheblich verlängern. Audio-Nachrichten gehen auch, dann muß das JSON Objekt nach Vorgabe auf der developer.amazon.com Seite angepasst werden. Die uid’s und sonstigen Beschreibungen kann man auch anpassen, ich hab hier im Skript noch mehr oder weniger die Vorlagen aus der Developer-Hilfe, geht auch.

Mal ausführen, sollte Euch den JSON Text ohne Fehler anzeigen.

Ggfs. bei sensitivem Inhalt noch Sicherheitsabfragen in den Code einbauen, siehe dazu den Code Index.php in den Basics, z.b. die Skills Application ID verifizieren. Das habe ich mir im Moment noch gespart.

  1. Erstellt einen Webhook und lasst diesen auf dieses Script zeigen. Probiert den aus - wenn ihr es richtig gemacht habt, und den Hook in einem Browser aufruft, dann sollte der Browser Euch den JSON Text als Download anbieten.

  2. Wenn ihr kein zertifiziertes SSL auf Eurem Symcon Server am Laufen habt, nutzt den Symcon Connect Dienst und speichert Euch den Link auf den Webhook weg. Also sowas wie <ellenlange connect ip addresse eures symcon servers>/hook/<euer webhook> .

  3. Legt Euch nun einen Skill vom Typ Flash News an auf developer.amazon.com. Das ist recht selbsterklärend, ggfs. obige Basics nochmal durchlesen. Stand Okt. 2016 wie gesagt noch auf English, aber das wird bestimmt bald internationalisiert. Klickt dafür einfach die „Flash Briefing Skill API“ an.

Unter Configuration und dort unter Editing Feed euren Webhook unter URL eintragen. Das Icon nicht vergessen anzulegen, z.b. irgendwas passendes im Format 512x512 im Internet von einem ICON service ziehen.

Alle grünen Häkchen in der Skill Einrichtung bis Stufe Test müssen nun vorhanden sein.

  1. Nun in die Alexa App auf Eurem Handy gehen und unter Skills - Meine Skills Euren Symcon Flash aktivieren.

Jetzt sollte Alexa auf „Alexa, what’s in the news“ eure aus Symcon bereitgestellte Info runterplappern, ggfs. auch mit anderen Nachrichtenservices kombiniert. Ach ja, das ist denglish, z.B. müsste das Komma bei den Temperaturen natürlich eigentlich ein Punkt sein und Grad ist natürlich auch kein englisches Wort. Egal.

Viel Spaß

Hallo Axel,

einer der auf den deutschen EchoDot wartet bin ich ja auch und habe deshalb dein Beitrag gelesen. So wie ich das verstanden habe, möchtest du ja irgendwelche Informationen ausgeben, die IPS ermittelt z.B. Temperaturen wie in deinem Beispiel.

Aber genau das kannst du doch auch mit deiner ersten Methode (link) erledigen… du stellst eine Frage, es muss das Codewort (in meinem Fall „Haus“) enthalten sein z.B. „Alexa, Haus wie ist die Temperatur im Wohnzimmer?“. Anhand den Wörtern (Temperatur und Wohnzimmer) wertet IPS das aus, erkennt die Frage und gibt den Response zurück, welcher vorgelesen wird…

Da brauchst du diese beiden Methoden doch nicht parallel? Oder habe ich da den entscheidenden Vorteil übersehen bzw. nicht verstanden?

Grüße Helmut

Hallo helhau, schon, stimmt.

Amazon hat aber wohl diesen skill Typus gebaut, weil man sich damit den umständlichen Aufruf spart, also statt Alexa, ask <invocation word> to tell me my news halt einfach nur Alexa, whats in the news, oder so.

Dann spart man bei der Skillseinrichtung den Intent bzw. die utterrances, die braucht man hier nicht (ok, das spielt hier bei uns weniger eine Rolle, da die andere Methode hier eh alles durchreicht, man also eh nur einen custom skill braucht).

Letztlich hat man wohl auch mehr Platz, ich glaube 1500 pro feed item mal 5 pro feed, und dann wiederum mehrere feeds, wenn mans braucht.

Also, ok, Geschmacksache, beides geht. Als ich über den neuen Skilltypus las, wollte ich halt mal sehen, ob ich das hinkriege.

Grüsse