не создавать клавиатуру "inline_keyboard" с URL + GET аргумент в telegram - PullRequest
0 голосов
/ 05 июня 2018

проблема создания keyboard inline_keyboard с URL-адресом в телеграмме, когда я использую "&" в URL-адресе, keyboard не создает в телеграмме? !!!!!!!

этот код работает:

$text = "server=164.132.117.18\nport=8585\nsecret=c53a3eae90544e68a37cbe41c5d31442";
$keyboard = array(
    'resize_keyboard' => true,
    'inline_keyboard' => array(
        array(
            array('text' => "Click for Connect", 'url' => "https://t.me/proxy?server=164.132.117.18port=8585secret=c53a3eae90544e68a37cbe41c5d31442")
        )
    )
);
$url = API_URL_KEY . "sendMessage?chat_id=" . CHAT_ID_USER . "&text=" . urlencode($text). "&reply_markup=" . json_encode($keyboard);
$ch = curl_init();
$optArray = array(
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true
);
curl_setopt_array($ch, $optArray);
curl_exec($ch);
curl_close($ch);

но этот код не работает:

$text = "server=164.132.117.18\nport=8585\nsecret=c53a3eae90544e68a37cbe41c5d31442";
$keyboard = array(
    'resize_keyboard' => true,
    'inline_keyboard' => array(
        array(
            array('text' => "Click for Connect", 'url' => "https://t.me/proxy?server=164.132.117.18&port=8585&secret=c53a3eae90544e68a37cbe41c5d31442")
        )
    )
);
$url = API_URL_KEY . "sendMessage?chat_id=" . CHAT_ID_USER . "&text=" . urlencode($text). "&reply_markup=" . json_encode($keyboard);
$ch = curl_init();
$optArray = array(
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true
);
curl_setopt_array($ch, $optArray);
curl_exec($ch);
curl_close($ch);

У кого-нибудь есть решение?

1 Ответ

0 голосов
/ 05 июня 2018

При попытке вызвать созданный URL-адрес вы получаете код ошибки 400 "Bad Request: can't parse reply keyboard markup JSON object".

Попробуйте urlencode() часть URL-адреса, найденную в $keyboard.

$keyboard = array(
    'resize_keyboard' => true,
    'inline_keyboard' => array(
        array(
            array('text' => "Click for Connect", 'url' => urlencode("https://t.me/proxy?server=164.132.117.18&port=8585&secret=c53a3eae90544e68a37cbe41c5d31442"))
        )
    )
);

Это должно работать.

...