Как сделать уведомления в телеграм на PHP
Привет! Сегодня поговорим о том, как можно отправить себе сообщение в телеграмме с помощью PHP. Это удобно использовать, когда нужно получить уведомление о каком-то событии, произошедшем на бэкенде. Например, я таким образом получаю уведомления о новых комментариях к урокам.
В ответ он попросит написать ему имя бота. Я назвал своего PhpZoneNotifier. Пишем, отправляем.
В ответ получаем токен вида 123:ABCDEF. С помощью этого токена мы можем авторизоваться в телеге от имени этого бота.
Теперь нужно узнать наш собственный id в телеграме. По нему бот будет отправлять нам сообщения. Чтобы узнать этот айдишник, нужно написать боту @userinfobot команду /start.
Где вместо
В теле запроса нужно передать 2 параметра:
Для отправки запроса я использовал Guzzle.
После чего пытаемся отправить сообщение, вызвав:
И видим, что произошло исключение. var_dump вывел следующее:
Получаем наше заветное уведомление.
Изи. Не забываем убрать отладочный var_dump из кода и добавить корректную обработку исключений.
Отправка сообщений в telegram с помощью php
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 Bot и PHP – Отправка сообщений

API Telegram Bot и PHP – Отправка сообщений
Создаём Telegram Bot.
Для начала нам необходимо создать нашего бота и получить ключ. Для этих целей разработчиками создан бот “@BotFather“. Нам необходимо написать боту в чат несколько сообщений с нужными нам параметрами:
1. Для начала пишем сообщение “/start“. Нам в ответ вернут все возможные команды бота.
2. Отправляем боту команду “/newbot“.
3. Нам предлагают ввести имя нашего бота. Тут как вам будет угодно, я назвал “PechnekTest”.
4. Теперь нам необходимо выбрать имя пользователя для бота, главное, что бы название нашего бота заканчивалось на “bot” (например TestBot или Test_bot). В моём случае “PechnekTest_Bot”
5. После всего мы увидим поздравления и наш токен.
6. Теперь добавляем в друзья нашего бота. Можно искать по имени что мы задали ранее.
Для того, что бы нам отправлять сообщения, нам необходимо узнать “chat id“, если по-простому, то идентификатор нашего чата. Для этого нам необходимо проделать ряд действий:
1. Написать что-то нашему боту, абсолютно любое сообщение. Нужно это для того, что бы мы могли достать наш chat id. Без этого метод API Telegram вернёт нам пустое значение.
Связь формы заказа на сайте с Телеграм
1. Как работает оповещение в телеграмм и для чего это нужно?
Причин настройки уведомлений в телеграмм может быть несколько, например: скорость оповещений, удобство.
О скорости
Что происходит при работе с email-уведомлениями:
Разберем очень кратко алгоритм отправки сообщения
При использовании функции mail() происходит множественный обмен между серверами, на что уходит «куча» времени. В итоге от заказа до получения уведомления может пройти несколько секунд.
В случае с telegram все происходит моментально. От заказа до получения оповещения проходит не более секунды. Чуть позже мы на практическом примере разберем наглядно этот пример.
Как это происходит с telegram:
Как видно, количество основных шагов (не считая посредников в виде множества серверов) такое же как и в случае с почтой, но благодаря централизованной системе telegram, весь процесс исчисляется в долях секунды.
Схема оповещения о заказах практически ни чем не отличается от стандартной, где используется электронная почта.
Только вместо email мы будем использовать telegram.
2.Создание бота
На создания бота уйдет всего несколько секунд.
Наш бот создан, а в ответ мы получили сообщение с token :
Use this token to access the HTTP API:
397123976:AAHoeZRWL6YSLHgvFGgAj-sy_HEHCS7TvZQ
После всех манипуляций открываем новоиспеченного бота @storebot (естественно у вас username бота свой) и отправляем команду /start
Узнать id чата Телеграмм
В чат с ботом и будут приходить уведомления о заказах.
Чтобы узнать id чата, воспользуемся методом getUpdates
Вместо используем полученный ранее token
Ссылка будет выглядеть следующим образом:
Открываем эту ссылку в браузере
Получаем ответ в виде json.
Находим фрагмент:
Это и есть id чата.
3.Связываем телеграмм и форму на сайте
Допустим 😉 так выглядит стандартная форма заказа в магазине, она состоит из двух полей: Имя и телефон.
[pastacode lang=»markup» manual=»%3Cform%20method%3D%22post%22%3E%0A%0A%09%3Cinput%20name%3D’name’%20type%3D’text’%20placeholder%3D’%D0%92%D0%B2%D0%B5%D0%B4%D0%B8%D1%82%D0%B5%20%D0%B8%D0%BC%D1%8F’%20%2F%3E%0A%09%0A%09%3Cinput%20name%3D’tel’%20type%3D’text’%20placeholder%3D’%D0%92%D0%B2%D0%B5%D0%B4%D0%B8%D1%82%D0%B5%20%D1%82%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD’%20%2F%3E%0A%09%0A%09%3Cinput%20type%3D’submit’%20%2F%3E%0A%09%0A%3C%2Fform%3E» message=»» highlight=»» provider=»manual»/]
Необходимо сформировать сообщение из полученных из формы данных, а также занести в переменные token и id чата.
[pastacode lang=»php» manual=»if(isset(%24_POST%5B’name’%5D))%7B%24name%20%3D%20%24_POST%5B’name’%5D%3B%7D%0A%0Aif(isset(%24_POST%5B’tel’%5D))%7B%24tel%20%3D%20%24_POST%5B’tel’%5D%3B%7D%0A%0A%24mess%20%3D%20%22%D0%98%D0%BC%D1%8F%3A%20%7B%24name%7D%5Cn%D0%A2%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD%3A%20%7B%24tel%7D%22%3B%0A%0A%24token%3D’397123976%3AAAHoeZRWL6YSLHgvFGgAj-sy_HEHCS7TvZQ’%3B%2F%2F%D0%9D%D0%B0%D1%88%20token%0A%0A%24query%20%3D%20%5B%0A%20%20%20%20’chat_id’%20%3D%3E%20276578256%2C%2F%2Fid%20%D1%87%D0%B0%D1%82%D0%B0%0A%20%20%20%20’parse_mode’%20%3D%3E%20’HTML’%2C%0A%20%20%20%20’text’%20%3D%3E%20%24mess%0A%5D%3B» message=»Формирование сообщения» highlight=»» provider=»manual»/]
Проверяем все ли необходимые данные ввел пользователь, если да то выполняем тело условия.
4.Тестирование. Делаем пробный заказ.
При помощи функции file_get_contents делаем запрос к полученному адресу.
[pastacode lang=»php» manual=»if(%24name%20and%20%24tel)%7B%0A%09%09%09%0A%09file_get_contents(sprintf(%0A%09%09%09%09%09%09%0A%09%09’https%3A%2F%2Fapi.telegram.org%2Fbot%25s%2FsendMessage%3F%25s’%2C%20%0A%0A%09%09%24token%2C%20http_build_query(%24query)%0A%09%0A%09))%3B%0A%0A%7D» message=»Запрос к api telegram» highlight=»» provider=»manual»/]
Получаем ответ в наш чатик.
Сравнение скорости
[pastacode lang=»php» manual=»%3C%3Fphp%0A%0Aif(isset(%24_POST%5B’name’%5D))%7B%24name%20%3D%20%24_POST%5B’name’%5D%3B%7D%0A%0Aif(isset(%24_POST%5B’tel’%5D))%7B%24tel%20%3D%20%24_POST%5B’tel’%5D%3B%7D%0A%0A%24to%20%3D%20%22%3Cnew%40zakaz.ru%3E%22%20%20%3B%20%2F%2F%D0%9F%D0%BE%D1%87%D1%82%D0%B0%20%D0%B4%D0%BB%D1%8F%20%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%20%D1%83%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9%0A%24subject%20%3D%20%22%D0%9D%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%22%3B%20%0A%0A%24mess%20%3D%20%22%D0%98%D0%BC%D1%8F%3A%20%7B%24name%7D%5Cn%D0%A2%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD%3A%20%7B%24tel%7D%22%3B%0A%0A%24token%3D’397123976%3AAAHoeZRWL6YSLHgvFGgAj-sy_HEHCS7TvZQ’%3B%0A%24query%20%3D%20%5B%0A%20%20%20%20’chat_id’%20%3D%3E%20276583256%2C%0A%20%20%20%20’parse_mode’%20%3D%3E%20’HTML’%2C%0A%20%20%20%20’text’%20%3D%3E%20%24mess%0A%5D%3B%0A%0A%24headers%20%3D%20%22MIME-Version%3A%201.0%5Cr%5Cn%22%3B%0A%24headers%20.%3D%20%22Content-type%3A%20text%2Fplain%3B%20charset%3Dutf-8%5Cr%5Cn%22%3B%0A%24headers%20.%3D%20%22From%3A%20new%40zakaz.ru%5Cr%5Cn%22%3B%0A%0Aif(%24name%20and%20%24tel)%7B%0A%09%0A%09mail(%24to%2C%20%24subject%2C%20%24mess%2C%20%24headers)%3B%0A%09%09%09%09%09%0A%09file_get_contents(sprintf(‘%0A%09%0A%09%09https%3A%2F%2Fapi.telegram.org%2Fbot%25s%2FsendMessage%3F%25s’%2C%20%0A%09%09%09%09%09%09%09%20%20%0A%09%09%24token%2C%20http_build_query(%24query)%0A%09%09%09%09%09%09%09%20%0A%09))%3B%0A%09%0A%7D%0A%0A%3F%3E%0A%0A%3Cform%20%20method%3D%22post%22%3E%0A%0A%09%3Cinput%20name%3D’name’%20type%3D’text’%20placeholder%3D’%D0%92%D0%B2%D0%B5%D0%B4%D0%B8%D1%82%D0%B5%20%D0%B8%D0%BC%D1%8F’%20%2F%3E%0A%09%0A%09%3Cinput%20name%3D’tel’%20type%3D’text’%20placeholder%3D’%D0%92%D0%B2%D0%B5%D0%B4%D0%B8%D1%82%D0%B5%20%D1%82%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD’%20%2F%3E%0A%09%0A%09%3Cinput%20type%3D’submit’%20%2F%3E%0A%09%0A%3C%2Fform%3E%0A%0A» message=»Отправка сообщений на почту и в телеграмм» highlight=»» provider=»manual»/]
Заполнив форму и отправив её, можно проследить, что уведомления в телеграмм приходят в несколько раз быстрее чем на почту.
Создаем бесплатный callback-виджет с SMS и Telegram-оповещением
В этой статье мы пошагово создадим виджет обратного звонка с красивой минималистичной анимацией и отправкой уведомлений на почту, на свой номер телефона и в мессенджер Telegram через бота. Виджет подойдет абсолютно для любого сайта на HTML или на любой CMS.
Демонстрацию можно посмотреть по ссылке.
Зачем нужен callback-виджет?
Есть масса сервисов, которые предоставляют различные настраиваемые виджеты обратного звонка — с возможностью подключить АТС, интегрировать с CRM (amoCRM, Битрикс24), с оповещением в Telegram, по СМС и так далее. За такой богатый функционал нужно платить ежемесячно, покупать минуты или выбирать тариф по карману. Стоимость подобных виджетов стартует примерно от 200 рублей в месяц.
Используя виджет, о котором мы поговорим в этой статье, вы получите навечно бесплатное, независимое и настраиваемое под любые нужды решение — с возможностью отправки заявки на почту, в Telegram и по СМС. Также с помощью вебхуков можно подключить отправку данных в CRM (если есть такая возможность на стороне самой CRM).
Минус такого виджета – отсутствие возможности онлайн-звонка. Но, думаю, это не большой минус, а скорее плюс, так как часто менеджеры не успевают ответить на звонок, и компания получает негатив от потенциального клиента. А в случае с виджетом мы принимаем заявку, выводим сообщение о том, что перезвоним в течение определенного времени, и у клиента не возникает негатива. Поэтому минус виджета может быть и плюсом.
Итак, приступим к созданию виджета.
Разметка HTML + CSS
Так как виджет «сквозной» и устанавливается на все страницы, нам необходимо понимать, с какой страницы был заказан обратный звонок, чтобы оперативно помочь клиенту. Для этого нам понадобится скрытое поле в форме, которое будет передавать эту страницу, значение поле должно быть таким:
Второе скрытое поле будет передавать тему заявки — в данном случае это «Обратный звонок».
Теперь добавим небольшой скрипт открытия формы по клику на кнопку. Для этого нам понадобится подключить библиотеку jQuery и написать небольшой скрипт отправки. Если у вас уже подключена библиотека, то этого делать не стоит.
Далее оформим все с помощью CSS. Вы можете добавить этот код в свой файл стилей или создать новый.









