Hallo André,
ich habe gestern mein produktives FHEM aktualisiert und anschließend festgestellt dass meine definierten Alexa-Inents in FHEM einen Fehler erzeugen.
die FHEM-Intents sind (bzw. inzwischen waren) bei mir nach folgendem Schema definiert:
attr Alexa fhemIntents #IntentName=<sample utterance>
{alexa_intent('bett')}=ich gehe jetzt ins bett
{alexa_intent('schlafen')}=gute nacht
{alexa_intent('essen')}=es gibt essen
die sub alexa_intent() ist in meiner 99_AlexaUtils.pm definiert, dort findet dann die eigentliche Intent-Behandlung statt.
Das hat bis zum Update gestern auch anstandslos funktioniert.
Seit dem Update gestern erhalte ich beim Aufruf eines solchen Intents folgende Fehlermeldung:
2017.07.31 19:16:37 1: ERROR evaluating {my %specials=(); my $exec = EvalSpecials('{alexa_intent('essen')}', %specials); return AnalyzePerlCommand($defs{"Alexa"}, $exec)}: Bad name after essen' at (eval 212110) line 1.
2017.07.31 19:17:41 1: ERROR evaluating {my %specials=(); my $exec = EvalSpecials('{alexa_intent('bett')}', %specials); return AnalyzePerlCommand($defs{"Alexa"}, $exec)}: Bad name after bett' at (eval 212190) line 1.
Der eigentliche Aufruf von
{alexa_intent('bett')}
in der FHEMWEB-Kommandozeile funktioniert aber nach wie vor problemlos.
Ich schätze mal, dass es sich gar nicht wirklich um ein Alexa-Problem sondern, sondern evtl. etwas tiefer liegt, wie der Hinweis auf EvalSpecials nahelegt, allerdings treten bei mir derzeit nur bei Alexa die genannten Symptome auf.
Für mich jetzt erst mal kein Beinbruch und kein akuter Fall. Ich habe mir eben für jeden Intent nun eine Einzel-sub in der 99_AlexaUtils.pm angelegt und damit funktionieren die Intents bei mir wieder:
{alexa_ab_ins_bett}=ich gehe jetzt ins bett
{alexa_schlafen}=gute nacht
{alexa_essen}=es gibt essen
VG Benni.
Sehe schon eine mögliche Fehlerquelle:
Zitatmy $exec = EvalSpecials('{alexa_intent('essen')}'
Ich würde dann mit alexa_intent("essen") statt alexa_intent('essen') versuchen.
Vergessen zu erwähnen :-[
Das hatte ich schon durchexerziert:
Wenn ich das hier in die FHEMWEB-Kommandozeile eingebe
{EvalSpecials('{alexa_intent('essen')}'}
erhalte ich den selben Fehler, wie auch bei der Intentauswertung:
Zitat
Bad name after essen' at (eval 272500) line 1.
Wenn ich den von dir vorgeschlagenen Aufruf
{EvalSpecials('{alexa_intent("essen")}'}
eingebe erhalte ich folgende Fehlermeldung:
Zitat
syntax error at (eval 272715) line 1, at EOF
Auch ein Escapen der ' hilft nicht weiter:
{EvalSpecials('{alexa_intent(\'essen\')}'}
Zitat
syntax error at (eval 272928) line 1, at EOF
ZitatWenn ich den von dir vorgeschlagenen Aufruf
Code: [Auswählen]
{EvalSpecials('{alexa_intent("essen")}'}
eingebe erhalte ich folgende Fehlermeldung:
Zitat
syntax error at (eval 272715) line 1, at EOF
Ja klar, da fehlt eine ) vor der letzten }
Zitat von: amenomade am 01 August 2017, 22:22:06
Ja klar, da fehlt eine ) vor der letzten }
Wo du recht hast!
(peinlich: den Fehler habe ich echt 2 mal gemacht! :-[ Sonst hätte ich mich gar nicht erst gemeldet.)
Mit der Klammer wird tatsächlich das korrekte Ergebnis geliefert:
{EvalSpecials('{alexa_intent("essen")}')}
Zitat
{alexa_intent('essen')}
Jetzt bleibt nur noch die Frage, wieso das vor dem update ohne Escape, bzw. mit den normalen Hochkomma so funktioniert hat?
Aber grundsätzlich würde ich das Problem nun als gelöst betrachten.
Es gab mehrere Änderungen in fhem.pl wegen evalspecials in den letzten Monaten.
ZitatEs gab mehrere Änderungen in fhem.pl wegen evalspecials in den letzten Monaten.
Ich habe sie verdraengt, kannst du mir helfen welche?
Ich weiss nicht genau welche die Ursache von diesem bestimmten Problem ist, aber z.B.: 14046 14344
Es kann auch natürlich eine Änderung in alexa-fhem sein. Aber die .js ändern sich nicht so oft.
Da hast Du natuerlich recht: 14046 ist aus April, 14344 aus Mai, habe sie komplett verdraengt. Sie haben jeweils Bugs gefixt, z.Bsp. rekursive Aufrufe erlaubt.
Das hier diskutierte Problem hat aber nichts damit zu tun:
EvalSpecials('{alexa_intent('essen')}', %specials);
muss Fehler liefern, da der erste Argument nicht ordentlich in ' eingeschlossen ist.
Einen EvalSpecials Aufruf mit '' habe ich weder in fhem.pl noch in FHEM/*.pm gefunden, evtl. ist das Alexa spezifisch, und damit kenne ich mich nicht aus.
Die Ursache kann auch die 13562 von 39_alexa sein, da zum ersten Mal EvalSpecial aufgerufen wurde?
Ich weiss nicht. Aber das Problem von diesem Thread ist gelöst :)
Also,
eben nachgeschaut:
Die fhem.pl vor dem update war die
Zitat
fhem.pl 14348 2017-05-22 20:25:06Z rudolfkoenig
aktuell habe ich
Zitat
fhem.pl 14634 2017-07-03 08:33:25Z rudolfkoenig
Die 39_alexa.pm war beim Update anscheinend gar nicht dabei. Aktuell habe ich da die Version
Zitat
39_alexa.pm 14128 2017-04-28 12:10:41Z justme1968