Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

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

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Telegram - Inline Keyboard - gelöst

Scheduled Pinned Locked Moved Skripten / Logik
3 Posts 2 Posters 1.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ruhigundrelaxedR Offline
    ruhigundrelaxedR Offline
    ruhigundrelaxed
    wrote on last edited by
    #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 Reply Last reply
    0
    • ruhigundrelaxedR Offline
      ruhigundrelaxedR Offline
      ruhigundrelaxed
      wrote on last edited by
      #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 Reply Last reply
      0
      • Netfreak25N Offline
        Netfreak25N Offline
        Netfreak25
        wrote on last edited by
        #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 Reply Last reply
        0
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        Support us

        ioBroker
        Community Adapters
        Donate

        717

        Online

        32.7k

        Users

        82.4k

        Topics

        1.3m

        Posts
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Home
        • Recent
        • Tags
        • Unread 0
        • Categories
        • Unreplied
        • Popular
        • GitHub
        • Docu
        • Hilfe