Telegram Bot API: Inline Button verwenden, wie?

ja das hab ich auch gefunden vorher, aber da steht kein Code Beispiel oder so :D
 
Dieser Bot hat genau das was ich will. Er sendet eine Nachricht und danach noch 2 Buttons wo man sich entscheiden muss.
 

Anhänge

  • Titelloses 1_20200417022821.png
    Titelloses 1_20200417022821.png
    391,2 KB · Aufrufe: 627
@blablub1212 naja, das sieht aus wie eine Bibliothek womit es schwer sein könnte als Programmieranfänger Rückschlüsse zu ziehen.

@xep22 ich weiß nicht zu 100% ob der nötige Paramater über die URL übergebbar ist... aber du müsstest beim sendMessage Aufruf noch einen Parameter hinzufügen. Die passenden Links hat dir @bog bereits geschickt.

Fangen wir mit folgender Beschreibung an:
https://core.telegram.org/bots/api#sendmessage

unter sendMessage gibt es noch den Parameter reply_markup. Dort gibt es verschiedene Typen, u.a. ReplyKeyboardMarkup:
https://core.telegram.org/bots/api#replykeyboardmarkup

Dort haben wir wieder ein Pflichtfeld keyboard, welches ein Array vom Typ KeyboardButton enthält:
https://core.telegram.org/bots/api#keyboardbutton

Und dort gibt es wieder ein Pflichtfeld Namens text vom Typ string.

In der sendMessage Methoden-Beschreibung steht:
Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user.

D.h. wir brauchen einen JSON String. Aus den gelesenen Informationen würde ich meinen, dass dieser bspw. wie folgt aussehen kann:
JSON:
{
    "reply_markup" : {
        "keyboard" : [
           {"text" : "Ja"},
           {"text" : "Nein"}
        ]
    }
}

Dieser String muss nun, da du dies in die URL einfügen möchtest, mit PHP url encodiert werden.

Oder aber du arbeitest von Anfang an mit Objekten und Arrays in PHP und encodierst dieses Konstrukt dann in JSON.

Ich denke die Infos sollten dir weiterhelfen.
 
danke, also müsste ich es doch mit der Funktion

Code:
urlencode

encodieren oder ? Aber wenn ich das mache antworte der Bot nur mit dem json.

PHP:
$json='{
"reply_markup" : {
    "keyboard" : [
       {"text" : "Ja"},
       {"text" : "Nein"}
    ]
}
}';
$ausgabe=urlencode($json);
file_get_contents($path.'/sendmessage?chat_id='.$chatId.'&parse_mode=html&text=Wähle:'.$ausgabe);
 
eher so:
PHP:
file_get_contents($path.'/sendmessage?chat_id='.$chatId.'&parse_mode=html&text=Wähle:&reply_markup='.$ausgabe);

aber ehrlich: ich würde ein HTTP Post Aufruf machen und sämtliche Parameter als JSON in den http body packen... das ist sauberer
 
  • Gefällt mir
Reaktionen: xep22
hab das gefunden damit geht es!

 
Zurück
Oben