Das ist ne blöde Geschichte und liegt an der Abarbeitung des Scriptes. Wenn Du mit Verzögerung arbeitest, wird der Punkt abgearbeitet, aber verzögert gestartet. Mit Timeout wird das auch verzögert abgearbeitet. Da musst echt aufpassen, was Du wirklich mit erreichen willst. Auf den ersten Blick ist das von der Funktion identisch, auf den zweiten wird der Unterschied deutlich. Da bin ich auch schon ein paar mal falsch gelegen
Alexa als Sprchausgabe im ioBroker
-
Chaot -
29. Juli 2018 um 18:35 -
Erledigt
-
-
-
Ja habs grade nochmal mit nem kleinen Testscript ausprobiert...
Hatte bisher noch nicht mit Verzögerung gemacht... aber ist ja gut zu wissen, das es unterschiedlich geht und man beides auch für unterschiedliche Sachen nutzen kann...
-
Bin ziemlich unerfahren mit scripting und blockly.
Die Alexa Sprachausgabe habe ich gerade so hinbekommen durch Beispiele im iobroker Forum.
Ich möchte jetzt aber nur die Sprachausgabe bei Anruf auf eine bestimmte Rufnummer.
Momentan reagiert der ibroker ja auf alle.
Kann mir da bitte jemand helfen? Scriptschnipsel oder blockly.
Danke
-
Na einfach ein Trigger auf "ringing" damit das Script bei einem Anruf anspringt und dann ne falls Bedingung auf die gewünschte Nummer. Da den Text rein und fertig.
-
Na einfach ein Trigger auf "ringing" damit das Script bei einem Anruf anspringt und dann ne falls Bedingung auf die gewünschte Nummer. Da den Text rein und fertig.
Dass es wohl so gemacht wird, hab ich von der Logik her schon verstanden.
Aber die Umsetzung schaf ich halt nicht. Deshalb ja meine Bitte nach script oder blockly.
So hilfst Du mir leider nicht.
-
Sind doch schon 2 Blocklys gepostet, wenn Du da die Änderung nicht selbständig rein bekommst, weiß ich auch nicht wo ich anfangen soll, da das ganze selbstredend ist und was zu ändern ist, steht doch auch schon da.
Am schnellsten lernt man den Umgang, wenn man es selber macht und irgendwann muss man damit anfangen. Bastel mal was und wenn es gegen alle Vermutungen nicht läuft, dann poste das hier. Fertige Dinge auf dem Silbertablett sind zwar schön, bringen Dich aber nicht im geringsten weiter
-
Sind doch schon 2 Blocklys gepostet, wenn Du da die Änderung nicht selbständig rein bekommst, weiß ich auch nicht wo ich anfangen soll, da das ganze selbstredend ist und was zu ändern ist, steht doch auch schon da.
Am schnellsten lernt man den Umgang, wenn man es selber macht und irgendwann muss man damit anfangen. Bastel mal was und wenn es gegen alle Vermutungen nicht läuft, dann poste das hier. Fertige Dinge auf dem Silbertablett sind zwar schön, bringen Dich aber nicht im geringsten weiter
Verstehe Deine Antwort nicht.
Du erklärst mir, was ich ich wohl machen sollte oder verstehen sollte.
Hilfreicher für mich wäre halt einfach ein script, das mir zeigt, wie ich das mache.
Silbertablett brauch ich nicht, sondern konstruktive Hilfe.
Ich habe natürlich versucht und probiert, es selbst zu lösen.
Da ich da aber nicht weitergekommen bin, hab ich hier um Hilfe gebeten.
Sorry, so hilfst Du mir nicht.
-
Nimm Doch einfach das Blockly von Supermicha und ändere das so ab wie geschrieben, was willst denn noch mehr als Hilfe, ein fertiges Blockly?
-
Ich möchte jetzt aber nur die Sprachausgabe bei Anruf auf eine bestimmte Rufnummer.
Ich hatte meine Frage eigentlich eindeutig formuliert - vielleicht hast Du das übersehen.
Du hast mir jetzt dreimal geantwortet ohne mich einen Schritt weiterzubringen.
Am besten wäre es wohl gewesen, Du hättest überhaupt nicht auf meine Frage geantwortet.
Ich denke doch, dass ein Forum u.a. dazu da ist, anderen dort zu helfen, wo sie Hilfe benötigen - egal wie "dumm" sie sich anstellen. So mach ich das jedenfalls.
-
Ich habe Dir 3 mal geschrieben was zu tun ist und wenn Du das nicht machen möchtest, dann lass es einfach. Es gibt ein fertiges Blockly, dass bei jedem Anruf spricht und was zu ändern ist, um auf eine bestimmte Nummer zu sprechen, habe ich auch geschrieben, alles weitere waren nur Hinweise auf das bereits Geschriebene, was gleichzeitig die Antwort auf Deine Frage darstellt.
Wenn das bisschen Text Dich schon so überfordert, dann fällt mir nix ein, wie ich es mit noch weniger Worten erklären sollte. Alles was nötig ist, steht bereits hier.
-
Ich habe Dir 3 mal geschrieben was zu tun ist und wenn Du das nicht machen möchtest, dann lass es einfach
Du hast mir dreimal meine eigentliche Frage nicht beantwortet.
Wie in meiner Frage beschrieben, habe ich das script zur Signalisierung bereits aus dem iobrker Forum zum Laufen bekommen.
Dein Verweis auf das script von Supermicha ist also somit hinfällig. Auch habe ich mich bereits mehrere Stunden abgemüht, mein Problem selbst zu lösen.
So, und jetzt beenden wir einfach das Thema.
-
Na einfach ein Trigger auf "ringing" damit das Script bei einem Anruf anspringt und dann ne falls Bedingung auf die gewünschte Nummer. Da den Text rein und fertig.
Das ist die Antwort auf Deine Frage, wenn das schon nicht verständlich ist, wenn man das Blockly von Supermicha zur Verfügung hat, dann weiß ich echt nicht weiter.
In der Regel postet ein Fragender auch sein Blockly, was nicht richtig läuft und bekommt dann dazu seine Hilfe. Bei meiner Glaskugel war gerade Bildstörung und somit weiß ich nicht wo bei Dir der Fehler liegt.
-
Habs endlich hinbekommen - nach zahlreichen Versuchen.
-
Versuch macht kluch....
Und wenn du jetzt dein Blockly mal postest, wärs perfekt
-
Na was erwartet denn? Das ist exakt Dein Blockly mit den vorgeschlagenen Änderungen von mir. War ja auch mehr als einfach bei den vorhandenen Vorgaben hier
-
Na was erwartet denn? Das ist exakt Dein Blockly mit den vorgeschlagenen Änderungen von mir. War ja auch mehr als einfach bei den vorhandenen Vorgaben hier
Also mit Deinen "Vorgaben" habe ich es zumindest nicht lösen können.
Mag sein, dass Deine "Lösung" ja trotzdem funktioniert.
Aber das muss dann wohl jeder hier für sich selbst rausbringen - damit er was lernt
-
Na und Du schaffst es immer noch nicht Deine Lösung hier zu posten, damit andere was draus lernen können
-
Mit dem Trigger Objekt-Id " ringing" hab ich es nicht hinbekommen.
Irgendwie bin ich auf Objekt-Id "callee" gekommen.
Damit gehts. Ob es mit ringing auch geht, würde mich natürlich interessieren.
xxxx sind nur Platzhalter. Je nach Anzahl der Rufnummern kann man variieren.
Bei callee die jeweilige Rufnummer eingeben.
Schleife hab ich nicht hinbekommen. Deshalb meine Krücke mit zweimal "speek".
Update wegen Beitrag #63
Die gelb umrandeten Felder sind nur Kommentare.
Update wegen Beitrag #66:Den Trigger bitte selbst auf
callercallerName setzen.Anscheinend wird nur der zuverlässig aktuallisiert.
-
Hier noch der Blockly-Code.
Ich weiß aber nicht, ob man den einfach importieren kann.
Code
Alles anzeigen<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="on_ext" id="w8g(Y6%]QU~S!PbAu*Rg" x="-862" y="-362"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="+V-rO:(LgBjtt%i3M.=A"> <field name="oid">tr-064.0.callmonitor.inbound.callee</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="%h8NY{GZGQZ)5tKX`9[C"> <mutation elseif="2" else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="YNllN0Cz_eQeWY^Y`XBQ"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id=".h;~,hQaNlA=A-r%=QFp"> <field name="ATTR">val</field> <field name="OID">tr-064.0.callmonitor.inbound.callee</field> </block> </value> <value name="B"> <block type="math_number" id="=Kplznwf:cH[I,ph,._a"> <field name="NUM">1234561</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="T^h]MBxiP`}66Us^o64*"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LF1174150HSS.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="G.?hmkD8Z*e8ygXN|#.,"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="C3R*hEg*AZjeKqK{)CBu"> <field name="TEXT">Anruf von</field> </block> </value> <value name="ADD1"> <block type="get_value" id="E{7/;1y9|^u|Loj]Ddwt"> <field name="ATTR">val</field> <field name="OID">tr-064.0.callmonitor.inbound.callerName</field> </block> </value> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="0rN3nhD4anh1saQt?Ucn"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="D#R,?*hTs.H0dnqM3y-v"> <field name="ATTR">val</field> <field name="OID">tr-064.0.callmonitor.inbound.callee</field> </block> </value> <value name="B"> <block type="math_number" id="4g!6JP7:gc?M4X.,jt,Y"> <field name="NUM">1234562</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="aD{{r;1iXqt-dr#!#Sn["> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LF1174150HSS.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="+z[zz;xZ3bZG[Q=TpCjP"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="T.!pof]|NLPl4o1x)@,d"> <field name="TEXT">Hallo von</field> </block> </value> <value name="ADD1"> <block type="get_value" id="t2lo?M]KXnE}WFL6C5~~"> <field name="ATTR">val</field> <field name="OID">tr-064.0.callmonitor.inbound.callerName</field> </block> </value> </block> </value> </block> </statement> <value name="IF2"> <block type="logic_compare" id="M#hxgaiIM)b^7w={k)WC"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id=")|H9,}(o3VCk+q|K@/?T"> <field name="ATTR">val</field> <field name="OID">tr-064.0.callmonitor.inbound.callee</field> </block> </value> <value name="B"> <block type="math_number" id="WAYIo008b?Y9JM*mkTsQ"> <field name="NUM">1234563</field> </block> </value> </block> </value> <statement name="DO2"> <block type="control" id="TNd1B{tL`7qjVqk+(b_a"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LF1174150HSS.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id=";gGz2y#,,W/PY2|N|}4["> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="81%p:ktdZB!M}.JBEXfq"> <field name="TEXT">Anruf von</field> </block> </value> <value name="ADD1"> <block type="get_value" id="`Ucl6)l^17g5Q{Yt+K;3"> <field name="ATTR">val</field> <field name="OID">tr-064.0.callmonitor.inbound.callerName</field> </block> </value> <value name="ADD2"> <block type="get_value" id="d4CP46#NR-Tvk4BQ/U70"> <field name="ATTR">val</field> <field name="OID">tr-064.0.callmonitor.inbound.caller</field> </block> </value> </block> </value> <next> <block type="comment" id="3B[,Z?qtXE~It9Fd5}Z!"> <field name="COMMENT">Falls Wiederholung gewünscht nochmal " speak"</field> <next> <block type="control" id="+yepKArYzj6E-6Ngr[.@"> <mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LF1174150HSS.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">7000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="text_join" id="w}E_a%3rXa.huT_un@Hy"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="sZmKu+KK@5Rfs8qI=!5r"> <field name="TEXT">Anruf von</field> </block> </value> <value name="ADD1"> <block type="get_value" id="SH]r~oy]OttxlGO-huOQ"> <field name="ATTR">val</field> <field name="OID">tr-064.0.callmonitor.inbound.callerName</field> </block> </value> <value name="ADD2"> <block type="get_value" id="#ZW`7z%0O4sH!`B8F4L{"> <field name="ATTR">val</field> <field name="OID">tr-064.0.callmonitor.inbound.caller</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> <statement name="ELSE"> <block type="comment" id="@svooCEeH~n[((6k6)af"> <field name="COMMENT">Das sonst kann man natürlich auch noch gestallten oder weglassen</field> </block> </statement> </block> </statement> </block> <block type="comment" id="P`#tnb!)DJLKSL9274mM" x="-737" y="88"> <field name="COMMENT">Wiederholung</field> </block> </xml>
-
Das ist exakt das was ich als Lösung vorgeschlagen hatte. Mit ringing funktioniert das schon, nur musst da eben auch ein Timeout einfügen, damit der Name des Anrufers auch schon aktualisiert ist, wenn er den Text erstellt. Sonst erstellt er eben den Text mit dem was beim Aktualisieren von callee gerade drin steht.
Die Script Abarbeitung ist halt recht zügig und wenn da ein paar Millisekunden vergehen bis ein DP aktualisiert wird, dann kann das eben auch schon zu spät sein.
Wenn ich DPs abfrage die während des eigentlichen Trigger erst eingelesen werden, baue ich zur Sicherheit immer ein Timeout ein.
Ehrlich, hättest einfach das Script von Supermicha oder mir eine Seite vorher genommen und da die Fallsbedingung reingebastelt (wie vorgeschlagen), dann hättest viel Zeit und Nerven gespart
Egal, haks ab und immerhin hast auch was gelernt dabei.
-