Amazon Echo an Symcon anbinden inklusive Proxy

@Fonzo: Nein.

Nein heißt es wird immer nur ein String übermittelt? Und wenn in welcher Form als „1“ oder „Eins“?
Wie sind denn so ein Beispiel JSON von Amazon aus bei dem ihr vermeintlich etwas umwandeln müsst?

Zur Info.
Wenn du nur den Minimal „Skill“ hier nimmst kriegst du ein String zurueck fuer Zahlen.
Also „eins“ „elf“ etc.
deshalb meine Umwandlung.
Man kann auch das im Skill schon umwandeln wenn man das will.

Das macht aus meiner Sicht zumindest für einen Custom Skill für ein Modul dann Sinn dann bekommt man dann die Werte schon so geliefert wie man sie braucht oder nicht?

Hallo
Ich hab inzwischen mein „Alexa“ Script auf SSML ungestellt. Das bietet ein paar Moeglichkeiten mehr
um zB eine Pause in der Ausgabe zu machen oder sich Worte buchstabieren zu lassen.

Die Original Zeile


	$text = '{"version" : "1.0","response" : {"outputSpeech" : {"type" : "PlainText","text" : "'.$Response.'" },"shouldEndSession" : '.$shouldEndSession.'}}';

aendern in

	$Response = '<speak>'.$Response.'</speak>'; 
	$text = '{"version" : "1.0","response" : {"outputSpeech" : {"type" : "SSML","ssml" : "'.$Response.'" },"shouldEndSession" : '.$shouldEndSession.'}}';

Bei diesem Beispiel wird dann IPSymcon buchstabiert.

	$response = "Dieses Wort wird buchstabiert :<say-as interpret-as='spell-out'>IPSymcon</say-as>.";

Wenn keine Tags im Text sind ist alles wie vorher.
Doku:
https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/speech-synthesis-markup-language-ssml-reference

Gibt was neues im Bezug „nur Sprachausgabe“ ?

Ich würde gerne Alexa dazu bringen auch Status Infos ohne vorher danach zu Fragen, ausgeben zu können :rolleyes:

Hallo an alle,

habe heute auch mal versucht es zu installieren. In der App von Alexa unter Alexa.Amazon habe ich Echosim.io, ist aber immer Offline, unter Skill ist mein erstelltes auch aktiv aber es funktioniert nicht. Was mache ich falsch? In der Test Echosim.io funktioniert das. Hmm :confused:

=UVoigi;309540 immer Offline, unter Skill ist mein erstelltes auch aktiv aber es funktioniert nicht. Was mache ich falsch? In der Test Echosim.io funktioniert das. Hmm :confused:

Hallo
Was genau heisst funktioniert nicht ?
Funktioniert der Test bei der Skillerstellung.

@1007

Wäre es nicht an der Zeit, das Ganze mal in ein Modul zu packen und die verschiedenen Aspekte von Echo geordnet und separat zu handhaben ?

Also zum Beispiel ein Skript zur Auswertung der Sprachausgabe, das sich einfach konfigurieren liesse ? Ich hab mich mal nach Parsern umgesehen, aber nichts gescheites gefunden. Ein Skript erlaubte die Suche wie:
(A OR B) OR C AND D

Dazu könnte das Skript auf die gesamten Objekte von Symcon zugreifen.

Ein Teil könnte gewisse feste Abfragen defineren, wie etwa: Name Symcon-Objekt -> Eigenschaft

Super wäre auch, wenn andere Module vordefinierte Befehle bereitstellen könnten. Dann müsste man bei Sonos, Hue oder was auch immer nicht dauernd das Rad neu erfinden.

Dies ist nur als Diskussionsbasis gedacht. Vielleicht tut sich ja bereits etwas in diese Richtung. Oder vielleich sollte Smycon was entsprechendes anbieten ?

Vieleicht wäre auch ein neuer Thread angebracht.

Michael

Im Test Alexa (Echo.io) am PC funktioniert das, spreche etwas in den PC in meinem Fall Ask Home plus Befehl und ips führt es aus.

In der Alexa PC app unter Einstellungen habe ich das Echo.io wo ich es bearbeiten kann, steht aber immer auf offline. Unter Skill (meine Skill) kann ich es auch aktivieren, aber wenn ich jetzt sage Alexa Ask Home bla bla bla, sagt sie immer weiß nicht was ich machen soll. Wie gesagt unter Einstellungen ist es offline. Komme da irgendwie nicht weiter.

Gesendet von iPhone mit Tapatalk

