Telegram queryInline in Gruppen

Begonnen von accessburn, 23 August 2019, 10:18:07

Vorheriges Thema - Nächstes Thema

accessburn

Hallo,

ich hab zwecks des WAFs von einem Bot und dem defaultpeer auf eine Gruppe zusammen mit dem Bot umgestellt.
Jetzt habe ich das Problem das die Buttons die ich auf anfrage per queryInline rausschicke keinerlei Funktion mehr haben weil folgender Befehl scheinbar nicht funktioniert:

/[HomeStatus]=set Telegram queryInline @-08154711 (Scharf|Zuhause)

Das Problem scheint die User_id der Gruppe darin zu sein. Jemand eine Idee?


Grüße aus Ffm,
Tobias
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

yersinia

Mal die commandref bemüht?
Zitatchat names (also known as groups in telegram groups must be prefixed with #)
Zitatset aTelegramBotDevice message @#justchatting Hello
    to send the message "Hello" to a chat with the name "justchatting"
Vielleicht hilft das schon.
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

accessburn

Ich habs in allen möglichen Varianten versucht. Entweder bekomme ich fehlermeldungen in allen formen und farben, oder die Ausgabe der Buttons, aber ohne reaktion.

ZitatTelegramBot FHEM -  Befehl:set Telegram queryInline @#-08154711 (Wohnzimmer an|Wohnzimmer aus) (Schlafzimmer an|Schlafzimmer aus) (Vitrine an|Vitrine aus) Licht: - Ergebnis:
FAILED peer not found :#-08154711:
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

yersinia

Mal
set Telegram queryInline #-08154711 (Wohnzimmer an|Wohnzimmer aus) (Schlafzimmer an|Schlafzimmer aus) (Vitrine an|Vitrine aus) Licht
versucht?

Die API gibt auch nichts anderes an:
ZitatsendMessage

Use this method to send text messages. On success, the sent Message is returned.
Parameter    Type    Required    Description
chat_id    Integer or String    Yes    Unique identifier for the target chat or username of the target channel (in the format @channelusername)

Hat der Bot ggf keine Berechtigungen in der Gruppe was zu posten? siehe auch
ZitatOr even restrict members from sending messages altogether – let the admins chat amongst themselves while everybody else witnesses their wisdom in silent awe.

Die Frage ist aber, wozu man überhaupt eine Gruppe benötigt, wenn m user mit dem Bot kommunizieren können. Man kann ja solche nachrichten auch an mehrere User schicken.
set Telegram queryInline @08154711 @47110815 (Wohnzimmer an|Wohnzimmer aus) (Schlafzimmer an|Schlafzimmer aus) (Vitrine an|Vitrine aus) Licht
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

accessburn

Ich versuche mal deinen Vorschlag, bin mir aber ziemlich sicher das auch schon versucht zu haben.

Ich hatte mich für diese Methode entschieden weil ich es ums verrecken ebenfalls nicht geschafft habe das mehrere Personen den Bot ansprechen durften. Immer nur die Userid die in defaultpeer angegeben war. Wenn nichts angegeben war, reagierte er auch überhaupt nicht.

Wenn man das so lösen kann, dann würde ich das auch wieder auf die ursprüngliche Variante machen, was eh besser ist, da nicht jeder das liest was ein anderer gerade anfordert oder ausführt.
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

yersinia

#5
Also ich nutze den TelegramBot von zwei User-Accounts und das funktioniert ganz gut - auf gewisse Keywörter antwortet der Bot mit vordefinierten Anwtorten. Und zwar an den User, der die Anfrage gestellt hat (via Reading msgPeerId).
Ich arbeite allerdings nicht mit Buttons so wie du - und habe auch keine Gruppenchats.

Ich müsste nachschauen wenn ich wieder an FHEM rankomme, was ich bei defaultpeer eingetragen habe, aber ich meine das Attribut ist leer. Muss ich aber prüfen.
Ich nutze allerdings eher das Attribut cmdRestrictedPeer <peer(s)>
ZitatcmdRestrictedPeer <peer(s)>
Restrict the execution of commands only to messages sent from the given peername or multiple peernames (specified in the form of contact id, username or full name, multiple peers to be separated by a space). This applies to the internal machanisms for commands in the TelegramBot-Module (favorites, cmdKeyword etc) not for external methods to react on changes of readings. A message with the cmd and sender is sent to the default peer in case of another peer trying to sent messages
NOTE: It is recommended to use only peer ids for this restriction to reduce spoofing risk!

Edit: zum Testen zuhause kann man auch die Telegram Desktop App nutzen.

Edit2: Ich sehe gerade, dass es vlt gar nicht geht mit Gruppen (commandref):
ZitatqueryInline [ @<peer1> ... @<peerN> ] (<keyrow1>) ... (<keyrowN>) <text>
Sends the given message to the recipient(s) with an inline keyboard allowing direct response
IMPORTANT: The response coming from the keyboard will be provided in readings and a corresponding answer command with the query id is required, sicne the client is frozen otherwise waiting for the response from the bot!
REMARK: inline queries are only accepted from contacts/peers that are authorized (i.e. as for executing commands, see cmdKeyword and cmdRestrictedPeer !)
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

accessburn

Okay, "geht nicht" ist schon mal eine Ansage.

Vielleicht kannst du mir ja irgendwann mal anhand deinen Settings zeigen wie du das mit zwei defaults gelöst hast.
Ich nutze jedoch die Version ohne Subs, nur favorites und ein notify.
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

yersinia

Meines Verständnisses nach, sind ja Bots öffentlich (jdfs hab ich das mal so verstanden; ob das immer noch so ist, weiss ich nicht), demnach hab ich die Attribute auch so gepflegt:
Attributes:
   allowUnknownContacts 0
   cmdKeyword DoIt
   cmdRestrictedPeer 471108150 133747110

Mehr habe ich gar nicht gemacht. Meldet sich ein peer der nicht in der cmdRestrictedPeer enthalten ist, verwirft der Bot die Anfrage ohne Rückmeldung.

Der Rest läuft wie hier beschrieben - das notify reagiert auf eine Änderung des msgText-Readings und ruft die sub auf und übergibt (beim Aufruf) dieser das TelegramBot-Device und die Readings msgText sowie msgPeerId. msgText enthält das Codewort (wie zB Wetter, Licht, whatever; vorallem <> cmdKeyword) und msgPeerId die id des anfragenden Kontakts. (Eigentlich müsste man die Werte nicht übergeben, da man diese bequem aus dem Device auslesen kann)
Die sub bastelt daraus einen FHEM-Befehl für den TelegramBot. Mittels if -elsif Prüfungen kann man sich die Rückgabewerte dann zusammenstellen.

Wenn ich das hier lese:
IMPORTANT: The response coming from the keyboard will be provided in readings and a corresponding answer command with the query id is required, sicne the client is frozen otherwise waiting for the response from the bot!
REMARK: inline queries are only accepted from contacts/peers that are authorized (i.e. as for executing commands, see cmdKeyword and cmdRestrictedPeer !)

dann wirst du wohl cmdRestrictedPeer mit der id von dir und deiner Frau erstellen müssen.

Ich könnte mir vorstellen, dass der User den Bot mit "Licht" anspricht und dann die sub den command
set Telegram queryInline @08154711 (Wohnzimmer an|Wohnzimmer aus) (Schlafzimmer an|Schlafzimmer aus) (Vitrine an|Vitrine aus) Licht
generiert und an FHEM übergibt (sprich: raus sendet). Im nächsten Schritt kommt die Antwort von dem User und wird in ein Reading geschrieben, mit dem du weiterarbeiten kannst (zB auch in der sub).

Alternativ könnte man auch ganze Sätze wie "Licht Wohnzimmer an" schicken lassen und dies dann in der sub verarbeiten. Halte ich aber für gewagt.

Wenn du dies
set Telegram queryInline @08154711 (Wohnzimmer an|Wohnzimmer aus) (Schlafzimmer an|Schlafzimmer aus) (Vitrine an|Vitrine aus) Licht
an dich selbst schickst und dann darauf antwortest, wie wird das im TelegramBot-Device abgelegt?
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Peteruser

Hallo,
sorry, aber meinb BOT spricht mit der Gruppe und nimmt auch deren Befehle an.

Schonmal an das gedacht:
attr Telegram allowUnknownContacts 0
attr Telegram allowUnknownContacts 1
> und dann die Frau was auf die Gruppe schicken lassen
Sonst ignoriert der nämlich die Befehle.

Er gibt info:
set Telegram message @#Gruppenname Nachrichtentext

Im rawdevice, sind da schon alle Kontakte sichtbar?

Grüße Peter
Ubuntu+Debian FHEM + ESPEasy + Homematic + ConBee + DUROFERN

accessburn

Moinsen, tatsächlich war es das allowUnknownContacts...
Da er das Weibchen nicht kennt wurde sie knallhart ignoriert... Glückspilz  8)

Das war auf alle fälle der fehlende Schritt. Danke und 'closed'
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole