13 сентября 2019 PHP Telegram
Что если сообщения с сайта будут приходить не только на ваш e-mail, но и моментально в мессенджер телеграм. Удобно же! Нужно было реализовать такой функционал, ну как и всегда все оказалось довольно просто.
Так же стояла задача отправлять сообщения не только владельцу сайта, но и дублировать их в группу сотрудников компании.
Было решено создать телеграм бота, который будет принимать данные с помощью API и отправлять их пользователям.
Шаг 1. Создание телеграм бота
Боты в Telegram создаются через другого специального бота @BotFather. Нужно найти его и отправить ему команду /start.
Для создания нового бота отправляем следующую команду /newbot. После чего бот запросит имя вашего нового бота, оно обязательно должно заканчиваться на Bot. В случае успеха в ответ получаем уникальный токен бота, который понадобится для дальнейшей работы. И не забудьте добавить вновь созданного бота в ваши контакты отправив ему команду /start
Шаг 2. Получить токен и chat id бота
Чтобы отправить сообщение пользователю через бота достаточно вызвать определенный URL из PHP скрипта содержащий токен бота и внутренний ID чата chat id.
Токен бота у нас уже есть, а chat id можно получить 2 способами:
- Написать боту @ShowJsonBot любой текст. В ответ он вернет вам некие данные в JSON формате. Находим объект chat и в нем id — это и есть ваш chat id.
- В адресной строке ввести https://api.telegram.org/bot/getUpdates где — это ранее полученный токен вашего бота. Находим объект chat и в нем id — это и есть ваш chat id.
Шаг 3. Разработка PHP скрипта для отправки сообщений в Telegram
Чтобы бот отправил сообщение, нужно сделать запрос к определенному URL содержащему токен бота, ваш chat id и значение text — текст, который бот выведет пользователю. Проверить работоспособность можно и напрямую через адресную строку браузера. Пример строки:
https://api.telegram.org/bot/sendMessage?chat_id=&text=
— это токен вашего бота, — ваш chat id и — это текст сообщения.
Запрос к URL будем делать с помощью cURL :
// токен бота define('TELEGRAM_TOKEN', '123456789:XXXXXXXXXXXXXXXXXXXXXXX'); // ваш внутренний ID define('TELEGRAM_CHATID', '123456789'); $message = 'Сообщение'; $ch = curl_init('https://api.telegram.org/bot'.TELEGRAM_TOKEN.'/sendMessage?chat_id='.TELEGRAM_CHATID.'&text='.$message); // URL curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Не возвращать ответ curl_exec($ch); // Делаем запрос curl_close($ch); // Завершаем сеанс cURL
Как видите все довольно просто. В переменной $message
можно передавать любой текст, который будет отправляться ботом пользователю.
Прокси для телеграм бота
В связи с блокировкой телеграм возможно сообщения не будут отправляться, так как скрипт не сможет запросить нужный URL. Для этого можно воспользоваться прокси сервером.
Прокси сервера можно найти на сайтах-списках прокси или купить. Чтобы соединиться через прокси-сервер в параметрах вызова cURL добавляем несколько строк
curl_setopt ($ch, CURLOPT_PROXY, "127.0.03.1:8080"); curl_setopt ($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
Где 127.0.03.1:8080
— это адрес и порт прокси-сервера и CURLPROXY_SOCKS5
— это тип соединения, в данном случае SOCKS5
Добавить бота в группу телеграм
Чтобы бот мог отправлять сообщения в группу, необходимо его туда добавить. Сделать это можно в настройках группы в разделе Добавить участника. В поиске необходимо ввести имя вашего бота и нажать OK.
Теперь в настройках скрипта нужно изменить chat id пользователя, на chat id нужной группы. Для этого предварительно нужно написать любое сообщение в чат, а затем в адресной строке ввести https://api.telegram.org/bot/getUpdates где — это ранее полученный токен вашего бота. После находим объект chat и в нем id — это и будет chat id группы.
Заключение
Как видите отправлять сообщения в телеграм не так уж и сложно. А пример PHP скрипта приведенный здесь, можно модернизировать под любые нужны.
А если немного изучить документацию, по аналогии можно создавать аналогичных ботов для приема заявок с сайта в Viber или например ВКонтакте.