Telegram Bot Inline Keyboard not displaying PHP

dean2020 picture dean2020 · Jan 18, 2017 · Viewed 12.8k times · Source

The following code works, it adds custom keyboard keys 'Button1' and 'Button2'

$keyboard = [
              'keyboard' => [['Button1'],['Button2']],
              'resize_keyboard' => true,
              'one_time_keyboard' => true,
              'selective' => true
            ];

$keyboard = json_encode($keyboard, true);

$sendto = API_URL."sendmessage?chat_id=".$chatID."&text=".$reply."&parse_mode=HTML&reply_markup=$keyboard";

I need to use Inline Keyboard though for my purposes, but I haven't been able to get it to work

$keyboard = [
             'inline_keyboard' => [['Button1' =>  'test', 'callback_data' => 'test'],
            ];

or

$keyboard = [                       
             'inline_keyboard' => [['Button1' =>  'test'],['callback_data' => 'test']],
            ];

doesn't work. I would really appreciate if anyone has a working example or can point out what is wrong in my example.

Link to documentation: https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating

Answer

Maak picture Maak · Jan 18, 2017

It looks like you are missing an additional array. The reply_markup should look like this:

$keyboard = array(
    "inline_keyboard" => array(array(array("text" => "My Button Text", "callback_data" => "myCallbackData")))
);