Ankündigung

Einklappen
Keine Ankündigung bisher.

Telegram, Alternative zu WhatsApp

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Hallo,

    kann mir jemand sagen, wie ich die Chat_ID ermittle?
    Ich habe den Bot über Botfather erzeugt und den Token in die plugin.yaml eingetragen.. Dann sende ich /start an ihn. Aber er schweigt mich nur an.
    Wenn ich nun den Bot einer Gruppe hinzufüge und /start an die Gruppe sende, bekomme ich eine negative Chat-ID - das ist wohl normal für Gruppenchats.

    Code:
    telegram:
        name: meinHomeBot
        class_name: Telegram
        class_path: plugins.telegram
        token: '207l2342347:asdlfjue-ljlkjl_lkjwerwer'
    Code:
    MyTelegramTest:
        Chat_Ids:
            type: dict
            telegram_chat_ids: True
            cache: 'True'
            # e.g. value: "{ 3234123342: 1, 9234123341: 0 }"
            # a dict with chat id and 1 for read and write access or 0 for readonly access
            # the above grants r/w access to 3234123342 and readonly to 9234123341
            value: "{  -718123456: 1 }"
    Aber bei
    Code:
    msg = "Hello world!"
    
    sh.telegram.msg_broadcast(msg)
    Kommt nix an in Telegram...

    Was mache ich falsch?

    Gruß,
    Hendrik

    Kommentar


      Moin
      henfri ,

      schreib in den neu erstellen Bot eine kurze Message z.B. Hallo

      dann im Browser: https://api.telegram.org/bot[TOKEN]/getUpdates

      In der Ausgabe findest Du dann die ChatID

      Code:
      "message":{"message_id":12,"from":{"id":12345678," is_bot":false,"first_name......
      Meine Installation: VM Debian Buster SH NG 1.8.1, SmartVISU 3.0, KNX, DMX, 1-wire, Fortigate 30E IPS, VMware vSphere 6.7

      Kommentar


        Hallo,

        leider fuktioniert das nicht.
        Ich bekomme dann nur ein:
        Code:
        {"ok":true,"result":[]}
        Ich hab da jetzt auch schon ewig Stackoverflow gelesen. Leider ohne Erfolg.
        Was ich probiert habe:
        -Bot in eine Gruppe und etwas in die Gruppe geschrieben
        -Bot einzeln angeschrieben
        -getupdates via curl
        -getupdates via browser
        -getupdates mit ?timeout=300
        -einen neuen Bot erstellt



        Ich bin ratlos.

        Gruß,
        Hendrik

        Kommentar


          Du musst in den Bot was schreiben sonst kommt nur
          {"ok":true,"result":[]}

          Meine Installation: VM Debian Buster SH NG 1.8.1, SmartVISU 3.0, KNX, DMX, 1-wire, Fortigate 30E IPS, VMware vSphere 6.7

          Kommentar


            Ich hab bei mir im Item den Cache weggelassen, weil er sonst meine geänderten Eintrag nach dem Neustart aus dem Cache geladen hat.
            Hab den Bot direkt kontaktiert ohne Gruppe. Dann hat mir der Bot geantwortet, dass ich nicht berechtigt bin und dort stand dann auch meine ChatId.
            Zuletzt geändert von stoepf; 01.11.2021, 21:19.

            Kommentar


              Hallo,

              das hab ich doch:
              -Bot in eine Gruppe und etwas in die Gruppe geschrieben
              -Bot einzeln angeschrieben
              Vielleicht sieht man meinen Fehler hier:
              https://drive.google.com/file/d/1cxa...ew?usp=sharing
              (benötigt etwas zum Laden)


              Gruß,
              Hendrik

              Kommentar


                Ich habe gerade nochmal einen neuen Testbot erstellt. Das funktioniert einwandfrei
                frage ich jetzt den Bot ab kommt
                Code:
                {"ok":true,"result":[]}
                Screenshot 2021-11-01 211120.png
                dann kommt
                Code:
                {"ok":true,"result":[{"update_id":454971001, "message":{"message_id":1,"from":{"id":179xxxxxx,"i s_bot":false,"first_name":
                Den Screenshot einfügen hat länger gedauert als das erstellen. Man kann da eigentlich nichts falsch machen.
                Meine Installation: VM Debian Buster SH NG 1.8.1, SmartVISU 3.0, KNX, DMX, 1-wire, Fortigate 30E IPS, VMware vSphere 6.7

                Kommentar


                  Hallo,

                  bei mir hat es jetzt auch einmal geklappt. Hab natürlich nix anders gemacht...
                  https://api.telegram.org/bot20322749...EaY/getUpdates
                  Code:
                  {"ok":true,"result":[{"update_id":260390476,
                  "message":{"message_id":1,"from":{"id":1327917037, "is_bot":false,"first_name":"Hendrik","language_co de":"en"},"chat":{"id":1327917037,"first_name":"He ndrik","type":"private"},"date":1635798860,"text": "/start","entities":[{"offset":0,"length":6,"type":"bot_command"}]}},{"update_id":260390477,
                  "message":{"message_id":2,"from":{"id":1327917037, "is_bot":false,"first_name":"Hendrik","languag e_c
                  Code:
                  telegram:
                      name: my_Smarthome_bot
                      class_name: Telegram
                      class_path: plugins.telegram
                      token: '2032274972:AAHE04Z5j3FZSxs0UaVZQgETO3wqU14OEaY'
                  Code:
                  MyTelegramTest:
                      Chat_Ids:
                          type: dict
                          telegram_chat_ids: True
                          cache: 'True'
                          # e.g. value: "{ 3234123342: 1, 9234123341: 0 }"
                          # a dict with chat id and 1 for read and write access or 0 for readonly access
                          # the above grants r/w access to 3234123342 and readonly to 9234123341
                          value: "{  1327917037: 1  }"
                  Damit sollte doch jetzt dies funktionieren:
                  Code:
                  msg = "Hello world!" sh.telegram.msg_broadcast(msg)
                  Aber ich bekomme kein Hello world auf mein Handy.

                  Gruß,
                  Hendrik

                  Kommentar


                    Bei mir sieht das Item so aus:
                    Code:
                    service:
                        telegram:
                            Chat_Ids:
                                type: dict
                                telegram_chat_ids: 'True'
                                enforce_updates: 'true'
                                cache: 'True'
                                value: "{1234567: 1 }"
                            senden:
                                type: str
                                enforce_updates: 'true'
                                telegram_message: '[VALUE]'
                    Code:
                                 batterie:
                                     type: num
                                     visu_acl: ro
                                     hm_address: 000393C99BFD72
                                     hm_channel: 0
                                     hm_function: LOW_BAT
                                     on_change: service.telegram.senden = 'Stellventil Batterie EG Diele wechseln' if value else 'Stellventil Batterie EG Diele OK
                    bei Gruppenchat
                    Code:
                                eval: sh.telegram.msg_broadcast("Test",-100112345678)
                    Meine Installation: VM Debian Buster SH NG 1.8.1, SmartVISU 3.0, KNX, DMX, 1-wire, Fortigate 30E IPS, VMware vSphere 6.7

                    Kommentar


                      Hier noch ein Beispiel für senden an eine Gruppe
                      Code:
                          klingel:
                              type: bool
                              visu_acl: rw
                              knx_dpt: 1
                              knx_listen: 11/1/11
                              enforce_updates: 'true'
                              telegram_message: Es klingelt an der Tür
                              telegram_value_match_regex: (true|True|1)  # nur Nachricht senden wenn 1
                              info:
                                  type: bool
                                  enforce_updates: 'true'
                                  eval_trigger: haustuer.klingel
                                  eval: sh.telegram.photo_broadcast("http://10.1.1.1/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=USER&password=GEHEIM","Türkamera",-1001111111) if sh.haustuer.klingel() == 1 else None
                      Meine Installation: VM Debian Buster SH NG 1.8.1, SmartVISU 3.0, KNX, DMX, 1-wire, Fortigate 30E IPS, VMware vSphere 6.7

                      Kommentar


                        Hallo,

                        danke, das hat geholfen.
                        Ich habe mein Beispiel aus https://smarthomeng.de/user/plugins/...m/README.html:
                        # send a Hello world! message to all your trusted chat ids
                        msg = "Hello world!"
                        sh.telegram.msg_broadcast(msg)
                        Das funktioniert bei mir nicht.

                        Du hast einen zweiten Parameter:
                        Code:
                        sh.telegram.msg_broadcast("Test",-100112345678)
                        und gibst die chat_id direkt an.

                        So funktioniert es bei mir!

                        Jetzt stelle ich mir zwei Fragen:
                        1) Warum bekomme ich z.B. jetzt aktuell wieder
                        {"ok":true,"result":[]}
                        und keine chat_id?
                        Ich weiß halt nicht, wie ich die chat_id reproduzierbar ermitteln kann. Mal geht es für einen Moment, meistens nicht. Und meinen Bot muss ich ja wieder löschen, denn ich habe hier ja den Key gepostet.
                        2) Warum funktioniert es nicht ohne den zweiten Parameter bei mir?

                        Gruß,
                        Hendrik

                        Kommentar


                          Du hast einen zweiten Parameter: Code:

                          sh.telegram.msg_broadcast("Test",-100112345678)
                          und gibst die chat_id direkt an.
                          Das ist die GruppenchatID .
                          Ist schon zu lange her aber hatte damit glaube auch Probleme.

                          und keine chat_id?
                          Vielleicht stimmt der Token nicht. Ruf doch den Bot mal direkt aus dem Botfather aus und nimm den Token direkt aus dem Botfather. Sonst habe ich auch leider keine Idee
                          Meine Installation: VM Debian Buster SH NG 1.8.1, SmartVISU 3.0, KNX, DMX, 1-wire, Fortigate 30E IPS, VMware vSphere 6.7

                          Kommentar


                            Hallo,

                            du hast mich falsch verstanden:
                            Mein Punkt ist: Es funktioniert ja prinzipiell. Aber halt nur wenn ich die chat_id angebe. Nicht aber wenn ich die chat_id nicht angebe.

                            Wenn der Token nicht stimmen würde, dann würde es ja auch unter Angabe der chat_id nicht funktionieren, oder?

                            Gruß,
                            Hendrik

                            Kommentar


                              Zitat von henfri Beitrag anzeigen
                              Wenn der Token nicht stimmen würde, dann würde es ja auch unter Angabe der chat_id nicht funktionieren, oder?
                              ja das stimmt.

                              Ich weiß halt nicht, wie ich die chat_id reproduzierbar ermitteln kann.
                              Ich meinte jetzt den Token beim ermitteln der ChatID. Hab da nicht zitiert, sorry.
                              Ich kann die ChatID über den von mir beschrieben Weg jederzeit wieder abrufen.

                              Gruß
                              Michael
                              Meine Installation: VM Debian Buster SH NG 1.8.1, SmartVISU 3.0, KNX, DMX, 1-wire, Fortigate 30E IPS, VMware vSphere 6.7

                              Kommentar


                                Hallo,

                                ich bin einen Schritt weiter. Der Grund, weshalb es nicht funktioniert hat, wenn ich die Chat_id nicht explizit angegeben habe (dann wird sie ja aus dem Item genommen):
                                Wenn man mit notepad++ eine YAML Datei speichert, ist die Default-Endung .yml. SmarthomeNG sucht aber nur nach .yaml.


                                Zitat von yachti Beitrag anzeigen
                                Ich kann die ChatID über den von mir beschrieben Weg jederzeit wieder abrufen.
                                Ja, das ist komisch.

                                Ruf doch den Bot mal direkt aus dem Botfather aus und nimm den Token direkt aus dem Botfather.
                                Wie genau meinst du das?

                                Gruß,
                                Hendrik

                                Kommentar

                                Lädt...
                                X