Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

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

Vorheriges Thema - Nächstes Thema

DeeSPe

Zitat von: Masterfunk am 26 November 2016, 23:29:54
Die "abgespeckte" Variante ist genau das was ich brauche:

fileUrl:msgFileId.* {my $url=fhem "get $name urlForFile ".ReadingsVal($name,"msgFileId","")}

Vielen Dank!

Bei Dir müsste das dann so reichen:
fileUrl:msgFileId.* {fhem "get $name urlForFile ".ReadingsVal($name,"msgFileId","")}

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Masterfunk

Zitat von: DeeSPe am 26 November 2016, 23:37:50
Bei Dir müsste das dann so reichen:

Ja, passt. Mir reichen die letzen beiden Bilder.

Habe jetz folgende Userreadings:

fileUrl:msgFileId.* {fhem "get $name urlForFile ".ReadingsVal($name,"msgFileId","")},
prevfileUrl:msgFileId.*  {fhem "get $name urlForFile ".ReadingsVal($name,"prevMsgFileId","")}




Nochmals Danke

DeeSPe

Kleine Verbesserung noch!

Um sicherzustellen dass prevMsgFileId auch schon verändert wurde würde ich das userReading prevfileUrl auch auf eben dieses triggern:
prevfileUrl:prevMsgFileId.*  {fhem "get $name urlForFile ".ReadingsVal($name,"prevMsgFileId","")}

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Masterfunk


HoTi

Hallo zusammen,

ich habe ein wenig mit dem Modul gespielt und habe nun ungewöhnliche, mir nicht bekannte, Contacts.

Stehen die nur drin weil die es versucht haben, oder können die etwas mitlesen oder etwas schicken?

Viele Grüße
Tim
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

viegener

Zitat von: HoTi am 29 November 2016, 07:01:22
Hallo zusammen,

ich habe ein wenig mit dem Modul gespielt und habe nun ungewöhnliche, mir nicht bekannte, Contacts.

Stehen die nur drin weil die es versucht haben, oder können die etwas mitlesen oder etwas schicken?

Viele Grüße
Tim

Das kommt darauf an, wie Du konfiguriert hast.

Mitlesen können sie nicht. Schicken können sie, etwas auslösen können sie eigentlich nur, wenn Du die Hinweise zur Absicherung (z.B: im wiki: http://www.fhemwiki.de/wiki/TelegramBot) nicht befolgt hast.

Aus meiner Sicht ist cmdRestrictedPeer mit den user ids (numerische id) der Personen, die etwas auslösen dürfen unverzichtbar.

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

HoTi

Ok, auslösen kann man sowieso noch nichts. Aber wie kann ich die Contacts löschen, damit ich sauber die Liste schließen kann.
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

viegener

Dafür gibt es den set-Befehl replaceContacts

Also Contact reading nehmen - alle Einträge, die gelöscht werden sollen komplett entfernen - und das Ergebnis mit replaceContacts wieder setzen. Wichtig: Danach überprüfen ob alle gewünschten Kontakte enthalten sind und alle unerwünschten entfernt.

Wenn gewünscht kann man dann noch allowUnknownContacts auf 0 setzen

Das steht aber auch alles in der commandref  ;)
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Dopamin

Hallo

Ich habe mal eine Frage. Und zwar nutze ich auch den Telegram Bot und dieser funktioniert auch soweit.
Ich kann per Telegram Geräte abfragen und steuern. Das funktioniert auch alles.
Jetzt habe ich den Bot in einer Gruppe hinzugefügt und wollte dort auch Befehle an den Bot übergeben, damit dieser z.b die Temperaturen oder Status der Fenster in der Gruppe ausgibt. Leider reagiert der Bot in der Gruppe auf keine dieser Nachrichten.
Habt ihr ne Idee was das Problem sein kann und wie ich den Bot in der Gruppe dazu bringe auf Befehle zu reagieren?

Vielen Dank im Voraus

MfG

Dopamin

viegener

Zitat von: Dopamin am 05 Dezember 2016, 11:21:19
Hallo

