@barder

Как прочитать callback_query в Переданном JSON от Телеграм?

Привет всем.
Решил изучить PHP и TELEGRAM, тоесть изучаю создание бота на PHP
В общем присылаемые $data['message']['text'] норм отрабатывает, бот отвечает на тексты, и вот решил сделать инсайт кнопки, но не отвечает на них бот.
Пытаюсь отправить сообщение так:
if (mb_stripos($data['callback_query']['data'], '/yes_name') !== false) {
		sendTelegram(
			'sendMessage', 
			array(
				'chat_id' => $chat_id,
				'text' => $data['message']['chat']['first_name'] . " Отлично!!",
				'reply_markup' => json_encode(array('inline_keyboard' => $keyboard))

			)
		);
		exit();	
	}


На всякий случай весь код:
$data = file_get_contents('php://input');
$data = json_decode($data, true);

$fname = $data['message']['chat']['first_name']; // выделяем имя собеседника
$lname = $data['message']['chat']['last_name'];  // выделяем фамилию собеседника
$uname = $data['message']['chat']['username'];   // выделяем ник собеседника
$chat_id = $data['message']['chat']['id'];

if (true) {
	error_reporting(E_ALL & ~(E_NOTICE | E_USER_NOTICE | E_DEPRECATED));
	ini_set('display_errors', 1);
}
if (empty($data['message']['chat']['id'])) {
	exit();
}
// Функция вызова методов API.
function sendTelegram($method, $response)
{
	$ch = curl_init('https://api.telegram.org/bot' . TOKEN . '/' . $method);  
	curl_setopt($ch, CURLOPT_POST, 1);  
	curl_setopt($ch, CURLOPT_POSTFIELDS, $response);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_HEADER, false);
	$res = curl_exec($ch);
	curl_close($ch);
        return $res;
}
$keyboard = array(
	array(
		array("text"=>"Да","callback_data"=>'/yes_name'),
		array("text"=>"Справочник бота ","callback_data"=>'/help')
	)
);

// Ответ на текстовые сообщения.
if (!empty($data['message']['text'])) {
	$name = $data['message']['chat']['first_name'];

	if (mb_stripos($data['message']['text'], '/start') !== false) {
		sendTelegram(
			'sendMessage', 
			array(
				'chat_id' => $chat_id,
				'text' => $data['message']['chat']['first_name'] . " привет!  \nДавай знакомиться - твое имя " . $data['message']['chat']['first_name'] ."?\n" . $data['callback_query']['id'],
				'reply_markup' => json_encode(array('inline_keyboard' => $keyboard))
				
			)
		);
		
		
		exit();	
	}
//Ответ на кнопки инсайт
} else if (!empty($data['callback_query']['data'])) {
	
	if (mb_stripos($data['callback_query']['data'], '/yes_name') !== false) {
		sendTelegram(
			'sendMessage', 
			array(
				'chat_id' => $chat_id,
				'text' => $data['message']['chat']['first_name'] . " Отлично!!",
				'reply_markup' => json_encode(array('inline_keyboard' => $keyboard))

			)
		);
		exit();	
	}
}
  • Вопрос задан
  • 346 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы