19

カスタム キーボードを使用して、PHP でテレグラム ボットを作成しようとしています。メッセージは配信されますが、カスタム キーボードが機能しません。$keyb = array('keyboard' => array(array("A", "B"))); また、成功しません。

sendMessageメソッドは、オブジェクトのReplyKeyboardMarkupを参照します。ReplyKeyboardMarkup の配列を作成しても機能しません。json_encode($keyb) も試みましたが、それも解決策ではありません。

GitHub で例を検索しましたが、カスタム キーボードが使用されている例は見つかりませんでした。Telegram は最新の iPhone とデスクトップで動作します。

サンプルコード:

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

2 に答える 2

29

ドキュメントは、reply_markup パラメーターを JSON シリアル化オブジェクトとして提供する必要があることを示しているようです...フォーム POST エンドポイントにはちょっとばかげています:

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

これは機能しますか?

于 2015-06-28T11:47:35.317 に答える