Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Donald

    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

    D
    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 2
    • Best 0
    • Groups 0

    Donald

    @Donald

    0
    Reputation
    6
    Profile views
    2
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Donald Follow

    Latest posts made by Donald

    • RE: [gelöst]Telegram Abfragen mit Buttons als Antwortmöglichkeit

      @drapo
      Ich nutze nicht das Telegram Menü, sondern etwas ähnliches wie im Video gezeigt.
      Dabei baue ich mir die Schaltflächen dynamisch in Blockly als Liste zusammen - der Text ist dann auch gleich das was im Bot abgefangen werden muss zur Steuerung. Dabei helfen mir Unicode-Zeichen um die verschiedenen Aufgaben zu triggern.

      In diesem Fall irgendein passendes Symbol für Garagentor.

      19f54321-1cac-440d-aba6-a50d3221ce21-image.png

      e4cd933b-736b-4539-96a2-04be0b6073a4-image.png

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable id="uY3*38OniOeq%)U6KGW#">TELEusers</variable>
          <variable id="R$?pZ24u9fcJBfy=Syd%">textstring</variable>
          <variable id="YX#@TW_+hCt}+vQh`fDz">KeyboardArray</variable>
          <variable id="zLn-Y^R#MqRA^zKdxxvT">menu_letzter_Absender</variable>
        </variables>
        <block type="procedures_defcustomnoreturn" id="ZW]/?a+X1UQl%k5(ST=x" x="113" y="188">
          <mutation statements="false">
            <arg name="TELEusers" varid="uY3*38OniOeq%)U6KGW#"></arg>
            <arg name="textstring" varid="R$?pZ24u9fcJBfy=Syd%"></arg>
            <arg name="KeyboardArray" varid="YX#@TW_+hCt}+vQh`fDz"></arg>
          </mutation>
          <field name="NAME">Telegram_send_KBbutton</field>
          <field name="SCRIPT">c2VuZFRvKCd0ZWxlZ3JhbS4wJywgew0KICAgIHVzZXI6IChURUxFdXNlcnMpLA0KICAgIHRleHQ6ICAodGV4dHN0cmluZyksDQogICAgcGFyc2VfbW9kZTogJ01hcmtkb3duJywNCiAgICByZXBseV9tYXJrdXA6IHsNCiAgICAgICAga2V5Ym9hcmQ6IChLZXlib2FyZEFycmF5KSwNCiAgICAgICAgcmVzaXplX2tleWJvYXJkOiAgIHRydWUsDQogICAgICAgIG9uZV90aW1lX2tleWJvYXJkOiB0cnVlDQogICAgfQ0KfSk7</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
        </block>
        <block type="variables_get" id="M)7k389WqVqw2p[/!pOa" x="363" y="238">
          <field name="VAR" id="zLn-Y^R#MqRA^zKdxxvT">menu_letzter_Absender</field>
        </block>
        <block type="procedures_callcustomnoreturn" id="pMVpl:N!UiL0R2LuOXci" inline="false" x="113" y="263">
          <mutation name="Telegram_send_KBbutton">
            <arg name="TELEusers"></arg>
            <arg name="textstring"></arg>
            <arg name="KeyboardArray"></arg>
          </mutation>
          <value name="ARG0">
            <block type="text" id="J:$i5(/z=v*Bpv2r{Oim">
              <field name="TEXT">nutzername</field>
            </block>
          </value>
          <value name="ARG1">
            <block type="text_join" id="}OhGPFW1la?[E:0~;hSJ" inline="true">
              <mutation items="4"></mutation>
              <value name="ADD0">
                <block type="text" id="%r`Z8^?A^0B-qmv`{m10">
                  <field name="TEXT">🚪</field>
                </block>
              </value>
              <value name="ADD1">
                <block type="text" id="H!F%:fa($538x+jul]7z">
                  <field name="TEXT"> Garagentor offen!</field>
                </block>
              </value>
              <value name="ADD2">
                <block type="text_newline" id="c!n*MC=#E9gKf[cT2!n,">
                  <field name="Type">\n</field>
                </block>
              </value>
              <value name="ADD3">
                <block type="text" id="~n+1;Q8{1?d;rlc3f(3n">
                  <field name="TEXT">Soll jetzt geschlossen werden?</field>
                </block>
              </value>
            </block>
          </value>
          <value name="ARG2">
            <block type="lists_create_with" id="q}ZQX7%qFaK`bCz}r^w1">
              <mutation items="2"></mutation>
              <value name="ADD0">
                <block type="lists_create_with" id="Kd5WIb/V)L}%l7,a_qYu" inline="true">
                  <mutation items="2"></mutation>
                  <value name="ADD0">
                    <block type="text" id="7x./JEj38tmtWs^itwl=">
                      <field name="TEXT">🚪 Ja</field>
                    </block>
                  </value>
                  <value name="ADD1">
                    <block type="text" id="Z1,I[nw@T3_*Ig%X4/j@">
                      <field name="TEXT">🚪 Nein</field>
                    </block>
                  </value>
                </block>
              </value>
              <value name="ADD1">
                <block type="lists_create_with" id=".R=c1N1,5^XS:UQo@y2Z" inline="true">
                  <mutation items="2"></mutation>
                  <value name="ADD0">
                    <block type="text" id="6J=ehZ]i{0w=/;0wQWvN">
                      <field name="TEXT">🚪 Ja</field>
                    </block>
                  </value>
                  <value name="ADD1">
                    <block type="text" id="Em?06)7Xc8}%($@Vr5f0">
                      <field name="TEXT">🚪 Nein</field>
                    </block>
                  </value>
                </block>
              </value>
            </block>
          </value>
        </block>
        <block type="comment" id="Uq%p#x%g:D$)Rvp*;}9k" x="938" y="363">
          <field name="COMMENT">doppelte Nennung nur zur Demonstration für mehrzeilige Buttonleiste</field>
        </block>
      </xml>
      

      posted in ioBroker Allgemein
      D
      Donald
    • RE: Telegram inline Keyboard zur Lampensteuerung

      @elektron60
      Wenn ich das so sehe/teste fällt mir wieder ein, warum ich bei mir damals am ende für das InlineKeyboard kein sendto( 'telegram.0',..) verwendet habe.
      Irgendwie will der immer geänderte Werte haben.

      Ich habe das InlineUpdate dann so gelöst das ich selbst die API-URL Aufrufe:

      var botToken="1234567890:ganz_geheim";
      var website="https://api.telegram.org/bot" + botToken;
      
      var obj =JSON.parse(KeyboardArray);
      var replymarkup = {
          inline_keyboard:  obj,
          resize_keyboard:   true,
          one_time_keyboard: false
      }
      var url = website + "/editMessageText?chat_id=" + chatId +"&message_id=" + messageId +
          "&text=" + encodeURIComponent(messageText) + "&reply_markup=" + encodeURIComponent(JSON.stringify(replymarkup));
      request(url);
      
      

      Und da das InlineKeyboard als eine gesamte Nachricht zählt kann meines Erachtens auch nur die gesamte Nachricht (samt Keyboard) ausgetauscht werden, und nicht nur das Label einzelner Buttons. Das Element "callback_data" ist ja nur WAS dem Bot gesendet werden soll beim Klick (wenns vom angezeigtem Labeltext abweichend sein soll).

      Dazu sende ich erst normal eine Nachricht, damit die letzte vom Bot kommt.
      Anschließend wird der eigentliche Inhalt geschickt und dieser dann aller 10 Sekunden aktualisiert.
      Dazu gibt es noch ein Objekt in Userdata, welches "true" enthält, solange das Keyboard aktualisiert werden soll.
      Wenn irgendein Button geklickt wird, wird auch "true" neu gesetzt, und nach zwei Minuten ohne Aktivität wird das Aktualisieren abgebrochen (oder wenn man abbricht).
      Allerdings ist dabei deine eigentliche Anfrage auch nicht erfüllt - das Keyboard selbst ist bei mir fix, nur der Text wird aktualisiert.

      Aber sonst überall werden die Menüs (bzw. Schaltflächen) bei mir nicht im JS-Code versteckt, sondern bastle diese im Blockly per Liste zusammen. Dies sollte prinzipiell auch für die InlineKB funktionieren. Liste erstellen mit "Listen" und "IDs vom Selector"? Habe ich aber auch noch nicht probiert.

      Hier der Teil meines Menüs zum Licht (RGBled ist im InlineKB)
      telegram_menu_inlineKB.txt

      posted in JavaScript
      D
      Donald
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo