Skip to content

Описание работы

Dmitriy edited this page Oct 28, 2019 · 1 revision

Запрос от серверов Telegram

На заданный адрес webhook (скрипт process.php) приходит запрос от серверов Telegram в формате JSON. Скрипт обрабатывает входящий запрос, расшифровывает JSON и переводит его в обычный массив в переменную $update

Обратите внимание, что для обработки входящего потока используется следующая конструкция: $content = file_get_contents("php://input"); Возможно, это не сработает на некоторых версиях PHP или при определенных настройках сервера. В таком случае необходимо переписать конструкцию с использованием переменной $_POST, примерно так: if(!empty($_POST)) { $update = json_decode($_POST, true) or die('Invalid JSON'); }

Пример массива на выходе: Array ( [update_id] => 462641238 [message] => Array ( [message_id] => 74973 [from] => Array ( [id] => 41851891 [is_bot] => [first_name] => Dmitry [username] => D13410N3 [language_code] => ru )

        `[chat] => Array`
            `(`
                `[id] => -1001467803922`
                `[title] => ChatName`
                `[type] => supergroup`
            `)`

        `[date] => 1572244135`
        `[text] => Текст сообщения`
    `)`

)

Создаваемые переменные

$_MESS - (array) массив с информацией о сообщении, см. выше [message] $_TEXT - (string) строка с сообщением в strtolower(), см. выше [message] -> [text] $_CHAT - (array) массив с информацией о чате, где отправлено сообщение, см. выше [message'] -> [chat] $_USER - (array) массив с информацией о юзере, который отправил сообщение, см. выше [message] -> [from] Если сообщение отправлено лично боту, $_CHAT['id'] будет равен $_USER['id']. Это очень удобно для проверки отправлено ли сообщение в ЛС боту, либо отправлено в чате.