2016-08-25 73 views
1

需要內聯鍵盤幫助。我做了一個按鈕,但是如何處理回調?我知道我需要以某種方式得到一個callback_data併發出一條新消息。Iinline鍵盤。我做了一個按鈕,但如何處理callback_data?

 <?php 
$access_token = 'xxx'; 
$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']; 
$callback_query = $output['callback_query']; 
$data = $callback_query['data']; 
$message_id = ['callback_query']['message']['message_id']; 
switch($message) { 
    case '/test': 
    $inline_button1 = array("text"=>"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, "plz"); 
    break; 
} 
function sendMessage($chat_id, $message, $replyMarkup) { 
    file_get_contents($GLOBALS['api'] . '/sendMessage?chat_id=' . $chat_id . '&text=' . urlencode($message) . '&reply_markup=' . $replyMarkup); 
} 

回答

2

如果有人點擊該按鈕,您將收到一條callback_query對象,而不是消息的對象。 callback_query本身包含最初發送的消息。

$output = json_decode(file_get_contents('php://input'), TRUE); 
$callback_query = $output["callback_query"] 
$data = $callback_query["data"] // in your case $data is "/plz" 
+0

對不起,但我不明白該怎麼辦c message_id,我認爲它一定是如此,但它沒有奏效。這可能是我的代碼的一個例子嗎? 'switch($ message_id){ case'/ plz': sendMessage($ chat_id,「plz」); 休息; }' – batman

+0

你需要在'$ data'上使用你的開關才能找到'/ plz' – Maak

+0

它不起作用,怎麼了?消息中更新的代碼。 – batman

相關問題