Получить имя пользователя и имя через Telegram Bot API с доступным совпадающим номером телефона

У меня есть список телефонных номеров.

Мне нужно их совпадение username и first_name в Telegram(если они подписаны на Telegram).

Я хочу получить эту информацию (имя пользователя и имя) с помощью Telegram BOT API.

Является ли это возможным? Как я могу это сделать? (с PHP)

Это мой пример кода:

<?php

//telegram sdk and configuration
$client = new Zelenin\Telegram\Bot\Api('someRandomToken');

$update = json_decode(file_get_contents('php://input'));

//your app
try {

    if($update->message->text != '/next_event_datetime')
        exit;

    $dom = Sunra\PhpSimple\HtmlDomParser::file_get_html('http://laratalks.com/');
    $element = $dom->find('#location header.section-header h3', 0);
    $dateTime = $element->plaintext;

    $response = $client->sendMessage([
        'chat_id' => $update->message->chat->id,
        'text' => $dateTime
    ]);

} catch (\Zelenin\Telegram\Bot\NotOkException $e) {

    //echo error message ot log it
    //echo $e->getMessage();

}

person ali reza    schedule 29.07.2016    source источник
comment
Было бы лучше не упоминать ваш пример кода, потому что он не связан с частями вашего вопроса.   -  person Seyfi    schedule 30.07.2016
comment
Подумайте об этом... хотели бы вы, чтобы кто-то, у кого есть только ваш номер телефона, мог узнать ваше имя и имя пользователя? Это было бы нарушением конфиденциальности и серьезным потенциальным началом для того, кто хочет провести фишинговую атаку на вас.   -  person ceejayoz    schedule 30.07.2016


Ответы (2)


Ну, вы можете получить имя пользователя и user_id от пользователя, когда у вас есть номер телефона. Я не знаю, как получить имя.

Просто отправьте контакт (sendContact) с любым именем и номером телефона. Telegram отвечает отправленным контактом, который включает user_id (если у пользователя есть Telegram) и username, если он установлен пользователем.

Шаг за шагом:

  1. Отправить контакт с номером и любым именем в любой чат (себе, группе, не важно...)
  2. Telegram API ответит сообщением об отправке или некоторым кодом ошибки. Если сообщение было отправлено успешно, контакт в ответе может иметь более подробную информацию (имя пользователя и user_id).
person Johannes Kuhn    schedule 30.07.2016
comment
В связи с тем, что метод Telegram Bot Doc (sendContact) предназначен для отправки существующего контакта (например, контактный номер человека А) человеку Б. Совершенно другое дело, чем этот вопрос - person Seyfi; 31.07.2016
comment
Попробуй сам. Дайте боту отправить контакт и посмотрите на полученное сообщение. - person Johannes Kuhn; 31.07.2016
comment
Я создал тестового бота для тестирования некоторых API здесь. Отправьте ему сообщение типа /raw sendContact phone_number 424314159 first_name bot_support, и он ответит (слегка проанализированным) результатом JSON. Обратите внимание, что есть поле user_id. - person Johannes Kuhn; 31.07.2016
comment
Ваш бот таков: вы отправляете phone_number с ПРОИЗВОЛЬНЫМ user_id. Затем, если этот номер телефона подписан на телеграмму, ваш бот показывает сообщение add contact с этим ПРОИЗВОЛЬНЫМ user_name. Это похоже на добавление номера телефона в телефонную книгу моего мобильного телефона с моим именем, а НЕ с реальным именем пользователя. Проверь себя. Также они предоставляются для клиента, а не для бота (чтобы добавить контакт) - person Seyfi; 31.07.2016
comment
когда я добавляю контакт с номером телефона в приложение для Android. телеграмма покажи мне имя пользователя контакта. возможно ли это в API? - person ali reza; 31.07.2016
comment
@TickTock Одна часть вопроса заключается в следующем: может ли бот получить имя пользователя (если есть) по номеру телефона. Ответ телеграммы при отправке контакта с этим номером содержит эту информацию. - person Johannes Kuhn; 05.08.2016
comment
@JohannesKuhn, не могли бы вы отправить несколько ответов JSON из телеграммы, содержащих эти данные? - person Seyfi; 05.08.2016

Короче говоря, это НЕВОЗМОЖНО. Но прочитайте весь пост, возможно, он будет вам полезен.

Получение номера телефона из Telegram и через Telegram Bot API является односторонним, это означает, что вы НЕ можете отправлять номер телефона и получать данные о пользователях из Telegram. (Примечание: мы предполагаем, что вы не добавляли пользователей по номеру телефона раньше)

Есть только два способа получить номер телефона пользователя в телеграмме:

1- Получите его с помощью специальной кнопки KeyboardButton. Таким образом, Telegram отправляет пользователям номер телефона после того, как пользователь их принял. (Примечание: пользователь ДОЛЖЕН быть подписчиком вашего бота до этого)

2- Спросите у пользователя его / ее номер телефона, но это ненадежно, и вы должны проверить его другими способами (например, одобрение SMS и т. Д.)

в конце концов, хотя эти два способа могут быть использованы для захвата номера телефона пользователя, но когда вы захватываете номер телефона, который у вас есть, ваш список бесполезен.

НО вы хотите захватить username с доступным номером телефона, это НЕВОЗМОЖНО из-за инфраструктуры Telegram Bot API.

person Seyfi    schedule 30.07.2016