Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Telegram - Alexa Routine Triggern via Button

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Telegram - Alexa Routine Triggern via Button

    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      LJSven last edited by LJSven

      Ich möchte mir gern ein Script bauen, was es ermöglicht via "inline_keyboard" verschiedene Routinen (in meinem Fall Playlisten) aufzurufen. Bei meinem jetzigen Script ist das Problem, daß auch alle anderen Button Aktion mit diesem Script verknüpft werden ich diverse Warnings im Log habe. Wie kann ich das Script umbauen, daß es nur auf diese Funktionen reagiert

      // DEVICE definieren (ID)
      var echodevice = "alexa2.0.Echo-Devices.51944f43bf8245b5702f";
      
      //Routine definieren - callback_date ist ID der Routine
      var Playlists = [
        [{text: "Wo ist Kartoffelbrei?", callback_data: "5d32-4f5d-935a-b0530a5ef300"}],
        [{text: "Conni kommt in den Kindergarten", callback_data: "f7a9-41d8-9481-f8a2dd6a89e9"}],
      //[{text: "Conni kommt in den Kindergarten", callback_data: "f7a9-41d8-9481-f8a2dd6a89e9"}],
        [{text: "Die allerschönensten Kinderlieder", callback_data: "d9a2-4627-9b25-94699617e187"}]
        ];
      //Test
      sendTo('telegram', {
        user: "Sven",
        text: "Was möchtest du im Wohnzimmer abspielen?",
        reply_markup: {
          inline_keyboard: Playlists,
          resize_keyboard:   false, 
          one_time_keyboard: true
        }
      });
      on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) {
          command = obj.state.val.substring(obj.state.val.indexOf(']')+1);
          var completeID = echodevice+".Routines."+command;
          setState(completeID, true);
      });
      
      1 Reply Last reply Reply Quote 0
      • T
        ticaki Developer last edited by

        Routinen kann man nur "aktivieren" aber nicht auslösen, soweit ich weiß. Mit Playlisten kenne ich mich leider nicht aus.

        L 1 Reply Last reply Reply Quote 0
        • L
          LJSven @ticaki last edited by

          @ticaki sagte in Telegram - Alexa Routine Triggern via Button:

          Routinen kann man nur "aktivieren" aber nicht auslösen, soweit ich weiß. Mit Playlisten kenne ich mich leider nicht aus.

          @ticaki Auslösen ist auch okay - technisch funktioniert es ja - ich brauche nur eine Abfrage, daß dieser Part

          on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) {
          

          nur ausgelöst wird, wenn auch dieses Menü aktiv oder offen ist.

          T 1 Reply Last reply Reply Quote 0
          • T
            ticaki Developer @LJSven last edited by

            @LJSven
            Das geht nicht, du mußt einfach alles rauswerfen was du nicht willst. Vereinfachtes Beispiel, nicht getestet und im Forum geschrieben

            callback:data: "§$playlist§$meine tolle playliste"
            
            on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) {
                command = obj.state.val.substring(obj.state.val.indexOf(']')+1);
                command = command.split('§$');
                if (!Array.isArray(command) || command.length < 2 || command[0] != 'playlist') return; // raus aus der funktion
                command = command[1]
                var completeID = echodevice+".Routines."+command;
                setState(completeID, true);
            });
            
            L 1 Reply Last reply Reply Quote 0
            • L
              LJSven @ticaki last edited by

              @ticaki sagte in Telegram - Alexa Routine Triggern via Button:

              @LJSven
              Das geht nicht, du mußt einfach alles rauswerfen was du nicht willst. Vereinfachtes Beispiel, nicht getestet und im Forum geschrieben

              callback:data: "§$playlist§$meine tolle playliste"
              
              on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) {
                  command = obj.state.val.substring(obj.state.val.indexOf(']')+1);
                  command = command.split('§$');
                  if (!Array.isArray(command) || command.length < 2 || command[0] != 'playlist') return; // raus aus der funktion
                  command = command[1]
                  var completeID = echodevice+".Routines."+command;
                  setState(completeID, true);
              });
              

              Fast - diese Zeil muss wie folgt sein

              if (!Array.isArray(command) || command.length < 2 || command[1] != 'playlist') {
                      
              
              T 1 Reply Last reply Reply Quote 0
              • T
                ticaki Developer @LJSven last edited by

                @LJSven
                dann muß

                command = command[1]
                // so sein
                command = command[2]
                

                war aber dicht dran 😁

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                774
                Online

                31.8k
                Users

                80.0k
                Topics

                1.3m
                Posts

                javascript
                2
                6
                356
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo