telegram bot Как читать приходящие данные -- Контакт пользователя (contact), Инлайн запрос (inlineQuery)
Primary tabs
Простейший вариант обработки telegram-bot-а на php, без использования сторонних библиотек.
В официальной документации Telegram API любезно описано, как бот может запросить контактный номер пользователя или передать inline-запрос с помощью кнопок, но предоставил нам самим догадываться, как же их получить/обработать.
Давайте разбираться.
Так мы получаем массив данных из request-а в контроллере, который предварительно настроен на приём данных от telegram API:
$result = json_decode($request->getContent(), true);
Получаем данные
Важно!
Дальше обязательно делаем проверку на наличие тех или иных элементов в массиве $result, потому что если элемент не существует, при обращении к нему (даже при проверке его на пустоту с помощью empty()) приложение "падает". Поэтому проверка, а внутри соответствующие массивы данных:
// Если из telegram приходит просто текстовое сообщение if (isset($result["message"]["text"])) { $text = $result["message"]["text"]; // Текст сообщения $chatId = $result["message"]["chat"]["id"]; // Уникальный идентификатор пользователя $telegramId = $result["message"]["from"]["id"]; //Id пользователя в телеграме // ... // Если из telegram приходит контакт пользователя } elseif (isset($result["message"]["contact"])) { $contact = $result["message"]["contact"]["phone_number"]; // Контактный телефон пользователя $chatId = $result["message"]["chat"]["id"]; // Уникальный идентификатор пользователя $telegramId = $result["message"]["from"]["id"]; //Id пользователя в телеграме // ... // Если из telegram приходит callbakQuery (например, при нажатии на inline_button) } elseif (isset($result["callback_query"])){ $callbackQueryData = $result["callback_query"]["data"]; //Данные колбэка $chatId = $result["callback_query"]["message"]["chat"]["id"]; //Уникальный идентификатор пользователя $telegramId = $result["callback_query"]["from"]["id"]; //Id пользователя в телеграме // ... } else { // Сюда приложение никогда не попадёт }
- Log in to post comments
- 6391 reads