Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

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

Vorheriges Thema - Nächstes Thema

viegener

Zitat von: UweH am 12 Oktober 2015, 18:57:29
Ha, wollte Dir gerade antworten...an der Stelle hab ich auch zuerst das >0 überlesen...  ;D

Gruß
Uwe

OK, das werde ich noch deutlicher machen!
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Loredo


Da ja an anderer Stelle nach Verbesserungen zur Syntax gefragt wurde:

Könnte man die Befehle "message" und "messageTo" kombinieren? Ob ein Empfänger angegeben ist lässt sich ja ganz einfach per Reqex auf das @ Zeichen am Anfang feststellen. Würde der Definition in der msg-Schema-Datenbank sehr entgegen kommen ;-)


Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

viegener

Zitat von: Loredo am 13 Oktober 2015, 13:26:04
Könnte man die Befehle "message" und "messageTo" kombinieren? Ob ein Empfänger angegeben ist lässt sich ja ganz einfach per Reqex auf das @ Zeichen am Anfang feststellen. Würde der Definition in der msg-Schema-Datenbank sehr entgegen kommen ;-)


Gruß
Julian

Leider nicht, da das @-Zeichen nur bei usernames verwendet wird ansonsten sind beim messageTo auch Vor- und Nachnamen sowie userids erlaubt. Im prinzip sind die userids sogar am ehesten empfehlenswert, da nur so eine Eindeutigkeit gewährleistet ist.

Man könnte aber darüber nachdenken, ob ich aus "messageTo" ein "message" mache und das bisherige "message" in "messageDef" umbenenne. Da das eine inkompatible Änderung wäre würde ich das gerne hier zur Diskussion stellen. Damit wäre Dein Vorschlag auch erreicht, oder?

@all: Aufschrei oder "Wenns sein muss" bitte, sonst würde ich das in die nächste Version packen. Insbesondere damit es noch reinkommt, bevor ich es ins SVN packe und es damit allgemein verfügbar wird!

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

Loredo

Wieso stellst du nicht dem Empfänger generell ein @ voran und entfernst es je nach Notwendigkeit bei der Übergabe an die Telegram API?
Du könntest den Befehl "message" so belassen und eben erkennen, ob dort am Anfang ein Empfänger beginnend mit @ ist oder nicht (so funktioniert es beim msg-Befehl auch, falls du Inspiration brauchst). Das wäre rückwärtskompatibel und messageTo kannst du einfach auf die gleiche Funktion mappen, um auch dort kompatibel zu bleiben.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

viegener

Generell natürlich eine gute Idee, aber am @ erkenne ich bereits ob telegram usernamen (und nicht user ids / bzw. volle Namen) übergeben werden. Es gibt bei mir 3 Arten von Userangaben, die ich alle erkennen muss. Natürlich könnte ich jetzt ein neues Zeichen voranstellen, denn das @ verwendet Telegram bereits intern und es wäre so schon intuitiv.

Also gäbe es 3 Möglichkeiten
1) Mein Vorschlag von oben
2) Dein Vorschlag mit dem @ (wobei ich das für entstehende @@ für telegram usernames noch eine Lösung brauche)
3) Ein anderes Zeichen voranstellen für Kontakte


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

Loredo

Zu 2) Generell per Regex-Replace entfernen oder eben nur dann, wenn es nicht gebraucht wird (je nach Programmlogik eben).
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

viegener

Ja das ist mir schon klar   ;)   Sonst wären meine alten Professoren (soweit sie noch leben) auch sicher böse mit mir   ;D
Es ist mehr das Problem existierender usernames, die alle schon ein @ vorangestellt haben.

