1 Befehl für mehrere Aktionen!

Hier geht es um grundlegende Diskussionen bezüglich des Alexa Voice Service.
Antworten
Benutzeravatar

Themenstarter
MasterGhostman
Beiträge: 1
Registriert: Do 27. Jul 2017, 12:24

Do 27. Jul 2017, 13:04

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
0 x
Benutzeravatar

blackdog
Beiträge: 58
Registriert: Sa 7. Jan 2017, 11:34

Do 27. Jul 2017, 16:04

Im Moment imo leider nicht. Das wäre das absolute Killerfeature.
0 x
Benutzeravatar

Fonzo
Beiträge: 1690
Registriert: Fr 24. Feb 2017, 00:06

Do 27. Jul 2017, 17:18

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.
1 x
Benutzeravatar

SeiteBallon84
Beiträge: 7
Registriert: So 3. Sep 2017, 08:55

So 3. Sep 2017, 09:59

Also ich finde den Vorschlag sehr interessant. Meinst du in der AWS Console einen Custom Skin kreieren?
0 x
Benutzeravatar

Fonzo
Beiträge: 1690
Registriert: Fr 24. Feb 2017, 00:06

So 3. Sep 2017, 22:30

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);
Zuletzt geändert von Fonzo am So 3. Sep 2017, 22:37, insgesamt 2-mal geändert.
1 x
Benutzeravatar

SeiteBallon84
Beiträge: 7
Registriert: So 3. Sep 2017, 08:55

Mo 4. Sep 2017, 15:24

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 :-)
0 x
Benutzeravatar

Fonzo
Beiträge: 1690
Registriert: Fr 24. Feb 2017, 00:06

Mo 4. Sep 2017, 15:38

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.
Zuletzt geändert von Fonzo am Mo 4. Sep 2017, 15:38, insgesamt 1-mal geändert.
1 x
Benutzeravatar

whiteduck
Beiträge: 257
Registriert: Mi 23. Nov 2016, 18:56
Wohnort: Bulgarien
Vorhandene Echos: 0
Vorhandene Echo Dots: 10

Mo 4. Sep 2017, 16:18

Ä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.
0 x
Benutzeravatar

SeiteBallon84
Beiträge: 7
Registriert: So 3. Sep 2017, 08:55

Di 5. Sep 2017, 18:18

Danke Fonzo :-) Ich werde mich mal bei Gelegenheit hinsetzen
0 x
Antworten

Zurück zu „Alexa Allgemein“

  • Information