(gelöst): [Alexa] - Problem mit Intents (oder EvalSpecials?)

Begonnen von Benni, 01 August 2017, 18:12:31

Vorheriges Thema - Nächstes Thema

Benni

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.

amenomade

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.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Benni

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



amenomade

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 }
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Benni

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.

amenomade

Es gab mehrere Änderungen in fhem.pl wegen evalspecials in den letzten Monaten.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

rudolfkoenig

ZitatEs gab mehrere Änderungen in fhem.pl wegen evalspecials in den letzten Monaten.

Ich habe sie verdraengt, kannst du mir helfen welche?

amenomade

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.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

rudolfkoenig

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.

amenomade

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 :)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Benni

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