Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

Begonnen von viegener, 20 Juni 2015, 18:59:41

Vorheriges Thema - Nächstes Thema

andies

Zitat von: andies am 23 Dezember 2017, 10:58:54
Geht das auch mit images? So was wie silentimage?
Ich habe mal im Quelltext geschaut, sollte klappen. Zwei Ideen:
Zitat
- 615        return "TelegramBot_Set: Command $cmd, addiitonal parameter specified" if ( int(@args) >= 1 );
+615        return "TelegramBot_Set: Command $cmd, additional parameter specified" if ( int(@args) >= 1 );
und die API sagt, dass disable_notification sowohl für https://core.telegram.org/bots/api#sendmessage als auch https://core.telegram.org/bots/api#sendphoto verwendbar ist. Wäre das dann so denkbar
Zitat
226 "sendImage" => "textField",
227 "sendPhoto" => "textField",
+228  "silentsendImage" => "textField",
und weiter vermutlich hier?
Zitat
-520    if ( ($cmd eq 'sendPhoto') || ($cmd eq 'sendImage') || ($cmd eq 'image') ) {
+520   if ( ($cmd eq 'sendPhoto') || ($cmd eq 'sendImage') || ($cmd eq 'silentsendImage') || ($cmd eq 'image') ) {
+521   if ($cmd eq 'silentsendImage')  {
+522     $options .= " -silent- ";
+523   }
Ich traue mich nur nicht das auszuprobieren, weil ich entfernt auf mein FHEM zugreife und wenn das nicht klappt, habe ich den GAU.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Astrofreak85

Zitat von: andies am 23 Dezember 2017, 10:58:54
Geht das auch mit images? So was wie silentimage?

das wäre natürlich auch geil zumal ich viele images rausschicke :)

viegener

Zitat von: andies am 23 Dezember 2017, 10:58:54
Geht das auch mit images? So was wie silentimage?


Ja, prinzipiell sollte das erweiterbar sein und da ich mir schon dachte, dass das noch gebracuth wird, habe ich das ja generisch gebaut. Ich kann das bei Gelegenheit nachrüsten.

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

viegener

Zitat von: andies am 23 Dezember 2017, 11:08:32
Noch eine Frage zu msg. Ich scheitere an Befehlen der Form
set TelegramBot silentmsg {ReadingsVal("device", "reading", "default")}
und kriege statt des Readings den Quellcode. Das dagegen klappt
set TelegramBot silentmsg  [AusloesendesDevice:Reading]
dabei kann aber "AusloesendesDevice" nur das Gerät (bei mir DOIF) sein, das dann den genannten set-Befehl aufruft. Kann ich Perl-Code bei msg angeben?

Wenn Du perl-Ausdrücke innerhalb eines set_befehls verwenden willst, müssen diesen in {( ... )} stehen. Also:


set TelegramBot silentmsg {( ReadingsVal("device", "reading", "default") )}



Das hat aber nichts mit telegram zu tun sondern ist generell bei set so:

https://fhem.de/commandref.html#set

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

andies

Zitat von: andies am 23 Dezember 2017, 13:23:13
Ich habe mal im Quelltext geschaut, sollte klappen. Zwei Ideen
Klappt, wenn man noch einen weiteren Eintrag macht:

+476  if( ($cmd eq 'message') || ($cmd eq 'queryInline') || ($cmd eq 'queryEditInline') || ($cmd eq 'queryAnswer') || ($cmd eq 'msg') || ($cmd eq '_msg') || ($cmd eq 'reply') || ($cmd eq 'msgEdit') || ($cmd eq 'msgForceReply') || ($cmd eq 'silentmsg') ||  ($cmd eq 'silentsendImage') || ($cmd =~ /^send.*/ ) ) {

Wobei das viegener sicherlich eleganter lösen wird, mit den regex habe ich es nicht so...
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

viegener

Zitat von: andies am 26 Dezember 2017, 19:23:57
Klappt, wenn man noch einen weiteren Eintrag macht:

+476  if( ($cmd eq 'message') || ($cmd eq 'queryInline') || ($cmd eq 'queryEditInline') || ($cmd eq 'queryAnswer') || ($cmd eq 'msg') || ($cmd eq '_msg') || ($cmd eq 'reply') || ($cmd eq 'msgEdit') || ($cmd eq 'msgForceReply') || ($cmd eq 'silentmsg') ||  ($cmd eq 'silentsendImage') || ($cmd =~ /^send.*/ ) ) {

Wobei das viegener sicherlich eleganter lösen wird, mit den regex habe ich es nicht so...

In github findet sich schon eine Version mit einem set-Befehl silentImage , ich konnte diese aber noch nicht wirklich testen, deshalb ist sie noch nicht in svn

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

TWART016

#1821
Ich bekomme seit heute den Fehler beim Senden von FHEM an meinen Bot.

FAILED peer not found :User_Name:

list:

Internals:
   FAILS      0
   NAME       Telegram
   NR         439
   OLD_POLLING 79
   POLLING    79
   SNAME      Telegram
   STATE      Polling
   TYPE       TelegramBot
   UPDATER    0
   WAIT       0
   me         275143847:FHEM:@botname_bot
   offset_id  275238788
   sentLastResult NonBlockingGet: returned FAILED peer not found :User_Name:
   sentMsgId 
   sentMsgOptions
   sentMsgPeer
   sentMsgPeerId
   sentMsgResult NonBlockingGet: returned FAILED peer not found :User_Name:
   AliasCmds:
   Contacts:
     265897026  265897026:name:
   HU_DO_PARAMS:
     data       
     header     agent: TelegramBot/1.0
User-Agent: TelegramBot/1.0
Accept: application/json
Accept-Charset: utf-8
     hideurl    1
     loglevel   4
     method     GET
     timeout    30
     url       
     hash:
   HU_UPD_PARAMS:
     FD         17
     NAME       
     addr       https://api.telegram.org:443
     auth       0
     buf       
     code       200
     compress   1
     displayurl <hidden>
     header     agent: TelegramBot/1.0
User-Agent: TelegramBot/1.0
Accept: application/json
Accept-Charset: utf-8
     hideurl    1
     host       api.telegram.org
     hu_blocking 0
     hu_filecount 78
     hu_port    443
     hu_portSfx
     isPolling  update
     loglevel   4
     method     GET
     offset     275238788
     path       /bot2755646847:AAFnJbFdfdklsfjlkdsfkvcdkfölsfzAuhzt7GYs/getUpdates?offset=2755646847&limit=5&timeout=180
     protocol   https
     redirects  0
     timeout    365
     url        https://api.telegram.org/bot2755646847:AAFnJbFjEB-WDSuHWtUmt3m7czAuhzt7GYs/getUpdates?offset=2755646847&limit=5&timeout=180
     hash:
     sslargs:
   READINGS:
     2018-01-08 14:52:19   Contacts        265897026:name:
     2018-01-08 00:00:18   PollingErrCount 0
     2018-01-06 12:05:04   PollingLastError NonBlockingGet: returned gethostbyname api.telegram.org failed
     2018-01-08 19:50:14   msgChat         name
     2018-01-08 19:50:14   msgChatId       265897026
     2018-01-08 19:50:14   msgFileId       
     2018-01-08 19:50:14   msgId           3726
     2018-01-08 19:50:14   msgPeer         name
     2018-01-08 19:50:14   msgPeerId       265897026
     2018-01-08 19:50:14   msgReplyMsgId   
     2018-01-08 19:50:14   msgText         Test
     2018-01-08 19:50:14   prevMsgChat     name
     2018-01-08 19:50:14   prevMsgFileId   
     2018-01-08 19:50:14   prevMsgId       3725
     2018-01-08 19:50:14   prevMsgPeer     name
     2018-01-08 19:50:14   prevMsgPeerId   265897026
     2018-01-08 19:50:14   prevMsgReplyMsgId
     2018-01-08 19:50:14   prevMsgText     Test
     2018-01-08 19:58:36   sentMsgId       
     2018-01-08 19:58:36   sentMsgPeerId   
     2018-01-08 19:58:36   sentMsgResult   NonBlockingGet: returned FAILED peer not found :User_Name:
   inlinechats:
   sentQueue:
Attributes:
   allowUnknownContacts 0
   cmdFavorites /cmd
   cmdKeyword FHEM
   cmdRestrictedPeer 265897026
   defaultPeer User_Name
   pollingTimeout 180
   room       Gateway

viegener

Kann es sein, dass Du Deine Kontakte (Reading Contacts) verloren hast?
Da steht nur noch ein Account drin - der user an den Du senden willst sollte einfach nochmal eine Nachricht an den Bot senden

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

TWART016

Ich habe von der App nochmal eine Nachricht an FHEM geschickt. Das Reading contacts verändert sich nicht.

Mir ist eben aufgefallen die letzte Aktualsierung des Readings war zu dem Zeitpunkt, als ich einen Link von der App an FHEM gesendet habe.

viegener

@TWART016: Sorry, Du musst vorher noch das ATtribut allowUnknownContacts auf 1 setzen, damit Kontakte angelegt werden
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

JoWiemann

Zitat von: TWART016 am 08 Januar 2018, 21:14:16
Ich habe von der App nochmal eine Nachricht an FHEM geschickt. Das Reading contacts verändert sich nicht.

Mir ist eben aufgefallen die letzte Aktualsierung des Readings war zu dem Zeitpunkt, als ich einen Link von der App an FHEM gesendet habe.

Du solltest das Attribut allowUnknownContacts wieder auf 1 setzen. Da der Kontakt nicht bekannt ist, wird er durch das Attribut ignoriert.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

TWART016

Hatte ich zwischenzeitlich schon gemacht, gleiches Verhalten.

viegener

@TWART016: Also nochmal im Detail:
1 allowUnknownContacts auf 1 setzen
2 Von dem Benutzer, der in Contacts fehlt (also User_Name)  in Telegram eine Nachticht an den Bot senden
3 Nachdem die Nachricht beim Bot angekommen ist - überprüfen des Contacts reading - Name sollte enthalten sein
4 allowUnknownContacts auf 0 setzen
5 Save in fhem durchführen
6 Nun sollte ein Versenden an User_Name wieder möglich sein

Wenn das mit genau den Schritten nicht funktioniert - brauche ich mehr Infos:
- Was passiert beim senden von Benutzer User_Name and TelegramBot - kommt die Nachricht an?
- Gibt es Logeinträge
- Verboselevel erhöhen und log hier posten
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

TWART016

Hallo viegener,

jetzt geht es. Ich hatte vor vielen Wochen meinen Benutzernamen in Telegram geändert. Mir war nicht klar, dass die beiden Punkte zusammenhängen.

Bis jetzt hat es auch funktioniert, da ich nur von FHEM aus gesendet habe. Erst nachdem ich vor ein paar Tagen vom Bot an FHEM senden wollte, hat die andere Richtung nicht mehr funktioniert.

Vielen Dank für die Hilfe.


Gruß
TWART016

Torsten_MG

#1829
Hallo Leute, habe mir heute das Modul geladen. Auf ersten Blick TOP!

Aber leider funktioniert das Senden von FHEM an mein Handy nicht.

Wenn ich
set teleBot message Hallo
oder
set teleBot send Hallo
eingebe, kommt folgende Meldung:
TelegramBot_Set: Command message, without explicit peer requires defaultPeer being set

aber die PeerID habe ich gesetzt!?

hier mal die list:
Internals:
   FAILS      0
   NAME       teleBot
   NR         134
   OLD_POLLING 9
   POLLING    9
   SNAME      teleBot
   STATE      Polling
   TYPE       TelegramBot
   UPDATER    0
   WAIT       0
   me         468937656:Fhem:@Fhem_Ue_Bot
   Contacts:
     367287505  367287505:Torsten:@Torsten_Ue
   HU_DO_PARAMS:
     header     agent: TelegramBot/1.0
User-Agent: TelegramBot/1.0
Accept: application/json
Accept-Charset: utf-8
     hideurl    1
     method     GET
     timeout    30
     url       
   HU_UPD_PARAMS:
     FD         17
     NAME       
     addr       https://api.telegram.org:443
     auth       0
     buf       
     code       200
     compress   1
     displayurl <hidden>
     header     agent: TelegramBot/1.0
User-Agent: TelegramBot/1.0
Accept: application/json
Accept-Charset: utf-8
     hideurl    1
     host       api.telegram.org
     hu_blocking 0
     hu_filecount 3
     hu_port    443
     hu_portSfx
     isPolling  update
     loglevel   4
     method     GET
     offset     0
     path       /bot468937656:AAFXg66F0KAHxC5Kz0Budoxxxx_xxxx_xxxx/getUpdates?offset=0&limit=5&timeout=120
     protocol   https
     redirects  0
     timeout    245
     url        https://api.telegram.org/bot468937656:AAFXg66F0KAHxC5Kz0Budoxxxx_xxxx_xxxx/getUpdates?offset=0&limit=5&timeout=120
     hash:
     sslargs:
   READINGS:
     2018-01-10 11:19:25   Contacts        367287505:Torsten:@Torsten_Ue
     2018-01-10 12:38:21   PollingErrCount 1
     2018-01-10 12:38:21   PollingLastError NonBlockingGet timed out on read from <hidden> after 245s
     2018-01-10 12:28:27   msgChat         Torsten
     2018-01-10 12:28:27   msgChatId       367287505
     2018-01-10 12:28:27   msgFileId       
     2018-01-10 12:28:27   msgId           16
     2018-01-10 12:28:27   msgPeer         Torsten
     2018-01-10 12:28:27   msgPeerId       367287505
     2018-01-10 12:28:27   msgReplyMsgId   
     2018-01-10 12:28:27   msgText         Hh
     2018-01-10 12:28:27   prevMsgChat     Torsten
     2018-01-10 12:28:27   prevMsgFileId   
     2018-01-10 12:28:27   prevMsgId       15
     2018-01-10 12:28:27   prevMsgPeer     Torsten
     2018-01-10 12:28:27   prevMsgPeerId   367287505
     2018-01-10 12:28:27   prevMsgReplyMsgId
     2018-01-10 12:28:27   prevMsgText     Hh
   inlinechats:
Attributes:
   pollingTimeout 120
   room       System


Das Senden vom Handy zu Fhem funktioniert ohne Probleme.

Hoffe mir kann da jemand weiterhelfen.

EDIT:

Habe gerade noch folgendes im Event Monitor gefunden:
2018-01-10 12:56:49 TelegramBot teleBot PollingLastError: NonBlockingGet timed out on read from  after 245s
2018-01-10 12:56:49 TelegramBot teleBot PollingErrCount: 6