Telegram API Bot - ответ CallbackQuery на нажатие кнопки - PullRequest
0 голосов
/ 18 октября 2019

Собственно вопрос в том, как получить ответ от пользователя одним нажатием кнопки? Что следует изменить \ переписать в коде?

$access_token = '...';
$api = 'https://api.telegram.org/bot' . $access_token;
$output = json_decode(file_get_contents('php://input'), TRUE);
$message = $output['message']['text'];
$chat_id = $output['message']['chat']['id'];

if ($output['callback_query'] != null){
    $data = $output['callback_query']['data'];
    $data_id = $output['callback_query']['id'];
    $chat = $output['callback_query']['message']['chat']['id'];
    switch($data){
        case "/123":
           answerCallback($data_id, '123');
           sendMessage($chat, "123", null);
        break;
        case "/plz":
           answerCallback($data_id, 'plz');
           sendMessage($chat, "plz", null);
        break;
     }
   }
elseif ($message != null) {
    switch($message) {
        case '/test':  
        $inline_button1 = array("text"=>"123","callback_data"=>"/123");
        $inline_button2 = array("text"=>"work plz","callback_data"=>'/plz');
        $inline_keyboard = [[$inline_button1,$inline_button2]];
        $keyboard=array("inline_keyboard"=>$inline_keyboard);
        $replyMarkup = json_encode($keyboard); 
         sendMessage($chat_id, "ok", $replyMarkup);
        break;
    }
}

function sendMessage($chat_id, $message, $replyMarkup) {
  file_get_contents($GLOBALS['api'] . '/sendMessage?chat_id=' . $chat_id . '&text=' . urlencode($message) . '&reply_markup=' . $replyMarkup);
}
function answerCallback($id, $text) {
    file_get_contents($GLOBALS['api'] . '/answerCallbackQuery?callback_query_id='.$id.'&text='.$text);
}

Этот код позволяет получить ответ только на сообщение /test и не реагирует на нажатия кнопок. Использует webhook.

1 Ответ

0 голосов
/ 18 октября 2019

Посмотрите на ваш журнал ошибок. Вы забыли указать значение для $replyMarkup.

PHP Warning: Missing argument 3 for sendMessage()
...