【问题标题】:Telegram Bot: How to get callback_data value?Telegram Bot:如何获取 callback_data 值?
【发布时间】:2018-04-10 07:14:37
【问题描述】:

我在 Telegram 中有一个简单的机器人。我的“/select”命令显示两个按钮,每个按钮都有自己的值。因此,如果用户单击按钮,我可以获得文本,但无法获得 callback_data 值。不知道我做错了什么。

代码如下:

$update = json_decode(file_get_contents('php://input'));

$callback_query = $update['callback_query'];

if (isset($callback_query)){
    //Fetching callback
    $data = $callback_query->data;
    $message = $callback_query->message;
    $message_id = $callback_query->message->message_id;
    $chat_id = $message->chat->id;

    switch($data){
        case "1":
           bot('SendMessage',[
               'chat_id' => $chat_id,
               'text' => "1"
           ]);
           break;

       case "2":
           bot('SendMessage',[
               'chat_id' => $chat_id,
               'text' => "2"
            ]);
            break;
     }
   }else{

    $message = $update->message;
    $message_id = $update->message->message_id;
    $text = $message->text;
    $chat_id = $message->chat->id;

    //Statement beginning

    switch($text){

        case "/select":            
            $keyboard = array(
                'keyboard' => [[['text' =>  "one", 'callback_data' => "1"]],[['text' =>  "two", 'callback_data' => "2"]]],
                'resize_keyboard' => true, 
                'one_time_keyboard' => true
            );
        $markup = json_encode($keyboard, true);            

        bot('SendMessage',[
            'chat_id' => $chat_id,
            'reply_markup' => $markup,
            'text' => "Choose your option"
        ]);
        break;            

    default:

        bot('SendMessage',[
            'chat_id' => $chat_id,
            'text' => "This is a test"
        ]);
}

}

【问题讨论】:

    标签: telegram telegram-bot php-telegram-bot


    【解决方案1】:

    您只需要处理从电报传入的更新到您的 webhook,这意味着如果更新是 callback_query 类型,您需要创建条件并解析数据。

    请查看电报文档,或观看一些 PHP 示例,例如:

    How can I differentiate between a 'Message' update and a 'Callback Query' update? (Telegram Bot API)

    https://jqueryajaxphp.com/telegram-bot-api-keyboards-callbacks/

    祝你好运!并保持冷静并发送电报:D

    【讨论】:

    • 我已经编辑了代码,我添加了callback_query部分但仍然不起作用。
    【解决方案2】:

    更新时你有一个数组,所以你可以得到如下:

    $callback_query_data = $update['callback_query']['data'];

    【讨论】:

      【解决方案3】:

      将“键盘”一词更改为“内联键盘”将解决您的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-04
        • 2015-12-02
        • 2019-10-01
        • 2017-03-31
        • 2019-02-14
        • 2018-11-04
        • 1970-01-01
        • 2022-07-28
        相关资源
        最近更新 更多