Ein Modul ist in Arbeit, es wäre vielleicht wirklich sinnvoll einen eigenen Thread dazu zu eröffnen um dort alle Vorschläge Inputs und Ideen zusammen zu tragen damit dieser Thread nicht damit vollgestopft wird. Die Oauth Authentifizierung funktioniert auch schon so das ein Smart Home Skill grundsätzlich möglich ist, hier sind aber noch Probleme zu lösen bis dies freigegeben werden kann.

Ein wichtiges Thema wäre ein funktionierendes universelles DeviceDiscovery innerhalb Symcon, wer da also sinnvolle Vorschläge hat als her mit. Bei dem Custom Skill ist das Problem einfach diesen so zu gestalten das der dann auch mit die meisten Bedürfnisse abdeckt. Individuell ist das kein Problem und mit viel Aufwand verbunden das an die eigene IP-Symcon Installation und Bedürfnisse anzupassen. Eine ganz andere Sache ist es eine Custom Skill zu bauen der auf den Großteil der User passt, schließlich sich dann keine individuellen Skillanpassungen mehr für den User möglich so wie jetzt, da jeder der das nutzt auch gleichzeitig ein Developer Account benötigt und den Skill anpassen kann. An alle die also schon fleißig Basteln und schon Lösungen erarbeitet haben setzt Euch mit DaveRichter in Kontakt der bastelt gerade an einem Modul und ist sicher für jede Hilfe, Input und Unterstützung froh.

Moinmoin,

gestern ist Alexa auch bei mir eingezogen :smiley: und dank der Anleitung hier kann sie auch schon mein Licht schalten. Was wär ich nur ohne Euch. Vielen Dank für die ganze Arbeit die Ihr da reinsteckt und teilt.

An einem Modul wäre ich natürlich auch sehr interessiert. Leider ist mein Programmierhorizont noch immer nicht vorhanden und ich kann höchstens mit Ideen und dummen Sprüchen unterstützen :cool:

Hi,
bräuchte nun auch mal kurze Unterstützung bei der Implementierung von @1007 Scripten.

Library läuft bei mir.
18-12-_2016_15-03-42.jpg

Wenn ich das Testscript laufen lasse, kommen folgende Fehler:

schalte licht im flur ein
Warning:  Variable #15269 existiert nicht in C:\IP-Symcon\scripts\AmazonEchoInclude.ips.php on line 141

Warning:  Variable #31603 existiert nicht in C:\IP-Symcon\scripts\AmazonEchoInclude.ips.php on line 141

Warning:  Variable #57677 existiert nicht in C:\IP-Symcon\scripts\AmazonEchoInclude.ips.php on line 141

Warning:  Variable #12924 existiert nicht in C:\IP-Symcon\scripts\AmazonEchoInclude.ips.php on line 141

Warning:  Variable #18735 existiert nicht in C:\IP-Symcon\scripts\AmazonEchoInclude.ips.php on line 141

Warning:  Variable #17085 existiert nicht in C:\IP-Symcon\scripts\AmazonEchoInclude.ips.php on line 141

Warning:  Variable #21919 existiert nicht in C:\IP-Symcon\scripts\AmazonEchoInclude.ips.php on line 141

Warning:  Variable #15192 existiert nicht in C:\IP-Symcon\scripts\AmazonEchoInclude.ips.php on line 141

Warning:  Variable #27942 existiert nicht in C:\IP-Symcon\scripts\AmazonEchoInclude.ips.php on line 141

Warning:  Invalid argument supplied for foreach() in C:\IP-Symcon\scripts\AmazonEchoInclude.ips.php on line 18

Session:0
Response : Ich habe : schalte licht im flur ein nicht verstanden

Welche IDs versucht er da zu finden?

In der AmazonEchoConfig habe ich meine IDs hinterlegt.

Wo muss dieser Teil definiert werden? auch in der AmazonEchoConfig?

/*	Beispiel fuer Konfiguration in AmazonEchoConfig.ips.php

	$AlexaLightArray = array( 
	//	   spoken         spoken           response         IPSLight Name       not used .............
	array("wohnzimmer"	,""				,"Wohnzimmer"	,"Wohnen Deckenlicht"	,true	,true	,false),
	array("esszimmer"	,"decke"		,"Esszimmer"	,"Essen Deckenlicht"	,true	,true	,false),
	array("esszimmer"	,"lampe"		,"Esszimmer"	,"Essen Steinlampe"		,true	,false	,false),
					);

*/

Hatte ich testweise, aber keine Besserung.

Ich seh schon das Problem. Die Variable

$parentDataID = 

sollte auf eine Kategorie zeigen die nur Variablen enthaelt und keine Scripte.
Das wird zZ nicht abgefangen.