Ich habe mal eine Frage. Und zwar nutze ich auch den Telegram Bot und dieser funktioniert auch soweit.
Ich kann per Telegram Geräte abfragen und steuern. Das funktioniert auch alles.
Jetzt habe ich den Bot in einer Gruppe hinzugefügt und wollte dort auch Befehle an den Bot übergeben, damit dieser z.b die Temperaturen oder Status der Fenster in der Gruppe ausgibt. Leider reagiert der Bot in der Gruppe auf keine dieser Nachrichten.
Habt ihr ne Idee was das Problem sein kann und wie ich den Bot in der Gruppe dazu bringe auf Befehle zu reagieren?

Vielen Dank im Voraus

MfG

Dopamin

Es gibt mehrere möglich Erklärungen:

- Privacy mode - Bots sehen in Gruppen standardmässig nur bestimmte Nachrichten, siehe hier - kann man beim botfather umschalten
https://core.telegram.org/bots#privacy-mode
- Wenn er die Nachrichten empfängt, aber nicht darauf reagiert, dann könnte es daran liegen, dass die Benutzer/die Gruppe nicht in den Kontakten stehen bzw. nicht zugelassen sind Kommandos abzusenden




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

Dopamin

Danke für deine Antwort.

Also der Privacy Modus steht auf disabled. Wenn ich jetzt im Gruppenchat irgendwas schreibe dann sehe ich diese nachrichten auch garnicht im FHEM. wollte probieren über diesen curl aufruf die Gruppenchat ID herauszufinden aber wenn ich den Befehl "curl -x POST https://api.telegram.org/botxxx:xxx/getUpdates (xxx steht für den token) dann erhalte ich nur folgendes: {"ok":true,"result":[]}

Wenn ich den Bot direkt anschreibe also nicht in dem Gruppenchat dann funktioniert aber alles.

Einstellungen vom Bot sehen wie folgt aus:

/setjoingroups - Enable
/setprivacy - Disable

Keine Ahnung wo mein Denk- oder Configfehler sich befindet.

Gruß

Dopamin

viegener

Zitat von: Dopamin am 05 Dezember 2016, 13:30:34
Danke für deine Antwort.

Also der Privacy Modus steht auf disabled. Wenn ich jetzt im Gruppenchat irgendwas schreibe dann sehe ich diese nachrichten auch garnicht im FHEM. wollte probieren über diesen curl aufruf die Gruppenchat ID herauszufinden aber wenn ich den Befehl "curl -x POST https://api.telegram.org/botxxx:xxx/getUpdates (xxx steht für den token) dann erhalte ich nur folgendes: {"ok":true,"result":[]}

Wenn ich den Bot direkt anschreibe also nicht in dem Gruppenchat dann funktioniert aber alles.

Einstellungen vom Bot sehen wie folgt aus:

/setjoingroups - Enable
/setprivacy - Disable

Keine Ahnung wo mein Denk- oder Configfehler sich befindet.

Gruß

Dopamin

Wenn er die Nachrichten nichtmal empfängt, dann gibt es noch andere Möglichkeiten

Ist denn die Gruppe in den Kontakten enthalten?
Bist Du sicher, dass der Bot in der gruppe ist?
kannst Du vom bot aus an die Gruppe senden?

Ansonsten bräuchte ich mehr Infos, um das genauer zu analysieren: Kannst Du mal ein List Deines Bots anfertigen und hier in COde-tags posten (bitte auth-token und andere private Informationen / z.B. Kontakte maskieren)

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

Dopamin

Hallo

Also habe nochmals alles geprüft und alle Infos hier hinzugefügt. Ich bin mir nur gerade nicht sicher ob im Telegram zwischen Gruppe und Kanal ein Unterschied besteht. Habe dort ein Kanal eingerichtet. Habe nochmals einen neuen aufgebaut und den Bot hinzugefügt (siehe Screenshot) aber weiterhin kein Erfolg mit dem Bot.
Der Bot und auch der Kanal ist in meiner Kontaktliste vorhanden.
Anbei auch ein list von meinem Bot

