2015-06-28 27 views
15

PHP özel bir klavye ile bir Telgram Bot yapmaya çalışıyorum. Mesaj teslim edildi, ancak özel klavye çalışmaz. $ keyb = dizi ('klavye' => dizi (dizi ("A", "B"))); ayrıca başarı yok.Telegram Bot özel klavye PHP

Nesne için sendMessage yönteminin yönlendirenlerini ReplyKeyboardMarkup yöntemine yönlendirin. ReplyKeyboardMarkup için bir dizi yapma çalışmıyor. Ayrıca json_encode ($ keyb) denedi ama bu da çözüm değil.

Örnekler için GitHub'da aradım ancak özel klavyenin kullanıldığı bir yer bulamadım. Telegram hem uptodate hem de iPhone ve masaüstü bilgisayarlarda çalışır.

örnek kod:

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

Does:

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

cevap

20

docs görünmek sen ... JSON tefrika nesne olarak reply_markup parametresini sağlamak için bir form POST son nokta için biraz aptal ihtiyaç gösteren Bu bir iş?

+0

Hayır, işe yaramıyor. Ayrıca bahsetmeyi unuttum ama aynı zamanda – Martin

+1

denediniz mi? Bu, reddit'e göre doğru yaklaşımdır: http://www.reddit.com/r/Telegram/comments/3bblz0/sendmessage_with_replykeyboardmarkup_problem Mayıs Gönderi verilerinizi döküm etmeye ve karşılaştırmaya değmezsiniz. İyi şanslar. –

+0

Evet, bu işe yarıyor! Her şeyi denedim, ama bunu atladım. Teşekkürler! – Martin

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

Bu kod düzgün çalışıyor!

İlgili konular