Intereting Posts
Как отображать только 5 записей на страницу из моей таблицы базы данных mysql через разбиение на страницы? Тестирование вставки базы данных с помощью Symfony Префикс MySQL таблиц или многих баз данных MySQL? jsonp -> json_decode () Как внутреннее соединение работает с отношениями «многие ко многим» с помощью Doctrine и Symfony2 Получать контент в теге html с помощью php и заменять его после обработки mysql_insert_id (); не возвращать значение после успешной вставки строки $ _GET как параметры в функциях PHP Невозможность обновления Laravel 5.1 до 5.2 (это противоречит вашим требованиям или минимальной стабильности) Невозможно получить комментарии для каждой строки. Необходим новый ввод. PHP – OOP – Почему моя функция называется дважды? Добавить поля ACF на страницу результатов поиска WordPress Laravel orderBy дата не работает при использовании paginator phpdoc: Каков правильный способ документирования константы Заголовок CORS «Нет» Access-Control-Allow-Origin 'присутствует », но есть

Пользовательская клавиатура 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); 

    Документы, похоже, указывают, что вам необходимо предоставить параметр reply_markup в качестве сериализованного объекта JSON … kinda stupid для формы конечной точки POST:

     $replyMarkup = array( 'keyboard' => array( array("A", "B") ) ); $encodedMarkup = json_encode($replyMarkup); $content = array( 'chat_id' => <chat_id>, 'reply_markup' => $encodedMarkup, 'text' => "Test" ); 

    Работает ли это?

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

    Этот код работает отлично!