Отправить сообщение на номер телефона Telegram API

Для того чтобы отправлять на номер телефона сообщения, используя Telegram, мы будем использовать библиотеку Madeline Proto. Установка этой библиотеки и запуск её описана в этой статье. Итак, у нас все установлено и запущено. Как же нам отправить сообщение пользователю Telegram, зная его номер телефона. Известно, что отправка сообщений в Telegram осуществляется с использованием id пользователя, либо логина пользователя, на номер напрямую отправить нельзя, иначе бы спам был бы повсеместно. Нам же для того чтобы отправить сообщение необходимо добавить номер себе в контакты, получить его айди и отправить на него. Профит.

На словах сделали, давайте теперь к коду;) Использовать я буду Битрикс, ибо работаю с Битрикс (так уж сложилось).

Создадим в корне сайта файл с произвольным именем ,чтобы потом вызвать его из браузера. В реальных проектах так делать не надо (по-хорошему нужно бы создать класс и вызывать его), но для теста пойдет. У меня это файл send.php . И вставляем туда следующий код

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$session_file = $_SERVER["DOCUMENT_ROOT"]."/local/php_interface/madeline/session.madeline";
$message = 'Привет! Как дела?';
$phone = "+380995556677";

//Подключение библиотеки
$MadelineProto = new \danog\MadelineProto\API($session_file);

//массив с контактом
$inputPhoneContact = ['_' => 'inputPhoneContact', 'client_id' => rand(10000, 99999), 'phone' => $phone, 'first_name' => 'test', 'last_name' => 'test'];

try {

    $contacts = $MadelineProto->contacts->importContacts(['contacts' => [$inputPhoneContact]]);

    if($contacts['users'][0]['id']>0) {

        try {

            $MadelineProto->messages->sendMessage(['peer' => $contacts['users'][0]['id'], 'message' => $message]);

        } catch (Exception $e) {

            AddMessage2Log("Отправка сообщения на номер ".$phone.". Текст ошибки: ".$e->getMessage());

        }
    }
} catch (Exception $e) {

    AddMessage2Log("Добавление контакта с номером ".$phone.". Текст ошибки: ".$e->getMessage());

}

Теперь по частям:

Стартуем Madeline Proto. $session_file - файл с сессией библиотеки, путь должен совпадать с файлом в кроне (хендлером). Ссылку на статью приложил выше.

//Подключение библиотеки
$MadelineProto = new \danog\MadelineProto\API($session_file);

Далее формируем массив контакта

//массив с контактом
$inputPhoneContact = ['_' => 'inputPhoneContact', 'client_id' => rand(10000, 99999), 'phone' => $phone, 'first_name' => 'test', 'last_name' => 'test'];

client_id - случайный идентификатор пользователя, phone - номер телефона, first_name и last_name - имя и фамилия контакта, как он будет виден у вас в списке контактов. Далее добавляем контакт. Берем айди и отправляем на этот айди сообщение .Используем конструкции try{} catch(){} логирования

try {
    //добавляем контакт
    $contacts = $MadelineProto->contacts->importContacts(['contacts' => [$inputPhoneContact]]);
    
    if($contacts['users'][0]['id']>0) {
    //есть айди контакта
        try {
            //отправляем сообщение
            $MadelineProto->messages->sendMessage(['peer' => $contacts['users'][0]['id'], 'message' => $message]);

        } catch (Exception $e) {

            AddMessage2Log("Отправка сообщения на номер ".$phone.". Текст ошибки: ".$e->getMessage());

        }
    }
} catch (Exception $e) {

    AddMessage2Log("Добавление контакта с номером ".$phone.". Текст ошибки: ".$e->getMessage());

}

На этом всё. Удачной Вам разработки и адекватных клиентов.

Коментарии

Коментарии отсутствуют, будьте первым(ой) кто напишет под этим постом!

Написать коментарий