NEWS
Alexa per Telegram sprechen lassen
-
Hallo zusammen,
gibt es die Möglichkeit Alexa per Telegram anzutriggern. Und dann einen Text zu schicken den Alexa dann vorspricht?
Gesendet von meinem CLT-L29 mit Tapatalk
-
Das wäre mega cool 8-)
-
Hallo,
ja das geht. Hab ich bei mir mit dem text2command Adapter gemacht. Mit dem Adapter hast du die Möglichkeit als Rule "Send Text 2 State" auszuwählen. Da dann einfach den Datenpunkt für das Speak Command des gewünschten Echos auswählen.
Im Telegram Adapter muss dann unter Messages noch die Instanz vom Text2Command Adapter ausgewählt werden.
-
Hallo,
ja das geht. Hab ich bei mir mit dem text2command Adapter gemacht. Mit dem Adapter hast du die Möglichkeit als Rule "Send Text 2 State" auszuwählen. `
wie funktioniert das Genau?
Danke
-
Ich habe hier ein Blockly (stammt aus der Facebookgruppe-nicht von mir)
Funktioniert bestens.
Ich stelle hier gleich noch einen Export davon rein.
Alle Echos in diesem Blockly werden mit dem Namen angesprochen. Bei mir heißen die wie der Raum in dem sie stehen.
Zum aktivieren des Echos der die Nachricht ansagen soll einfach einmal den Namen in Telegramm eintippen und senden.
Die Nachricht die nun eingetippt und abgeschickt wird kommt dann bei dem zuvor abgesendeten Echo an. (einmalig, für weitere Nachrichten wieder erst den Namen des Echos absenden und anschließend die Nachricht)
Der Name des Echos ist quasi das Aktivierungswort.
Export ist zu lang, ich hänge eine Textdatei an….
Edit: Blockly Export entfernt
-
Ich habe hier ein Blockly (stammt aus der Facebookgruppe-nicht von mir)
Funktioniert bestens.
Ich stelle hier gleich noch einen Export davon rein. `
Super!
Bin schon gespannt!
Mit deinen Beiträgen kam ich schon öfter viel weiter!
Aller Anfang ist schwer!
-
Ich habe hier ein Blockly (stammt aus der Facebookgruppe-nicht von mir)
Funktioniert bestens.
Ich stelle hier gleich noch einen Export davon rein. `
Super!
Bin schon gespannt!
Mit deinen Beiträgen kam ich schon öfter viel weiter!
Aller Anfang ist schwer! `
Ich habe meinen Beitrag oben aktualisiert und das Blockly als Textdatei eingefügt.
-
[Ich habe meinen Beitrag oben aktualisiert und das Blockly als Textdatei eingefügt. `
Danke dir!
Werd ich gleich testen!
Jetzt geht dann noch das nächste Projekt an, wie ich mit Telegram den ioBroker steuern kann, bzw. Statusmeldungen auf Telegram bekomme.
-
Ich habe hier ein Blockly (stammt aus der Facebookgruppe-nicht von mir)
Funktioniert bestens. `
Geil, hat sofort funktioniert!
Jetzt kann ich meiner Frau sagen, dass sie das Bier bringen soll! :lol: :lol:
-
Jetzt geht dann noch das nächste Projekt an, wie ich mit Telegram den ioBroker steuern kann, bzw. Statusmeldungen auf Telegram bekomme. `
Kannst ja mal damit spielen….(aktivierungswort ist MENÜ (menü geht auch)
`var Devices = [ { Name: 'Kaminlampe', Ort: "Wohnzimmer", an: true, aus: false, Objekt: "hm-rpc.0.xxx.3.STATE", Beschreibung: "Steckdose an der die Kaminlampe im Wohnzimmer angeschlossen ist"}, { Name: 'Fensterlampe', Ort: "Wohnzimmer", an: true, aus: false, Objekt: "hue.0.Philips_hue.Fensterlampe.on", Beschreibung: "Fensterlampe Wohnzimmer"}, { Name: 'Tischlampe', Ort: "Wohnzimmer", an: true, aus: false, Objekt: "hm-rpc.0.xxx.3.STATE", Beschreibung: "Steckdose an der die Tischlampe im Wohnzimmer angeschlossen ist"}, { Name: 'Schranklampe', Ort: "Wohnzimmer", an: true, aus: false, Objekt: "hm-rpc.xxx.3.STATE", Beschreibung: "Steckdose an der die Schranklampe im Wohnzimmer angeschlossen ist"}, { Name: 'Deckenlampe', Ort: "Wohnzimmer", an: true, aus: false, Objekt: "hue.0.Philips_hue.Deckenlampe.on", Beschreibung: "Deckenlampe Wohnzimmer"}, { Name: 'Licht komplett', Ort: "Wohnzimmer", an: true, aus: false, Objekt: "hue.0.Philips_hue.Wohnzimmer.on", Beschreibung: "Licht Wohnzimmer komplett"}, { Name: 'Fernseher', Ort: "Wohnzimmer", an: 2, aus: 0, Objekt: "harmony.0.Wohnzimmer.activities.Fernsehen", Beschreibung: "Fernseher Wohnzimmer über Harmony"}, { Name: 'Flurlicht', Ort: "Flur", an: true, aus: false, Objekt: "hue.0.Philips_hue.Flur-Kellertreppe.on", Beschreibung: "Flur Treppenlicht"}, ]; function DistinctKeyValues(Array, Key) { var unique = {}; var distinct = []; for( var i in Array ){ if (!Array[i].selection) { continue; } if( typeof(unique[Array[i][Key]]) == "undefined"){ distinct.push(Array[i][Key]); } unique[Array[i][Key]] = 0; } return distinct; } function ArrayDeselectKeyValues(Array, Key, Value) { for( var i in Array ) { if (Array[i][Key] != Value) { Array[i].selection = false; } } return Array; } function Array2ID(Array, Key, Value) { for( var i in Array ) { if (Array[i][Key] == Value) { break; } } return i; } function Key2Keyboard(Array, Key) { Distinct = [], OuterArray = []; Distinct = DistinctKeyValues(Array, Key); for( var i in Distinct ){ InnerArray = []; item = {}; item.text = Distinct[i]; item.callback_data = "___" + Key + ","+ Distinct[i]; InnerArray.push(item); OuterArray.push(InnerArray); } return OuterArray; } function SwitchKeyboard(Array, Key, Value) { Distinct = [], OuterArray = []; Distinct = ['an', 'aus']; for( var i in Distinct ){ InnerArray = []; item = {}; item.text = Distinct[i]; item.callback_data = "___" + Key + ","+ Distinct[i]; InnerArray.push(item); OuterArray.push(InnerArray); } return OuterArray; } function MenuFrageKey(Frage, Key, Array) { MenuFrage(Frage, Array, Key2Keyboard(Array, Key)); } function MenuFrageDevice(ID, Array) { Objekt = Array[ID].Objekt; Status=getState(Objekt).val; if (Status === Array[ID].an) { MenuFrage("Status von " + Array[ID].Name + ": eingeschaltet.\nWas wollen Sie tun?",Array, SwitchKeyboard(Array, '*'+Array[ID].Name, Array[ID].Name)); } else { MenuFrage("Status von " + Array[ID].Name + ": ausgeschaltet.\nWas wollen Sie tun?",Array, SwitchKeyboard(Array, '*'+Array[ID].Name, Array[ID].Name)); } } function MenuFrage(Frage, Array, KeyboardArray) { sendTo('telegram.0', { chatId: getState("telegram.0.communicate.requestChatId").val, text: Frage, reply_markup: { inline_keyboard: KeyboardArray, resize_keyboard: false, one_time_keyboard: true } }); return; } function MenuAntwortDeselect(Array, Key, Value) { MenuAntwort(Array, Key, Value); ArrayDeselectKeyValues(Array, Key, Value); } function MenuAntwort(Array, Key, Value) { sendTo('telegram.0', { chatId: getState("telegram.0.communicate.requestChatId").val, text: Key + ': ' + Value, editMessageText: { options: { chat_id: getState("telegram.0.communicate.requestChatId").val, message_id: getState("telegram.0.communicate.requestMessageId").val, } } }); return Array; } on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) { command = obj.state.val.substring(obj.state.val.indexOf(']')+1); console.log("Received: " + command); // Menü beginnen if (command.toUpperCase() ==="MENÜ") { //Reset previous selections for( var i in Devices ){ Devices[i].selection=true; } MenuFrageKey('Wo willst du etwas tun?', 'Ort', Devices); } // Antwort verarbeiten else if (command.startsWith("___")) { command = command.slice(3,command.length); var KeyVal = command.split(","); var Key = KeyVal[0]; var Value = KeyVal[1]; if (Key == 'Ort') { MenuAntwortDeselect(Devices, Key, Value); MenuFrageKey('Welches Gerät willst du steuern', 'Name', Devices); } else if (Key == 'Name') { MenuAntwortDeselect(Devices, Key, Value); ID=Array2ID(Devices, Key, Value); MenuFrageDevice(ID, Devices); } else if (Key.startsWith("*")) { Key=Key.slice(1,Key.length); ID=Array2ID(Devices, 'Name', Key); setState(Devices[ID].Objekt, Devices[ID][Value]); MenuAntwort(Devices, Devices[ID].Name, Value); } else { console.log("Else: ___" + command); } } else { console.log("Else: " + command); } });` [/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
-
Jetzt geht dann noch das nächste Projekt an, wie ich mit Telegram den ioBroker steuern kann, bzw. Statusmeldungen auf Telegram bekomme.
Kannst ja mal damit spielen….(aktivierungswort ist MENÜ (menü geht auch)
Danke
Ist das ein Blockly?
Ich schreib quasi in Telegram dann zB "Menü Fernseher an" und dann wird über den Harmony-adapter der Fernseher eingeschaltet.
-
das ist kein Blockly, das ist Javascript.
Es kommt dann ein Telegram Menü was Du beliebig erweitern kannst…
-
das ist kein Blockly, das ist Javascript.
Es kommt dann ein Telegram Menü was Du beliebig erweitern kannst… `
Danke
Habs als JS gespeichert!
Aber es schein unter "Objekte" - "Javascript.0" nicht auf!
Hier der Log dazu:
javascript.0 2019-01-23 17:57:33.989 info script.js.common.Telegram-Befehle: registered 1 subscription and 0 schedules javascript.0 2019-01-23 17:57:33.985 info Start javascript script.js.common.Telegram-Befehle
Es kommt dann ein Telegram Menü was Du beliebig erweitern kannst… `
Wo finde ich das Menü?
Im Telegram-Adapter?
-
das ist kein Blockly, das ist Javascript.
Es kommt dann ein Telegram Menü was Du beliebig erweitern kannst… `
Danke
Habs als JS gespeichert!
Aber es schein unter "Objekte" - "Javascript.0" nicht auf!
Hier der Log dazu:
javascript.0 2019-01-23 17:57:33.989 info script.js.common.Telegram-Befehle: registered 1 subscription and 0 schedules javascript.0 2019-01-23 17:57:33.985 info Start javascript script.js.common.Telegram-Befehle
Es kommt dann ein Telegram Menü was Du beliebig erweitern kannst… `
Wo finde ich das Menü?
Im Telegram-Adapter? ` Du startest das Script und dann gibst Du bei Telegram das Wort menü ein und sendest es ab.
Du kannst das Script um beliebig viele Räume und Geräte erweitern.
Einfach mal den oberen Teil im Script ansehen, das sollte selbsterklärend sein.
Ein Menü sollte bei Telegram auch mit diesem Script schon kommen, nur schalten kannst Du Deine Geräte erst wenn Du die im Script eingefügt hast.
Sieht dann so aus…
![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201901 ... 3748b5.jpg">https://uploads.tapatalk-cdn.com/20190123/98462dfc5a8ae9172819b9ad4d3748b5.jpg</link_text>" />![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201901 ... d2ca5f.jpg">https://uploads.tapatalk-cdn.com/20190123/64589157df54256760a3554cf3d2ca5f.jpg</link_text>" />![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201901 ... 2c2da9.jpg">https://uploads.tapatalk-cdn.com/20190123/046da7d7a8971f76223724c3f82c2da9.jpg</link_text>" />~~~~ -
Du startest das Script und dann gibst Du bei Telegram das Wort menü ein und sendest es ab. `
Ah, jetzt hab ich es verstanden!
Danke dir!
-
Jetzt geht dann noch das nächste Projekt an, wie ich mit Telegram den ioBroker steuern kann, bzw. Statusmeldungen auf Telegram bekomme. `
Kannst ja mal damit spielen….(aktivierungswort ist MENÜ (menü geht auch)
`var Devices = [ { Name: 'Kaminlampe', Ort: "Wohnzimmer", an: true, aus: false, Objekt: "hm-rpc.0.xxx.3.STATE", Beschreibung: "Steckdose an der die Kaminlampe im Wohnzimmer angeschlossen ist"}, { Name: 'Fensterlampe', Ort: "Wohnzimmer", an: true, aus: false, Objekt: "hue.0.Philips_hue.Fensterlampe.on", Beschreibung: "Fensterlampe Wohnzimmer"}, { Name: 'Tischlampe', Ort: "Wohnzimmer", an: true, aus: false, Objekt: "hm-rpc.0.xxx.3.STATE", Beschreibung: "Steckdose an der die Tischlampe im Wohnzimmer angeschlossen ist"}, { Name: 'Schranklampe', Ort: "Wohnzimmer", an: true, aus: false, Objekt: "hm-rpc.xxx.3.STATE", Beschreibung: "Steckdose an der die Schranklampe im Wohnzimmer angeschlossen ist"}, { Name: 'Deckenlampe', Ort: "Wohnzimmer", an: true, aus: false, Objekt: "hue.0.Philips_hue.Deckenlampe.on", Beschreibung: "Deckenlampe Wohnzimmer"}, { Name: 'Licht komplett', Ort: "Wohnzimmer", an: true, aus: false, Objekt: "hue.0.Philips_hue.Wohnzimmer.on", Beschreibung: "Licht Wohnzimmer komplett"}, { Name: 'Fernseher', Ort: "Wohnzimmer", an: 2, aus: 0, Objekt: "harmony.0.Wohnzimmer.activities.Fernsehen", Beschreibung: "Fernseher Wohnzimmer über Harmony"}, { Name: 'Flurlicht', Ort: "Flur", an: true, aus: false, Objekt: "hue.0.Philips_hue.Flur-Kellertreppe.on", Beschreibung: "Flur Treppenlicht"}, ]; function DistinctKeyValues(Array, Key) { var unique = {}; var distinct = []; for( var i in Array ){ if (!Array[i].selection) { continue; } if( typeof(unique[Array[i][Key]]) == "undefined"){ distinct.push(Array[i][Key]); } unique[Array[i][Key]] = 0; } return distinct; } function ArrayDeselectKeyValues(Array, Key, Value) { for( var i in Array ) { if (Array[i][Key] != Value) { Array[i].selection = false; } } return Array; } function Array2ID(Array, Key, Value) { for( var i in Array ) { if (Array[i][Key] == Value) { break; } } return i; } function Key2Keyboard(Array, Key) { Distinct = [], OuterArray = []; Distinct = DistinctKeyValues(Array, Key); for( var i in Distinct ){ InnerArray = []; item = {}; item.text = Distinct[i]; item.callback_data = "___" + Key + ","+ Distinct[i]; InnerArray.push(item); OuterArray.push(InnerArray); } return OuterArray; } function SwitchKeyboard(Array, Key, Value) { Distinct = [], OuterArray = []; Distinct = ['an', 'aus']; for( var i in Distinct ){ InnerArray = []; item = {}; item.text = Distinct[i]; item.callback_data = "___" + Key + ","+ Distinct[i]; InnerArray.push(item); OuterArray.push(InnerArray); } return OuterArray; } function MenuFrageKey(Frage, Key, Array) { MenuFrage(Frage, Array, Key2Keyboard(Array, Key)); } function MenuFrageDevice(ID, Array) { Objekt = Array[ID].Objekt; Status=getState(Objekt).val; if (Status === Array[ID].an) { MenuFrage("Status von " + Array[ID].Name + ": eingeschaltet.\nWas wollen Sie tun?",Array, SwitchKeyboard(Array, '*'+Array[ID].Name, Array[ID].Name)); } else { MenuFrage("Status von " + Array[ID].Name + ": ausgeschaltet.\nWas wollen Sie tun?",Array, SwitchKeyboard(Array, '*'+Array[ID].Name, Array[ID].Name)); } } function MenuFrage(Frage, Array, KeyboardArray) { sendTo('telegram.0', { chatId: getState("telegram.0.communicate.requestChatId").val, text: Frage, reply_markup: { inline_keyboard: KeyboardArray, resize_keyboard: false, one_time_keyboard: true } }); return; } function MenuAntwortDeselect(Array, Key, Value) { MenuAntwort(Array, Key, Value); ArrayDeselectKeyValues(Array, Key, Value); } function MenuAntwort(Array, Key, Value) { sendTo('telegram.0', { chatId: getState("telegram.0.communicate.requestChatId").val, text: Key + ': ' + Value, editMessageText: { options: { chat_id: getState("telegram.0.communicate.requestChatId").val, message_id: getState("telegram.0.communicate.requestMessageId").val, } } }); return Array; } on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) { command = obj.state.val.substring(obj.state.val.indexOf(']')+1); console.log("Received: " + command); // Menü beginnen if (command.toUpperCase() ==="MENÜ") { //Reset previous selections for( var i in Devices ){ Devices[i].selection=true; } MenuFrageKey('Wo willst du etwas tun?', 'Ort', Devices); } // Antwort verarbeiten else if (command.startsWith("___")) { command = command.slice(3,command.length); var KeyVal = command.split(","); var Key = KeyVal[0]; var Value = KeyVal[1]; if (Key == 'Ort') { MenuAntwortDeselect(Devices, Key, Value); MenuFrageKey('Welches Gerät willst du steuern', 'Name', Devices); } else if (Key == 'Name') { MenuAntwortDeselect(Devices, Key, Value); ID=Array2ID(Devices, Key, Value); MenuFrageDevice(ID, Devices); } else if (Key.startsWith("*")) { Key=Key.slice(1,Key.length); ID=Array2ID(Devices, 'Name', Key); setState(Devices[ID].Objekt, Devices[ID][Value]); MenuAntwort(Devices, Devices[ID].Name, Value); } else { console.log("Else: ___" + command); } } else { console.log("Else: " + command); } });` Das Funktioniert bei mir überhaupt nicht. Es öffnet sich keinerlei Menu in Telegram.[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i] ``` `
-
> gibt es die Möglichkeit Alexa per Telegram anzutriggern. Und dann einen Text zu schicken den Alexa dann vorspricht?
Die Aufgabenstellung läßt sich doch recht elegant per IFTTT und dem Alexa Adaperter 2.0 lösen:Per Telegramm eine Nachricht mit z.B. "Telegram_Alexa" und Inhalt "Lies diesen Satz vor" an @Ifttt senden.
Dann per Webhook den Datenpunkt im iobroker mit dem String "Lies diesen Satz vor" füllen.
Und abschließend den Datenpunkt auf Änderung überwachen und bei Änderung den Wert vorlesen lassen.
Ist eigentlich ganz easy und schnell zu realisieren.
Grüße
-
@dslraser
Ich hab das blockly heute auch mal ausprobiert, leider läuft es bei mir nicht. Das aktivierungs Wort nimmt er an, wenn ich dann aber das schreibe was der Dot sagen soll, kommt immer "ich verstehe xy nicht ".
Mit welchen Command2text Befehl wird das Script gestartet? Ich verwende schalte an/aus und setze es auf True.....liegt da der Fehler?
Gruß Peter -
@Treep77 sagte in Alexa per Telegram sprechen lassen:
@dslraser
Ich hab das blockly heute auch mal ausprobiert, leider läuft es bei mir nicht. Das aktivierungs Wort nimmt er an, wenn ich dann aber das schreibe was der Dot sagen soll, kommt immer "ich verstehe xy nicht ".
Mit welchen Command2text Befehl wird das Script gestartet? Ich verwende schalte an/aus und setze es auf True.....liegt da der Fehler?
Gruß Petermeinst du das Blockly von dslraser vom 23. Jänner?
Da wird mMn kein Command2Text verwendet.
Ich hab das nichteinmal installiert.
Hier noch das Blockly
Alexa-Speak.txt -
@Negalein ja genau das meinte ich. Hab wohl den falschen Button erwischt, wollte eigentlich auf seinen Post antworten.
Hmm ohne Text2command...dann muss ich nachher mal schauen.