Also ich habs in der AmazonEchoConfig. Da hab ich alles zusammen.
Da muss oben dann noch ein

GLOBAL $AlexaLightArray;

hin

Geht auch

Gesagt, getan …

jetzt bekomme ich „nur noch“:

schalte licht im flur ein
Warning:  Invalid argument supplied for foreach() in C:\IP-Symcon\scripts\AmazonEchoInclude.ips.php on line 18

Session:0
Response : Ich habe : schalte licht im flur ein nicht verstanden

In der Konfig oben einfuegen

GLOBAL $AlexaMasterKeyArray;

Hab ich,

immer noch der Fehler.

AmazonEchoConfig

<?

	GLOBAL $applicationIdValidation;
	GLOBAL $userIdValidation;           
	GLOBAL $echoServiceDomain;         
	GLOBAL $debug;
	GLOBAL $logging;
	GLOBAL $parentDataID;
	GLOBAL $AlexaArray;
	GLOBAL $AlexaLightArray;  
	GLOBAL $AlexaMasterKeyArray;  

//******************************************************************************
//	AmazonEcho relevante Definitionen
//******************************************************************************
	
	$applicationIdValidation    = 'amzn1.ask.skill.MINEID';
	$userIdValidation           = 'amzn1.account.MEINEID';
	$echoServiceDomain          = 'echo-api.amazon.com';

//******************************************************************************
//	IPSymcon relevante Definitionen
//******************************************************************************
	$debug   = true;
	$logging = true;

	$parentDataID = IPSUtil_ObjectIDByPath("Program.IPSLibrary.data.privat.AmazonEcho");
	
	$AlexaLightArray = array( 
	//	   spoken         spoken           response         IPSLight Name       not used .............
	array("wohnzimmer"	,"wand"				,"Wohnzimmer"	,"Wohnen Deckenlicht"	,true	,true	,false),
	array("wohnzimmer"	,"decke"		,"Esszimmer"	,"Essen Deckenlicht"	,true	,true	,false),
	array("flur"	,"licht"		,"Flur"	,"Flur"		,true	,false	,false),
					);

Da fehlt ja noch das Wichtigste . Die Masterkeyworte

//******************************************************************************
// Demo Konfiguration
// Suche nach Schluesselwoerter um dann das angegeben Script zu starten
//******************************************************************************

	$AlexaMasterKeyArray = array( 
				
	array("search('licht') AND ( search('schalte') OR search('dimme') ) "			,"AmazonEcho_Licht.ips.php"		),
	array("search('temperatur') AND search('hoch') "													,"AmazonEcho_Temperatur.ips.php"),
				);

Sorry, die sind natürlich drin. Hatte das Script nicht komplett kopiert.

<?

	GLOBAL $applicationIdValidation;
	GLOBAL $userIdValidation;           
	GLOBAL $echoServiceDomain;         
	GLOBAL $debug;
	GLOBAL $logging;
	GLOBAL $parentDataID;
	GLOBAL $AlexaArray;
	GLOBAL $AlexaLightArray;  
	GLOBAL $AlexaMasterKeyArray;  

//******************************************************************************
//	AmazonEcho relevante Definitionen
//******************************************************************************
	
	$applicationIdValidation    = 'amzn1.ask.skill.ID';
	$userIdValidation           = 'amzn1.account.ID';
	$echoServiceDomain          = 'echo-api.amazon.com';

//******************************************************************************
//	IPSymcon relevante Definitionen
//******************************************************************************
	$debug   = true;
	$logging = true;

	$parentDataID = IPSUtil_ObjectIDByPath("Program.IPSLibrary.data.privat.AmazonEcho");
	
	$AlexaLightArray = array( 
	//	   spoken         spoken           response         IPSLight Name       not used .............
	array("wohnzimmer"	,"wand"				,"Wohnzimmer"	,"Wohnen Deckenlicht"	,true	,true	,false),
	array("wohnzimmer"	,"decke"		,"Esszimmer"	,"Essen Deckenlicht"	,true	,true	,false),
	array("flur","licht","Flur","Flur",true,false,false),
					);

//******************************************************************************
// Demo Konfiguration
// Suche nach Schluesselwoerter um dann das angegeben Script zu starten
//******************************************************************************

	$AlexaArray = array( 
				
	array("search('licht') AND ( search('schalte') OR search('dimme') ) "			,"AmazonEcho_Licht.ips.php"		),
	array("search('temperatur') AND search('hoch') "								,"AmazonEcho_Temperatur.ips.php"),
				);


	




?>