Привет, комьюнити QNA Habr! Я сейчас делаю Telegram бота на PHP 5.6 Сделал уже большую часть требуемого функционала. На данный момент мне нужно получить номер телефона из пересланного боту контакта. Вот часть кода, который запрашивает контакт через кнопку:
$text_return = "Отлично! Поделитесь номером телефона нажав на кнопку";
$replyMarkup = array('keyboard'=>array('text'=>"Send phone",'request_contact'=>true));
$replyMarkup = array(
'keyboard' => array(
array(array('text'=>"Send phone",'request_contact'=>true))
)
);
$encodedMarkup = json_encode($replyMarkup);
message_to_telegram($bot_token, $chat_id, $text_return, $encodedMarkup);
Вот, как это выглядит в самом Telegram:
Проблема заключается в том, что не получается изъять этот номер телефона. Я пытался делать самостоятельно, но безуспешно:
$data = file_get_contents('php://input'); // весь ввод перенаправляем в $data
$data = json_decode($data, true); // декодируем json-закодированные-текстовые данные в PHP-массив
// Основной код: получаем сообщение, что юзер отправил боту и
// заполняем переменные для дальнейшего использования
if (!empty($data['message']['text'])) {
$chat_id = $data['message']['from']['id'];
$user_name = $data['message']['from']['username'];
$first_name = $data['message']['from']['first_name'];
$last_name = $data['message']['from']['last_name'];
$user_phone = $data["message"]["contact"]["phone_number"];
$text = trim($data['message']['text']);
$text_array = explode(" ", $text);
Хочу заметить, что все работает нормально, кроме самого $user_phone Номер телефонна должен отправляться пользователю (сделано для проверки работы), что не происходит:
elseif (!empty($user_phone)) {
message_to_telegram($bot_token, $chat_id, $user_phone);
}
Я полдня лазил по документации, разным форумам. Ничего стоящего не нашёл. Буду рад, если поможете решить эту проблему.