telegram bot api - 使用重放键盘发送附加数据

时间:2018-02-16 10:01:58

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

我正在处理telegram bot api,并将ReplayKeyboard我的消息文本发送给用户。当用户单击按钮时,电报会将具有以下结构的帖子发送到我的webhook。这是帖子的json结构:

{
    "update_id": *******,
    "message": {
        "message_id": ***,
        "from": {
            "id": *****,
            "is_bot": false,
            "first_name": "*****",
            "username": "******",
            "language_code": "en-US"
        },
        "chat": {
            "id": *****,
            "first_name": "******",
            "username": "*****",
            "type": "private"
        },
        "date": 1518716587,
        "text": "Button Text"
    }
}

我的问题是电报不接受重播键盘按钮的任何其他数据。所以,我必须使用字符串检查message.text,这不是良好的做法。例如,如果按钮具有表情符号,则表情符号代码必须在检查中。此外,我有不同的菜单类型,我需要找出点击按钮的类型,但我只有按钮的文字。所以我需要为每个按钮分配 id 类型。但我不知道我该怎么做。

以下是我的机器人发送给用户的帖子数据:

$keyboard = array(
        'resize_keyboard' => true,
        'keyboard' => array(
            array(
                array(
                   "text" => "Button Text"
                   //There is not any `id` or `type`,...
                )
            )
        )
    );

$post_fields = array(
    'chat_id' => **********
    'text' => ************,
    'reply_markup' => json_encode($keyboard)
);

注意:我不想 InlineKeyboard ,我需要使用 RelplayKeyboard

如果不可能,还有其他方法吗?例如,在按钮文本中添加其他数据并将其隐藏在用户之外。

1 个答案:

答案 0 :(得分:0)

您似乎需要保存每个用户 stat ,这样您就可以对类似的按钮文本做出适当的反应。

另请注意表情符号并不可怕!而且你不需要表情符号代码! 您只需将包含表情符号的文本与预定义字符串进行比较:

if('راهنما '===$receivedText)
    doSomeMagic();