Ok ich folge Deinem Vorschlag.
Bisherige @usernames müssen dann demnächst mit @@username angegeben werden, damit sie unterscheidbar bleiben.
Bei messageTo/sendPhotoTo etcwird die alte Syntax bleiben (allerdings werde ich das deprecaten und demnächst entfernen.

Ist nicht optimal aber zumindest sicherer als zu hoffen, dass username und vollständiger Name nicht überlappen.

Es sein denn es gibt grossen Protest...

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

Loredo

Hm, ich nahm an die vollständigen Usernamen könnte man anhand der Doppelpunkte erkennen, aber ich kenne die API nicht.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

viegener

Zitat von: Loredo am 13 Oktober 2015, 15:25:15
Hm, ich nahm an die vollständigen Usernamen könnte man anhand der Doppelpunkte erkennen, aber ich kenne die API nicht.

Nein das ist nur in der internen Kontaktverwaltung so, wenn man senden will muss nur einer der 3 Teile angegeben werden und die Erkennung was kommt mache ich intern (wenn reine Zahl ist  es eine Id / mit @ vorangestellt ein username ansonsten eben ein Vor-und-Zuname). In der Kontaktverwaltung sind dann alle enthalten, damit ich jede möglich Angabe in eine Id / den richtigen Kontakt wandeln kann bevor ich sende.

letzte Woche haben sich die Telegram-Leute im BotAPI noch was neues ausgedacht, jetzt gibt es auch noch channels, die allerdings in den Clients noch nicht unterstützt sind, nur im API. Zitat: no Telegram clients support this at the moment, please wait for updates  ;D

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

Loredo

Ok, ich warte mal ab.
Hab eine einfache Schema Definition für TelegramBot mit in die msg Schema-Datenbank aufgenommen:




        'TelegramBot' => {
          'Normal'  => 'set %DEVICE% message %TGRECIPIENT% %TITLE%: %MSG%',
          'High'    => 'set %DEVICE% message %TGRECIPIENT% %TITLE%: %MSG%',
          'Low'     => 'set %DEVICE% message %TGRECIPIENT% %TITLE%: %MSG%',
          'defaultValues' => {
            'Normal' => {
              'TGRECIPIENT' => '',
            },
            'High' => {
              'TGRECIPIENT' => '',
            },
            'Low' => {
              'TGRECIPIENT' => '',
            },
          },
        },


Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

viegener

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

Loredo

Funktioniert im Grundsatz ja auch so, wenn man über defaultPeer einen Standardempfänger angibt. Nur muss man dann den Bot eben mehrfach definieren (was er vermutlich dann nicht mag).
So ganz glücklich bin ich damit aber auch noch nicht. Die meisten Module adressieren pro Device-Instanz genau einen Empfänger (oder optional ein bestimmtes Empfangsgerät wie im Falle von Pushover). Das Handling eines "Unterempfängers" funktioniert aktuell nur, wenn man dafür ein Dummy-Gateway-Device anlegt und dort über msgCmdPush den Empfängernamen fest im Schema hinterlegt, statt direkt über das TelegramBot Device zu versenden. Wenn du die Option mit @@ eingebaut hast, entfällt das zwar, wenn man per Optionserweiterung den Empfänger übergibt. Ist aber auch nicht so elegant. Vielleicht fällt mir da noch was ein, aber aktuell hab ich keine Idee...


ich dachte ich schreib das jetzt hier mal, weil wir ja beide noch nix fest veröffentlicht haben und das somit noch hier und da anpassbar wäre. Vielleicht hast du ja noch ne Idee für meine oder deine Seite ;)


Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Maista

Hallo zusammen,

ich hab auch nix dagegen  ::)
Wenns der Logik dient.

Habe bisher nur zwei IDs eingetragen.

Gruss Gerd

Buwe

Prinzipiell funktioniert der Bot bei mir. Allerdings bekomme ich mehr oder weniger regelmäßig Meldungen im Log-file:


2015.10.12 19:26:12 3: TelegramBot_Set msg.***********bot: called
2015.10.12 19:26:12 3: TelegramBot_Set msg.***********bot: Processing TelegramBot_Set( ? )


Seit gestern auch schon ein paar mal:

2015.10.13 18:28:14 3: TelegramBot_Callback msg.***********bot: resulted in :Callback returned no valid JSON !: from Polling


Diese Einträge kommen ohne das zu diesem Zeitpunkt eine Nachricht gesendet oder empfangen wird.

Ich hatte die Version vom Github genommen (0.8 2015-10-10 extended cmd handling )
Die httputils hatte ich nicht ersetzt da nur wegen Bilder benötigt(?)

viegener

Zitat von: Buwe am 14 Oktober 2015, 13:46:21
Prinzipiell funktioniert der Bot bei mir. Allerdings bekomme ich mehr oder weniger regelmäßig Meldungen im Log-file:


2015.10.12 19:26:12 3: TelegramBot_Set msg.***********bot: called
2015.10.12 19:26:12 3: TelegramBot_Set msg.***********bot: Processing TelegramBot_Set( ? )


Seit gestern auch schon ein paar mal:

2015.10.13 18:28:14 3: TelegramBot_Callback msg.***********bot: resulted in :Callback returned no valid JSON !: from Polling


Diese Einträge kommen ohne das zu diesem Zeitpunkt eine Nachricht gesendet oder empfangen wird.

Ich hatte die Version vom Github genommen (0.8 2015-10-10 extended cmd handling )
Die httputils hatte ich nicht ersetzt da nur wegen Bilder benötigt(?)

Hallo Buwe,
die ersten Einträge sind nur Infos und rühren daher, dass ich momentan noch relativ grosszügige Log-Meldungen ausgebe, die es mir vereinfachen sollen Fehler einzugrenzen. Hier kann ich vermutlich das Loglevel runterschrauben.

die anderen Einträge (Callback returned no valid JSON) sind zwar auch nicht kritisch, kommen aber daher wenn aus unbekannten Gründen die Kommunikation mit telegram.org abbricht. Das passiert offensichtlich nur relativ selten. Allerdings würde selbst wenn das nur in 0,1% der Fälle auftritt wäre das etwa 4 mal am Tag, da der Bot aber ca. alle 20s, also über 4000 mal am Tag bei telegram.org nachfragt.

Wenn die Meldungen stören, kann ich auch mal eine Option einführen, dass die versteckt werden. Allerdings sind dies durchaus "logwürdige" Meldungen...

Ja die Github-Version ist ok und Ja httputils wird nur benötigt, wenn man grössere Datenübertragungen aus dem Bot vornehmen will (insbesondere Bilder).

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