Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Telegram - Inline Keyboard - gelöst

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    1
    1.3k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Telegram - Inline Keyboard - gelöst

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
3 Beiträge 2 Kommentatoren 1.4k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • ruhigundrelaxedR Offline
    ruhigundrelaxedR Offline
    ruhigundrelaxed
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen.

    Leider stehe ich auf dem Schlauch, und brauche mal klugen Input. Es geht, wie im Betreff beschrieben um die Inline Keyboards.

    Der Rückgabewert der Inline Keyboards wird, so wie es in der readme des Adapters steht über "answerCallbackQuery" gehandhabt.

    Es wird auch ein Beispiel genannt:

    if (command ==="1_2") {
        sendTo('telegram', {
            user: user,
            answerCallbackQuery: {
                text: "Pressed!",
                showAlert: false // Optional parameter
            }
       });
    }      
    
    

    Was ja ansich auf Verständlich ist. Jedoch wird mir der Kontext bzw. der Scope nicht klar. Wo kommt z.B. die Variable "command" her.

    Mein Ziel ist es innerhalb eines Skripts auf Buttons zu reagieren. Die node-telegram-bot-api macht das mit einem event, welches das "api object" wirft.

    api.on('callback_query', function(msg) {
        var user = msg.from.id;
        var data = msg.data;
        api.sendMessage(msg.from.id, "You clicked button with data '"+ data +"'");
    });
    
    

    Nur das ist object ja im iobroker script kontext für mich nicht greifbar. (Oder doch?) Warscheinlich ist es ganz einfach, und ich sehe den Wald vor Bäumen nicht. Kann mich bitte einer in die richtige Richtung stupsen?

    Gruß

    Martin

    iobroker auf debian bullseye amd64 (i5-8259U)
    homematic -> homegear -> HM-CFG-LAN ~> 11 x hm-cc-rt-dn | 3 x hm-sec-sd
    knx -> eibd -> SCN‐IP000.01 ~> 4 x AMS-1216.01 | (1 x JAL-0810.01 | 1 x JAL-0410.01) | 2 x BE-16000.01 | …

    1 Antwort Letzte Antwort
    0
    • ruhigundrelaxedR Offline
      ruhigundrelaxedR Offline
      ruhigundrelaxed
      schrieb am zuletzt editiert von
      #2

      Lösung gefunden. Trotzdem danke.

      on({id: "telegram.0.communicate.request", change: 'any'}, function(obj){
      var stateval = getState('telegram.0.communicate.request').val;
      var benutzer = stateval.substring(1,stateval.indexOf("]"));     
      var command  = stateval.substring(stateval.indexOf("]")+1,stateval.length);   
          sendTo('telegram.0', {
              user: benutzer,
              answerCallbackQuery: {
                  text: command,
                  showAlert: false // Optional parameter
              }
         });
      });
      
      

      Gefunden hier:

      viewtopic.php?t=6515

      iobroker auf debian bullseye amd64 (i5-8259U)
      homematic -> homegear -> HM-CFG-LAN ~> 11 x hm-cc-rt-dn | 3 x hm-sec-sd
      knx -> eibd -> SCN‐IP000.01 ~> 4 x AMS-1216.01 | (1 x JAL-0810.01 | 1 x JAL-0410.01) | 2 x BE-16000.01 | …

      1 Antwort Letzte Antwort
      0
      • Netfreak25N Offline
        Netfreak25N Offline
        Netfreak25
        schrieb am zuletzt editiert von
        #3

        @ruhigundrelaxed:

        Lösung gefunden. Trotzdem danke.

        on({id: "telegram.0.communicate.request", change: 'any'}, function(obj){
        var stateval = getState('telegram.0.communicate.request').val;
        var benutzer = stateval.substring(1,stateval.indexOf("]"));     
        var command  = stateval.substring(stateval.indexOf("]")+1,stateval.length);   
            sendTo('telegram.0', {
                user: benutzer,
                answerCallbackQuery: {
                    text: command,
                    showAlert: false // Optional parameter
                }
           });
        });
        
        

        Gefunden hier:

        viewtopic.php?t=6515 `

        Top! Vielen Dank soweit!

        Das hat bei mir immer einen Fehler geschmissen wenn der Bot normale Nachrichten bekommen hat :/

        Meine Lösung hierfür ist dem callback_data ein "muster" voran zu hängen, welches sozusagen den Button definiert.

        Falls jenes "Muster" nun gefunden wird, wird das answerCallbackQuery gesendet.

        In meinem Fall habe ich als pattern/muster "key_" genutzt

        Der folgende Code bestätigt nun stupide jede Button dessen callback_data mit "key_" beginnt.

        Falls eine Nachricht nun mit dem Text "key_" beginnt, wird auch eine Antwort gesendet, und dann kommt der Fehler halt doch noch :geek:

        on({id: "telegram.0.communicate.request", change: 'any'}, function(obj){
        var stateval = getState('telegram.0.communicate.request').val;
        var benutzer = stateval.substring(1,stateval.indexOf("]"));     
        var command  = stateval.substring(stateval.indexOf("]")+1,stateval.length);
        
        var checkval = command.indexOf('key_') + 1;
        
        if (checkval == 1) {
            sendTo('telegram.0', {
                user: benutzer,
                answerCallbackQuery: {
                    showAlert: false // Optional parameter
                }
           });
        
        };
        
        });
        
        

        Geht vielleicht auch cleverer das ganze aber ich bin nun d'accord

        1 Antwort Letzte Antwort
        0
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        740

        Online

        32.5k

        Benutzer

        81.7k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Anmelden

        • Du hast noch kein Konto? Registrieren

        • Anmelden oder registrieren, um zu suchen
        • Erster Beitrag
          Letzter Beitrag
        0
        • Home
        • Aktuell
        • Tags
        • Ungelesen 0
        • Kategorien
        • Unreplied
        • Beliebt
        • GitHub
        • Docu
        • Hilfe