web-dev-qa-db-ja.com

テレグラムボット:json、inline_keyboardの例

テレグラムボットのshowinline_keyboardのjsonの例

https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating

ここに画像の説明を入力してください

{
        "chat_id": "123456",
        "text": "Hi",
        "reply_markup": {
            "inline_keyboard": [[
                {
                    "text": "A",
                    "callback_data": "A1"            
                }, 
                {
                    "text": "B",
                    "callback_data": "C1"            
                }]
            ]
        }
    }
5
jeissonp

APIで動作させるのに苦労しましたが、問題が見つかりました。 JSON.stringify()キーボードオブジェクトとコンテンツを最初に文字列に変換するreply_markupのコンテンツを実行する必要があります。

これが例です。

bot.onCommand = function (chat, from, message_id, text, command, commandData) {
    if (command === "test") {
        var keyboard = {
            "inline_keyboard": [
                [
                    {"text": "Yes", "url": "http://www.google.com/"},
                    {"text": "No", "url": "http://www.google.com/"}
                ]
            ]
        };

        var data = {
            "reply_to_message_id": message_id,
            "reply_markup": JSON.stringify(keyboard)
        };


        bot.sendText(chat.id, "test", data, function (isSuccess) {
            console.log(isSuccess);
        });

        return;
    }
}

混乱を少なくするためにこれを書きました。

出力は次のようになります。

(test    )
[Yes] [No]

丸括弧はメッセージであり、角括弧はボタンです。この例の両方で、Googleへのリンクが開きます。

9
Nova

さて、私はあなたが何を意味するのか理解したと思います、jeissonp。 Node.jsを使用してTelegramボットを作成しているようです。これが、ユーザーにインラインキーボードを提供する方法です。

キーボードを作成します。

const opts = {
"reply_markup": {
            "inline_keyboard": [[
                {
                    "text": "A",
                    "callback_data": "A1"            
                }, 
                {
                    "text": "B",
                    "callback_data": "C1"            
                }]
            ]
        }
}

そして、optsでメッセージを送信します。

bot.sendMessage(chatID, "Message text", opts);

それが役に立てば幸い!

4
Monochrome