tutorial - Telegram Bot teclado personalizado en PHP
telegram bot php tutorial (2)
Los documentos parecen indicar que debe proporcionar el parámetro reply_markup como un objeto serializado JSON ... algo estúpido para un punto final de POST:
$replyMarkup = array(
''keyboard'' => array(
array("A", "B")
)
);
$encodedMarkup = json_encode($replyMarkup);
$content = array(
''chat_id'' => <chat_id>,
''reply_markup'' => $encodedMarkup,
''text'' => "Test"
);
¿Este funciona?
Estoy tratando de hacer un Bot Telgram en PHP con un teclado personalizado. El mensaje se entrega, pero el teclado personalizado no funcionará. $ keyb = array (''keyboard'' => array (array ("A", "B"))); También sin éxito.
El método sendMessage ReplyKeyboardMarkup a ReplyKeyboardMarkup para el objeto. Hacer una matriz para ReplyKeyboardMarkup no funciona. También intenté json_encode ($ keyb) pero esa tampoco es la solución.
Busqué en GitHub ejemplos, pero no he encontrado uno donde se use el teclado personalizado. Telegram se ejecuta en iPhone y escritorio, ambos actualizados.
Código de muestra:
$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);
$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);
Este código funciona bien!