Страницы

Поиск по вопросам

вторник, 30 апреля 2019 г.

Telegram bot php. Inline keyboard. Подскажите, что делать дальше с callback_data. Что бы после нажатия на кнопку inline keyboard - бот ее обработал

Подскажите, пожалуйста как написать простой сценарий для бота, например: написал команду "/test", бот спрашивает: "Вы уверены?" пишешь в ответ: "Да" бот отправляет следующее сообщение по сценарию, если пишешь "нет" - сценарий заканчивается. Важно, что бы мой ответ "Да" не обрабатывался ботом, пока он не спросит "Вы уверены?"(после команды /test)
$access_token = '...'; $api = 'https://api.telegram.org/bot' . $access_token;
$output = json_decode(file_get_contents('php://input'), TRUE); $chat_id = $output['message']['chat']['id']; $first_name = $output['message']['chat']['first_name']; $message = $output['message']['text']; switch($message) { case '/test': sendMessage($chat_id, "Вы уверены?"); break; default: $sorry_text = $first_name . ' , мне нечего ответить'; sendMessage($chat_id, $sorry_text); } function sendMessage($chat_id, $message, $encodedMarkup) { file_get_contents($GLOBALS['api'] . '/sendMessage?chat_id=' . $chat_id . '&text=' . urlencode($message) . $encodedMarkup); }
Понял, что это делается через ForceReply, но как пока не разобрался. UPDATE сделал inline keybord, но пока не понял как выводить сообщение в зависимости от нажатой кнопки case '/test':
$x1 = array("text"=>"First Button","callback_data"=>"test1"); $x2 = array("text"=>"Second Button","callback_data"=>"test2"); $opz = [[$x1,$x2]]; $keyboard=array("inline_keyboard"=>$opz); $keyboard = json_encode($keyboard); sendMessage($chat_id, "testt2", $keyboard); break;
т.е. сейчас при нажатии на кнопку ничего не вывыодится


Ответ

Вот рабочий код, если кому нужен.
"Google url","url"=>"http://google.com"); $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; } switch($data){ case '/plz': sendMessage($chat_id_in, "plz"); break; } function sendMessage($chat_id, $message, $replyMarkup) { file_get_contents($GLOBALS['api'] . '/sendMessage?chat_id=' . $chat_id . '&text=' . urlencode($message) . '&reply_markup=' . $replyMarkup); }

Комментариев нет:

Отправить комментарий