Internals:
   DEF        xxx
   FAILS      0
   NAME       fhembot
   NR         151
   OLD_POLLING 78
   POLLING    78
   SNAME      fhembot
   STATE      Polling
   TYPE       TelegramBot
   Token      xxx
   UPDATER    0
   URL        https://api.telegram.org/botxxx/
   WAIT       0
   me         xxx:xxx_Bot:@xxx_Bot
   offset_id  206117010
   sentLastResult SUCCESS
   sentMsgId  XXX
   sentMsgPeer xxx
   sentMsgPeerId xxx
   sentMsgResult SUCCESS
   sentMsgText FHEM wurde neugestartet!
   Contacts:
     xxx  xxx:xxx:
     xxx  xxx:xxx:
   Hu_do_params:
     NAME
     addr       https://api.telegram.org:443
     boundary   TelegramBot_boundary-x0123
     buf        HTTP/1.1 200 OK

Server: nginx/1.10.0

Date: Mon, 05 Dec 2016 13:37:51 GMT

Content-Type: application/json

Content-Length: 253

Connection: close

Access-Control-Allow-Origin: *

Access-Control-Allow-Methods: GET, POST, OPTIONS

Access-Control-Expose-Headers: Content-Length,Content-Type,Date,Server,Connection

Strict-Transport-Security: max-age=31536000; includeSubdomains



{"ok":true,"result":{"message_id":689,"from":{"id":xxx,"first_name":"xxx_Bot","username":"xxx_Bot"},"chat":{"id":xxx,"first_name":"xxx","last_name":"xxx","type":"private"},"date":1480945071,"text":"FHEM wurde neugestartet!"}}
     code       200
     conn
     data
     displayurl <hidden>
     header     agent: TelegramBot/1.0

User-Agent: TelegramBot/1.0

Accept: application/json

Accept-Charset: utf-8

Content-Type: multipart/form-data; boundary=TelegramBot_boundary-x0123
     hideurl    1
     host       api.telegram.org
     httpheader HTTP/1.1 200 OK

Server: nginx/1.10.0

Date: Mon, 05 Dec 2016 13:37:51 GMT

Content-Type: application/json

Content-Length: 253

Connection: close

Access-Control-Allow-Origin: *

Access-Control-Allow-Methods: GET, POST, OPTIONS

Access-Control-Expose-Headers: Content-Length,Content-Type,Date,Server,Connection

Strict-Transport-Security: max-age=31536000; includeSubdomains
     hu_blocking 0
     hu_filecount 1
     loglevel   4
     method     POST
     path       /botxxx:xxx/sendMessage
     protocol   https
     redirects  0
     timeout    30
     url        https://api.telegram.org/botxxx:xxx/sendMessage
     args:
       xxx
       FHEM wurde neugestartet!

       0

       1
     Hash:
     Sslargs:
   Hu_upd_params:
     FD         28
     NAME
     addr       https://api.telegram.org:443
     buf
     code       200
     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
     httpheader HTTP/1.1 200 OK

Server: nginx/1.10.1

Date: Mon, 05 Dec 2016 14:43:44 GMT

Content-Type: application/json

Content-Length: 23

Connection: close

Access-Control-Allow-Origin: *

Access-Control-Allow-Methods: GET, POST, OPTIONS

Access-Control-Expose-Headers: Content-Length,Content-Type,Date,Server,Connection

Strict-Transport-Security: max-age=31536000; includeSubdomains
     hu_blocking 0
     hu_filecount 77
     isPolling  update
     loglevel   4
     method     GET
     offset     206117010
     path       /botxxx:xxx/getUpdates?offset=206117010&limit=5&timeout=60
     protocol   https
     redirects  0
     timeout    125
     url        https://api.telegram.org/botxxx:xxx/getUpdates?offset=206117010&limit=5&timeout=60
     Hash:
     Sslargs:
   Readings:
     2016-12-05 14:20:53   Contacts        xxx:xxx: xxx:xxx:
     2016-12-05 14:12:41   PollingErrCount 22
     2016-12-05 14:12:41   PollingLastError Callback returned error:Unauthorized:
     2016-12-02 11:15:36   StoredCommands  xxx xxx xxx.measured-temp
     2016-12-05 14:21:15   msgChat
     2016-12-05 14:21:15   msgFileId
     2016-12-05 14:21:15   msgId           685
     2016-12-05 14:21:15   msgPeer         xxx
     2016-12-05 14:21:15   msgPeerId       xxx
     2016-12-05 14:21:15   msgText         xxx
     2016-12-05 14:21:15   prevMsgChat
     2016-12-05 14:21:15   prevMsgFileId
     2016-12-05 14:21:15   prevMsgId       682
     2016-12-05 14:21:15   prevMsgPeer     xxx
     2016-12-05 14:21:15   prevMsgPeerId   xxx
     2016-12-05 14:21:15   prevMsgText     xxx
     2016-12-05 14:35:59   sentMsgId       689
     2016-12-05 14:35:59   sentMsgResult   SUCCESS
   sentQueue:
