2017-01-23 14 views
0

Я пытаюсь сделать ответ пользователю, нажав inline_button2, после inline_keyboard apper в чате, и я нажимаю online_button2. Я полагаю, что объект callback_data имеет данные с «callback_data» => 'inline2', но callback_data нуль see screenshottelegram callback_data имеет значение null в массиве обновлений

$access_token = '...'; 
$api = 'https://api.telegram.org/bot' . $access_token; 

$content = file_get_contents("php://input"); 
$update = json_decode($content, TRUE); 
$callback_query = $update['CallbackQuery']; 
$callback_data = $callback_query['data']; 

$message = $update["message"]; 
$text = $message["text"]; 
$chatId = $message["chat"]["id"]; 
if (!isset($chatId)) {exit;} 

switch($callback_data){ 
    case 'inline2': 
     sendMessage($chatId, "inline2 pressed",null); 
     break; 
    default: 
     sendMessage($chatId, var_export($callback_query,TRUE),null); 
     break; 
} 
switch($text) { 
    case 'inline': 
     $inline_button1 = array("text"=>"inline1","url"=>"http://google.com", "callback_data"=>'inline1'); 
     $inline_button2 = array("text"=>"inline2","callback_data"=>'inline2'); 
     $inline_keyboard = array(array($inline_button1,$inline_button2)); 
     $keyboard=array("inline_keyboard"=>$inline_keyboard); 
     sendMessage($chatId, "назад",$keyboard); 
     break; 
} 

function sendMessage($chat_id, $message, $replyMarkup) { 
    $s=''; 
    if (isset($replyMarkup)) { 
     $s=json_encode($replyMarkup); 
    } 
    file_get_contents($GLOBALS['api'] . '/sendMessage?parse_mode=HTML&chat_id=' . $chat_id . '&disable_web_page_preview=true&text=' . urlencode($message) .'&reply_markup='.$s); 
} 

ответ

0

вы получаете доступ к callback_query ошибочно и, кроме того вы должны принять chatId от callback_query объекта.

$callback_query = $update['callback_query']; 
$callback_data = callback_query["data"]; 
$chatId = callback_query["message"]["chat"]["id"]; 
0

изменить это $callback_query = $update['CallbackQuery']; к $callback_query = $update['callbackquery'];

вам также необходимо добавить следующее для callbackquery

$message_id = ['callback_query']['message']['message_id']; //callbackquery message id 
$chat_id = $callback_query['message']['chat']['id']; // callbackquery chat id 

я надеюсь, что это помогает