Seite 1 von 1

1 Befehl für mehrere Aktionen!

Verfasst: Do 27. Jul 2017, 13:04
von MasterGhostman
Hallo,
ich hab nun auch eine Doti*gggg
Bin also auch ein neuer*ggg

Hab auch gleich meine erste frage:
Ich möchte z.B. morgens sagen "Alexa, Moin Moin"
Alexa sollte dann folgendes tun:
Mich begrüßen.
Mir das wetter sagen.
Meine Termine auflisten.
Und zu guter Schluss eine feste Playlist spielen.

Ist das möglich?

lg
MG

Re: 1 Befehl für mehrere Aktionen!

Verfasst: Do 27. Jul 2017, 16:04
von blackdog
Im Moment imo leider nicht. Das wäre das absolute Killerfeature.

Re: 1 Befehl für mehrere Aktionen!

Verfasst: Do 27. Jul 2017, 17:18
von Fonzo
Von Amazon selber ist so was zur Zeit nicht vorgesehen. Ich denke Du meinst mit Deiner Fragestellung ja unterschiedliche Skill Aufrufe mit einem Befehl kombinieren.

Wenn es Dir nur Inhaltlich darum geht so etwas zu realisieren kann das durchaus gemacht werden wenn Du selber basteln kannst und willst.
Dazu brauchst Du einen Custom Skill und must Dich als Developer registrieren und sämtliche Inhalte wie das Wetter selber in Variablen vorhalten. Wenn das eine Option sein sollte gib Bescheid dann kann man ausführlicher darauf eingehen wie sich so etwas realisieren lässt. Ich selber habe mir für eigene Bedürfnisse so was ähnliches zusammengestellt.

Für einen normalen Endanwender ohne Developer Account ist das zur Zeit nicht zu realisieren.

Re: 1 Befehl für mehrere Aktionen!

Verfasst: So 3. Sep 2017, 09:59
von SeiteBallon84
Also ich finde den Vorschlag sehr interessant. Meinst du in der AWS Console einen Custom Skin kreieren?

Re: 1 Befehl für mehrere Aktionen!

Verfasst: So 3. Sep 2017, 22:30
von Fonzo
SeiteBallon84 hat geschrieben: So 3. Sep 2017, 09:59 Also ich finde den Vorschlag sehr interessant. Meinst du in der AWS Console einen Custom Skin kreieren?
Du kannst das mit AWS machen oder auch anders. In AWS musst Du Dir halt selber Funktionen schreiben, die die APIs abrufen wie Google Kalender oder Wetter vom DWD, Yahoo, Wunderground was immer man bevorzugt. Dann lässt Du diese Daten zurückgeben. Das starten der Playlist erfolgt durch einen Curl Aufruf an die Amazon Seite, dazu müssen allerdings Parameter wie DeviceSerialNumber usw. hinterlegt werden und der Cookie.

Deutlich einfacher geht das Ganze wenn man nicht selber Funktionen schreiben muss um die APIs auszulesen, sondern auf die Werte die Alexa zurückgeben soll, sowieso schon Zugriff hat, weil die Datenpunkte schon in einer Hausautomation vorhanden sind. Ich selber löse das über IP-Symcon. Die Wetterdaten hole ich vom DWD und Wunderground. damit sind alle Daten, die für den Wetterbericht benötigt werden (Temperatur, Luftfeuchte usw.), schon in Variablen vorhanden. Diese müssen dann nur noch von Alexa angesagt werden. Die Kalender Daten hole ich vom Google Kalender diese sind in dem einfachen Beispiel jetzt aber ausgenommen. Das vorgehen ist das Gleiche, die Datenpunkte die man vorgelesen haben will werden dann eingebunden. Der Aufruf der Playlist mache ich mit Amazon Echo Remote Control.

Für den Custom Skill nutzte ich das Patami Alexa Skill Framework dann braucht man nur wenige Zeilen Code um das gewünschte zu erreichen.

Im Developerportal also einen Custom Skilll anlegen, das Interaktion Modell ist in dem Fall ja kurz und knapp, es soll ja nur ein Launchintent ausgeführt werden. Also reicht so was wie

Code: Alles auswählen

{
  "intents": [
    {
      "name": "AMAZON.CancelIntent",
      "samples": []
    },
    {
      "name": "AMAZON.HelpIntent",
      "samples": []
    },
    {
      "name": "AMAZON.StopIntent",
      "samples": []
    },
    {
      "name": "Morning",
      "samples": [
        "was gibt es Neues"
      ],
      "slots": []
    }
  ]
}
Dann an den Endpoint weitereichen, ob das jetzt AWS ist oder ein Server der per HTTPS erreichbar ist, ist dann einem selber überlassen. In meinem Fall ist es nicht AWS sondern der Rechner auf dem dann auch der Custom Skill weiter verarbeitet wird und von dem die Datenpunkte ausgelesen und die Playlist auf dem Echo gestartet wird. Im Fall des Patami Frameworks reicht es aus einen Custom Skill Intent anzulegen mit dem Namen der im Interaction Modell festgelegt worden ist, in dem Beispiel Morning.

Jetzt brauchst man noch ein Skript was die Antwort für Alexa erzeugt, das sieht als exemplarisches Beispiel so aus:

Code: Alles auswählen

<?
function Execute(Request $request)
{
	$name = "Schlafmütze";
	$hour = date("G");
	$minute = intval(date("i"));
	$temperature = GetValue(24112 /*[Info\Wetter\WundergroundWetter\Temperatur]*/);
	$humidity = GetValue(41536 /*[Info\Wetter\WundergroundWetter\Luftfeuchtigkeit]*/);
	StartPlaylist();
	$text = sprintf('Guten Morgen %s. Es ist %s Uhr und %s Minuten. Es sind gerade %s Grad bei einer Luftfeuchtigkeit von %s Prozent.', $name, $hour, $minute, $temperature, $humidity);
	return TellResponse::CreatePlainText($text);
}

function StartPlaylist()
{
	IPS_RunScript(21048 /*[Geräte\Amazon Echo Alexa\Alexa Guten Morgen\Morning\Start Playlist]*/);
}
In dem simplen Beispiel werden also erst mal die Datenpunkte ausgelesen die man übergeben will wie Temperatur, Luftfeuchte usw.. Das ganze kann man beliebig komplex machen, bis einem Alexa die gesamten Wetterdaten ansagt. Man kann sich hier natürlich auch noch ganz andere Sachen ansagen lassen wie einen RSS Feed vorlesen wie Nachrichten, Kinoprogrammm usw.
Kurz bevor die Antwort an Alexa gegeben wird, wird ein weiteres Skript aufgerufen, dies startet dann mit zeitlicher Verzögerung die Wiedergabe der Playlist auf dem Echo. So stellt man sich dann also das zusammen was man will.

Aufrufen würde man das dann mit dem Invocation Name z.B. Alexa starte Guten Morgen.

Das ist das Skript was aufgerufen wird und dann die Playlist startet.

Code: Alles auswählen

IPS_Sleep(10000); 
$trackid = "abcde0e8-f396-4821-b9cd-750548c7a2c5";
EchoRemote_ImportedMusic(21617 /*[Geräte\Amazon Echo Alexa\Amazon Steuerung\Bad Dot]*/, $trackid);

Re: 1 Befehl für mehrere Aktionen!

Verfasst: Mo 4. Sep 2017, 15:24
von SeiteBallon84
Okay. Danke für deine tolle Ausführung und die Mühe die du dir dabei gemacht hast. Großen Respekt. Aber das ist mir dann doch ne Nummer zu groß. Ich versteh ehrlich gesagt nur Bahnhof wie du das geschrieben hast. Aber danke :-)

Re: 1 Befehl für mehrere Aktionen!

Verfasst: Mo 4. Sep 2017, 15:38
von Fonzo
SeiteBallon84 hat geschrieben: Mo 4. Sep 2017, 15:24 Aber das ist mir dann doch ne Nummer zu groß. Ich versteh ehrlich gesagt nur Bahnhof wie du das geschrieben hast. Aber danke :-)
Kein Ursache ich hatte ja geschrieben, das das durchaus ein wenig Konfiguration erfordert. Falls Du mehr als Bahnhof verstehen willst gibt es eine Ausführliche Dokumentation mit Bildern. Die Mühe zu machen das jetzt alles abzuschreiben wollte ich mir nicht machen ;) . Der Weg über AWS ist das sicher noch komplexer weil Du da dann auch noch alle API Aufrufe selber schreiben müstest.

Re: 1 Befehl für mehrere Aktionen!

Verfasst: Mo 4. Sep 2017, 16:18
von whiteduck
Ähnliches vermisse ich auch. Wenn ich sage "spiele Musik, Playlist, ect" sollte Alexa die Sereoanlage einschalten und Bluetooth verbinden. Das sowas Amazon noch nicht realisiert hat ist mir Schleierhaft.

Re: 1 Befehl für mehrere Aktionen!

Verfasst: Di 5. Sep 2017, 18:18
von SeiteBallon84
Danke Fonzo :-) Ich werde mich mal bei Gelegenheit hinsetzen