Attributes:
   allowUnknownContacts 0
   cmdKeyword xxx
   cmdRestrictedPeer xxx
   defaultPeer xxx
   pollingTimeout 60
   room       xxx


Hoffe das ich soweit alles maskiert habe was wichtig ist :-)

Anbei noch der Screenshot von der Gruppe/Kanal

Vielen Dank schonmal für deine Hilfe.

Gruß

Dopamin

viegener

Zitat von: Dopamin am 05 Dezember 2016, 15:55:30
Hallo

Also habe nochmals alles geprüft und alle Infos hier hinzugefügt. Ich bin mir nur gerade nicht sicher ob im Telegram zwischen Gruppe und Kanal ein Unterschied besteht. Habe dort ein Kanal eingerichtet. Habe nochmals einen neuen aufgebaut und den Bot hinzugefügt (siehe Screenshot) aber weiterhin kein Erfolg mit dem Bot.
Der Bot und auch der Kanal ist in meiner Kontaktliste vorhanden.
Anbei auch ein list von meinem Bot

Internals:
   DEF        xxx
   FAILS      0
   NAME       fhembot
   NR         151
   OLD_POLLING 78
   POLLING    78
   SNAME      fhembot
   STATE      Polling
   TYPE       TelegramBot
   Token      xxx
   UPDATER    0
   URL        https://api.telegram.org/botxxx/
   WAIT       0
   me         xxx:xxx_Bot:@xxx_Bot
   offset_id  206117010
   sentLastResult SUCCESS
   sentMsgId  XXX
   sentMsgPeer xxx
   sentMsgPeerId xxx
   sentMsgResult SUCCESS
   sentMsgText FHEM wurde neugestartet!
   Contacts:
     xxx  xxx:xxx:
     xxx  xxx:xxx:
   Hu_do_params:
     NAME
     addr       https://api.telegram.org:443
     boundary   TelegramBot_boundary-x0123
     buf        HTTP/1.1 200 OK

Server: nginx/1.10.0

Date: Mon, 05 Dec 2016 13:37:51 GMT

Content-Type: application/json

Content-Length: 253

Connection: close

Access-Control-Allow-Origin: *

Access-Control-Allow-Methods: GET, POST, OPTIONS

Access-Control-Expose-Headers: Content-Length,Content-Type,Date,Server,Connection

Strict-Transport-Security: max-age=31536000; includeSubdomains



{"ok":true,"result":{"message_id":689,"from":{"id":xxx,"first_name":"xxx_Bot","username":"xxx_Bot"},"chat":{"id":xxx,"first_name":"xxx","last_name":"xxx","type":"private"},"date":1480945071,"text":"FHEM wurde neugestartet!"}}
     code       200
     conn
     data
     displayurl <hidden>
     header     agent: TelegramBot/1.0

User-Agent: TelegramBot/1.0

Accept: application/json

Accept-Charset: utf-8

Content-Type: multipart/form-data; boundary=TelegramBot_boundary-x0123
     hideurl    1
     host       api.telegram.org
     httpheader HTTP/1.1 200 OK

Server: nginx/1.10.0

Date: Mon, 05 Dec 2016 13:37:51 GMT

Content-Type: application/json

Content-Length: 253

Connection: close

Access-Control-Allow-Origin: *

Access-Control-Allow-Methods: GET, POST, OPTIONS

