Многие проекты используют нотификацию. Некоторые отправляют сообщения на почту, другие в Telegram, Slack и прочее. Сообщения - отличный вариант сообщить о новом заказе, комментарии, материале на сайте или происхождении какого-то события. Для многих вариантов используются библиотеки. Но вот для текстового сообщения в телеграм такое не нужно. Достаточно открыть прямую ссылку с нужными параметрами и сейчас я покажу как это сделать, начиная от создания самого канала и до отправки сообщения.
Создаем канал в который бот будет слать сообщение
Почему канал, а не напрямую человеку? Потому что вам не нужно будет переделывать алгоритм, если нотификации должно видеть несколько человек. Не понадобится лезть в код добавляя или удаляя участников. Вы все это сможете сделать в самом телеграмме будучи администратором.
Чтобы создать канал, идем в левое меню, со значком трех полосок и нажимаем "Создать канал"
Задаем название канала, выбираем тип "Публичный" и вводим ссылку по которой он будет доступен. Канал можно позже закрыть, но это самый простой вариант пригласить бота сразу.
Создаем бота
Идем на бота @BotFather, если он у вас не добавлен то в поиске так и вводите "@BotFather", после чего пишете ему сообщение:
/newbot
После этого бот вам должен ответить сообщением:
Alright, a new bot. How are we going to call it? Please choose a name for your bot.
На которое вы вводите название бота, в моем случае пусть будет MyLaravelClub. В ответ бот спросит техническое имя бота. Оно должно быть с приставкой bot в конце, а значит я просто отвечаю сообщением MyLaravelClubBot.
Если вы не попали на уже существующее имя, бот ответит вам сообщением:
Done! Congratulations on your new bot. You will find it at t.me/MyLaravelClubBot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
Use this token to access the HTTP API:
nnnnnnnn:MMMMMMMMMM
Keep your token secure and store it safely, it can be used by anyone to control your bot.For a description of the Bot API, see this page: https://core.telegram.org/bots/api</p>
В этом сообщении nnnnnnnn:MMMMMMMMMM это токен обращения к боту и он нам, как раз будет нужен. Переходим по указанной в сообщении ссылке, в моем случае это t.me/MyLaravelClubBot. В вашем случае будет имя вашего бота. Вместо отправки сообщения будет кнопка с надписью Запустить. Ее и нажимаем, запуская бота.
Приглашаем бота на канал и получаем идентификатор по которому будем писать от имени бота.
Переключаемся в телеграмме на наш канал, жмем на три точки в правом верхнем углу и жмем пункт "Добавить участников". После этого вводим имя нашего бота, это MyLaravelClubBot, в моем случае.
Телеграм предупредит что бота можно добавить только как администратора, на что соглашаемся, нажимая Назначить.
Следующий экран спрашивает какие права управления каналом стоит назначить боту. В нашем случае это не важно, оставляем как предложено по умолчанию.
Нажимаем Сохранить.
Самое время, если сообщение на канале от бота личные и никто не должен их видеть кроме тех кого вы сами пригласили на канал, то меняем тип канала в настройках(правый верхний угол - три точки). Меняем с Публичный на Частный и жмем кнопку Сохранить. Токен бота у нас есть, нужно теперь получить ID нашего канала. На нашем канале пишем сообщение от себя, любого содержимого, например "hello, world!".
Открываем браузер и переходим по ссылке https://api.telegram.org/bot<Bot_token>/getUpdates , в ней <Bot_token> заменяем нашим токеном бота, полученным от @BotFather, которое в сообщении я указал выше как nnnnnnnn:MMMMMMMMMM
"channel_post":{"message_id":6,"sender_chat":{"id":-1001111111111,"title":"MyLaravelClub","type":"channel"},"chat":{"id":-1001111111111,"title":"MyLaravelClub","type":"channel"},"date":1639177800,"text":"hello, world!"}}
В этом сообщении нас интересует "id":-1001111111111. Где число вместе со знаком и будет искомым идентификатором нашего канала. Теперь у нас есть все что нужно, а отправить сообщение можно прямой ссылкой вида:
https://api.telegram.org/bot<Bot_token>/sendMessage?chat_id=<id>&text=Привет%20мир
В ссылке меняем параметры на полученные нами, где вместо <Bot_token> подставляем наш токен бота, а вместо <id> - полученное числовое значение, id нашего чата. В нашем случае:
https://api.telegram.org/botnnnnnnnn:MMMMMMMMMM/sendMessage?chat_id=-1001111111111&text=Привет%20мир
После перехода по ссылке видим сообщение от бота в нашем канале:
Отправляем сообщение из PHP и/или Laravel
Теперь все просто, осталось лишь в нужном куске кода вызвать переход по ссылке. Сделать это просто следующим образом:
//ID канала куда отправляем
$idChannel = '-100111111111';
//токен бота которым отправляем сообщение
$botToken = 'nnnnnnnnn:MMMMMMMMMM';
//наше импровизированное сообщение
$message = "Статистика заказов за сутки: "
." \n\nВсего: заказов 99";
//кодируем его, чтобы сохранить переносы строк
$message = urlencode($message);
//после этого отправляем
try {
file_get_contents("https://api.telegram.org/bot$botToken/sendMessage?chat_id=$idChannel&text=".$message);
}
catch (\Exception $e){
}
Я специально обернул в конструкцию try - catch, чтобы сообщение в случае какого-либо сбоя не выбивало скрипт. В том случае, если вы отправляете несколько сообщений и из-за падения первого не доставляться и остальные.
Вот и вся отправка сообщений в телеграм канал ботом.
Отзывы
Пока нет комментариев
Для того чтобы оставить комментарий, авторизуйтесь.