Для того чтобы отправлять на номер телефона сообщения, используя 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());
}
На этом всё. Удачной Вам разработки и адекватных клиентов.
Коментарии отсутствуют, будьте первым(ой) кто напишет под этим постом!
Написать коментарий