Access-Control-Expose-Headers: Content-Length,Content-Type,Date,Server,Connection

Strict-Transport-Security: max-age=31536000; includeSubdomains
     hu_blocking 0
     hu_filecount 1
     loglevel   4
     method     POST
     path       /botxxx:xxx/sendMessage
     protocol   https
     redirects  0
     timeout    30
     url        https://api.telegram.org/botxxx:xxx/sendMessage
     args:
       xxx
       FHEM wurde neugestartet!

       0

       1
     Hash:
     Sslargs:
   Hu_upd_params:
     FD         28
     NAME
     addr       https://api.telegram.org:443
     buf
     code       200
     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
     httpheader HTTP/1.1 200 OK

Server: nginx/1.10.1

Date: Mon, 05 Dec 2016 14:43:44 GMT

Content-Type: application/json

Content-Length: 23

Connection: close

Access-Control-Allow-Origin: *

Access-Control-Allow-Methods: GET, POST, OPTIONS

Access-Control-Expose-Headers: Content-Length,Content-Type,Date,Server,Connection

Strict-Transport-Security: max-age=31536000; includeSubdomains
     hu_blocking 0
     hu_filecount 77
     isPolling  update
     loglevel   4
     method     GET
     offset     206117010
     path       /botxxx:xxx/getUpdates?offset=206117010&limit=5&timeout=60
     protocol   https
     redirects  0
     timeout    125
     url        https://api.telegram.org/botxxx:xxx/getUpdates?offset=206117010&limit=5&timeout=60
     Hash:
     Sslargs:
   Readings:
     2016-12-05 14:20:53   Contacts        xxx:xxx: xxx:xxx:
     2016-12-05 14:12:41   PollingErrCount 22
     2016-12-05 14:12:41   PollingLastError Callback returned error:Unauthorized:
     2016-12-02 11:15:36   StoredCommands  xxx xxx xxx.measured-temp
     2016-12-05 14:21:15   msgChat
     2016-12-05 14:21:15   msgFileId
     2016-12-05 14:21:15   msgId           685
     2016-12-05 14:21:15   msgPeer         xxx
     2016-12-05 14:21:15   msgPeerId       xxx
     2016-12-05 14:21:15   msgText         xxx
     2016-12-05 14:21:15   prevMsgChat
     2016-12-05 14:21:15   prevMsgFileId
     2016-12-05 14:21:15   prevMsgId       682
     2016-12-05 14:21:15   prevMsgPeer     xxx
     2016-12-05 14:21:15   prevMsgPeerId   xxx
     2016-12-05 14:21:15   prevMsgText     xxx
     2016-12-05 14:35:59   sentMsgId       689
     2016-12-05 14:35:59   sentMsgResult   SUCCESS
   sentQueue:
Attributes:
   allowUnknownContacts 0
   cmdKeyword xxx
   cmdRestrictedPeer xxx
   defaultPeer xxx
   pollingTimeout 60
   room       xxx


Hoffe das ich soweit alles maskiert habe was wichtig ist :-)

Anbei noch der Screenshot von der Gruppe/Kanal

Vielen Dank schonmal für deine Hilfe.

Gruß

Dopamin

Das ist die relevante Information - Gruppen sollten funktionieren, Supergruppen (mit Einschränkungen auch) - Channels sind bisher nicht getestet, weil ich nicht davon ausgung, dass jemand seine Hausautomatisierung öffentlich machen will. Aber ich lerne dazu  ;)

https://telegram.org/faq#q-what-39s-the-difference-between-groups-supergroups-and-channel

Also als einfache Lösung - mache aus Deinem Channel eine Gruppe - Auf einen ersten Blick sind für chanels wieder neue Felder im API hinzugekommen, obwohl für den Benutzer keine Änderungen bestehen. Ich kann mir das auf die Todo nehmen, aber wie gesagt. Ich gehe eher davon aus, dass Gruppen für die Anwendung im TelegramBot ausreichen
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Mohrengemuse

Hi,

gibt es schon neues zu den Custom Keyboards? Würde die gerne in meine Chats einbauen.

Gruß Mohrengemuse