php - 如何将值存储到电报机器人的 webhook PHP session 中

标签 php mysql telegram-bot

我正在为解决这个问题而发疯。
我有一个像这样的 PHP webhook 页面:

function processMessage($message)
{
    if (isset($message['text'])) {
        $text = $message['text'];

        if (strpos($text, "/start") === 0) {
            apiRequestJson("sendMessage", array(
                'chat_id'      => $chat_id,
                "text"         => 'Benvenuto ' . $firstname . ' ' . $lastname . ' sul BOT di MIMANCHITU, dimmi cosa vuoi fare?',
                'reply_markup' => array(
                    'keyboard'          => array(array('/GUIDE', '/DOMANDE')),
                    'one_time_keyboard' => true,
                    'resize_keyboard'   => true
                )
            ));

        } else if ($text === "/DOMANDE") {
            apiRequest("sendMessage", array(
                'chat_id' => $chat_id,
                "text"    => 'Inserisci la parola da cercare tra le risposte della Dottoressa [' . $azione . '] XXX:'
            ));

        } else if (strpos($text, '/') !== true) {
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_VERBOSE        => true,
                CURLOPT_URL            => 'http://www.domain.it/bot/search_dom.php',
                CURLOPT_POSTFIELDS     => array(
                    'parola' => $text
                )
            ));

            $resp = curl_exec($curl);
            $obj  = json_decode($resp);
            curl_close($curl);

            foreach ($obj as $value) {
                apiRequest(......));
            }

        } else if ($text === "/GUIDE") {
            apiRequest("sendMessage", array(
                'chat_id' => $chat_id,
                "text"    => 'Cerca una parola per visualizzare i contenuti trovati tra le Guide al Sesso di MIMANCHITU:'
            ));
        }
    }
}

用户有两个选择:

  • 点击/GUIDE搜索,写一个字,进入mysql db,带教程...
  • 点击/DOMANDE搜索,写一个词,带问题进入mysql数据库...

我的问题是如何检查用户在从自定义键盘上选择按钮后是否在 /GUIDE/DOMANDE 中搜索!我正在考虑设置一个 PHP SESSION 参数,但这不起作用! 有什么想法吗?

最佳答案

您可以使用 InlineKeyboardMarkup 而不是 ReplyKeyboardMarkup。内联键盘返回 query_callback,其中包括以前的消息以及用户对该消息的回复。这是按下 inline_keyboard 时来自 Telegram 的示例 JSON 回复:

{
  "update_id": 88888888,
  "callback_query": {
    "id": "99999999999999999",
    "from": {
      "id": XXXXXXXXXX,
      "first_name": "ABCD",
      "last_name": "CDEF"
    },
    "message": {
      "message_id": 56,
      "from": {
        "id": YYYYYYYYYY,
        "first_name": "myBotName",
        "username": "myBot"
      },
      "chat": {
        "id": XXXXXXXXXX ,
        "first_name": "ABCD",
        "last_name": "CDEF",
        "type": "private"
      },
      "date": 1466703216,
      "text": "someText"
    },
    "data": "returnValue"
  }
}

关于php - 如何将值存储到电报机器人的 webhook PHP session 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37923055/

相关文章:

java - 在 Openshift 上运行 Java 应用程序

php - 我的 Telegram 查询出了什么问题?

php - setcookie() 期望参数 3 是整数,给定数组

MySQL:选择按字符数排序的行

php - 上传带有自定义 ID 的 CSV

mysql - 在 ADO 查询中使用参数 (mysql/MyConnector)

javascript - 使用 AJAX 发送单选按钮值以获取 PHP 文件以从 MySQL 检索数据

PHP 函数循环检查数据库中是否存在字符串

php - 模块可以下载文件吗?

python - Telethon 在按钮后写消息/开始聊天 - 机器人在/开始之前发送消息