Пользовательская клавиатура Telegram Bot на PHP
Я пытаюсь создать Telgram Bot на PHP с помощью специальной клавиатуры. Сообщение доставлено, но пользовательская клавиатура не будет работать. $keyb = array ('keyboard' = > array (array ( "A", "B" ))); также нет успешных результатов.
Метод sendMessage ссылается на ReplyKeyboardMarkup для объекта. Создание массива для ReplyKeyboardMarkup не работает. Также попытался json_encode ($ keyb), но это также не решение.
Я искал в GitHub для примеров, но я не нашел тот, где используется пользовательская клавиатура. Telegram работает на iPhone и на рабочем столе, как uptodate.
Пример кода:
$url = "https://api.telegram.org/bot<token>/sendMessage";
$keyb = array('ReplyKeyboardMarkup' => array('keyboard' => array(array("A", "B"))));
$content = array('chat_id' => <chat_id>, 'reply_markup' => $keyb, 'text' => "Test");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($content));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //fix http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/
// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
var_dump($server_output);
Ответы
Ответ 1
Документы, похоже, указывают, что вам необходимо предоставить параметр reply_markup как сериализованный объект JSON... kinda stupid для формы POST endpoint:
$replyMarkup = array(
'keyboard' => array(
array("A", "B")
)
);
$encodedMarkup = json_encode($replyMarkup);
$content = array(
'chat_id' => <chat_id>,
'reply_markup' => $encodedMarkup,
'text' => "Test"
);
Работает ли это?
Ответ 2
$keyboard = array(array("[Destaques]","[Campinas e RMC]","[esportes]"));
$resp = array("keyboard" => $keyboard,"resize_keyboard" => true,"one_time_keyboard" => true);
$reply = json_encode($resp);
$url = $GLOBALS[website]."/sendmessage?chat_id=".$chatId."&text=oi&reply_markup=".$reply;
file_get_contents($url);
Этот код отлично работает!