telegram callback_data在更新数组中为空

时间:2017-01-23 11:00:00

标签: php bots telegram telegram-bot

我试图回复用户按inline_button2,在聊天中的inline_keyboard apper之后我点击了inline_button2我想对象callback_data有数据" callback_data" =>' inline2& #39;但是callback_data为null see screenshot

$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);
}

2 个答案:

答案 0 :(得分:0)

您错误地访问了callback_query,另外您需要从chatId对象中获取callback_query

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

答案 1 :(得分: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 

我希望这有帮助