Telegram уже давно перестал быть мессенджером для террористов, РКН от него отстал. И все больше людей начинают общаться в телеграм как по работе, так и в личных переписках. Для многих этот мессенджер стал не просто чатом, а еще и соц.сетью со своими новостными и развлекательными каналами. Так же удобные боты телеграмм позволяют добавить интерактивности в чаты и каналы. Вот и я решил немного углубиться в функциональное использование telegram. Первая идея – это получать уведомления с сайтов. Как настроить телеграм и как написать скрипт, который будет отправлять сообщения в чат постараюсь объяснить в этой статье.
Создание и настройка telegram бота для отправки сообщений
Напрямую скриптом отправлять сообщения в телеграм нельзя, но можно делать запросы к api ботов. Бот же в свою очередь будет делать то, что нам нужно – отправлять пользователю сообщения. Поэтому перед тем, как писать скрипт, нужно создать бота. В телеграм эта процедура занимает всего пару минут. Для создания и настроек есть официальный верифицированный бот: @BotFather. Откройте его в телеграм и отправьте команду «/newbot». Далее нужно будет придумать название и логин своему боту. Это все выполняется прямо в чате телеграм, ниже можете увидеть скрин переписки с ботом. После успешного создания и настроек, BotFather пришлет токен созданного бота. Токен потребуется для отправки запросов к api.
На этом настройка бота закончена. Но остался один момент – получение id пользователя телеграм, которому будет отправляться уведомления. Чтобы узнать свой id можно также воспользоваться ботами, их много. Я нашел вот такой: @getmyid_bot. Просто запустите бота и в ответ он напишет ваш ID.
У телеграм есть документация с описанием всех методов api, которые можно использовать. Документацию можно почитать тут: api ботов telegram.
В нашем случае всю документацию читать не придется, достаточно только одного метода – sendmessage. Он позволяет отправлять сообщения пользователям, которые начали диалог с ботом. У метода всего два обязательных параметра chat_id – ID пользователя или канала, который получит уведомление и text – текст сообщения. В скрипте я использовал еще третий параметр — parse_mode, он не обязательный, позволяет задать способ форматирования текста. По дефолту текст сообщения никак не форматируется. Parse_mode может принимать несколько значений: Markdown, MarkdownV2 и HTML. Пользоваться разметкой Markdown и MarkdownV2 я не умею, это телеграмовские теги. Поэтому выбрал HTML. Только обратите внимание, что это не полноценный html, теги поддерживаются не все. Подробнее можно почитать в документации.
На этом подготовка завершена, остается только написать код. Не забудьте открыть диалог со своим, только что созданным, ботом и запустить его. Если этого не сделать, то сообщения приходить не будут, а api в ответ на запросы будет присылать ошибки.
Php код для отправки сообщения в telegram
Ну а теперь самое интересное – код отправки запроса к api. В коде добавлены подробные комментарии, должно быть все понятно.
// описание метода api telegram // https://core.telegram.org/bots/api#sendmessage $tg_user = '1234567890'; // id пользователя, которому отправиться сообщения $bot_token = '1234567890:XXXXXX'; // токен бота $text = "Первая строка сообщения <a href='https://vk-book.ru/'>со ссылкой</a> \n Вторая строка с <b>жирным</b> текстом"; // параметры, которые отправятся в api телеграмм $params = array( 'chat_id' => $tg_user, // id получателя сообщения 'text' => $text, // текст сообщения 'parse_mode' => 'HTML', // режим отображения сообщения, не обязательный параметр ); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://api.telegram.org/bot' . $bot_token . '/sendMessage'); // адрес api телеграмм curl_setopt($curl, CURLOPT_POST, true); // отправка данных методом POST curl_setopt($curl, CURLOPT_TIMEOUT, 10); // максимальное время выполнения запроса curl_setopt($curl, CURLOPT_POSTFIELDS, $params); // параметры запроса $result = curl_exec($curl); // запрос к api curl_close($curl); var_dump(json_decode($result));
Послесловие
Область применения уведомлений в телеграм огромная. Можно слать сообщения об ошибках, происходящих на сайте. Или отправлять данные с форм, которые заполняют пользователи. Можно слать логи выполнения скриптов, которые отрабатывают по крону или при каких-то других событиях. Я, например, первым делом доработал свой скрипт, который парсит рутрекер и шлет новинки из раздела аудиокниг.
P.S. Чтобы получить свой id в телеграмм, можно написать любое сообщение боту, которого создали. А потом открыть в браузере ссылку: https://api.telegram.org/botтокен_бота/getUpdate Это объект с данными бота. Там можно найти свое сообщение, логин и id. Получение id можно автоматизировать и в ответ на старт бота отдавать ID пользователя, но это уже совсем другая история.
https://api.telegram.org/botтокен_бота/getUpdates — s на конце. Хоть и два года прошло, но может кому пригодится))