» » » Как отправить сообщение в Telegram из PowerShell

Как отправить сообщение в Telegram из PowerShell

22 март 2019, Пятница
855
0
+ 0 -
Уведомления, получаемые от систем мониторинга, стали неотъемлемой частью специалистов занимающихся сопровождением информационных систем. Однако, мир не стоит на месте и все чаще появляются новые способы оповещения. К традиционным средствам оповещения о состоянии информационных систем: электронная почта и SMS добавились новые средства доставки уведомлений, такие как мессенджеры. Наибольшей популярностью, для этой цели, у системных администраторов стал мессенджер Telegram. А в системах мониторинга появилась возможность настраивать интеграцию с мессенджерами, с целью оперативной рассылки уведомлений.
Но что делать если централизованной системы мониторинга нет, или в ней нет особой необходимости, а потребность получать уведомления в Telegram есть.
Ниже описан один из способов пошаговой настройки для отправки сообщений в Telegram используя PowerShell.

1. Что такое бот и как создать своего бота Telegram
Что такое бот Telegram? Боты — это специальные аккаунты в Telegram, созданные для того, чтобы автоматически обрабатывать и отправлять сообщения. Чтобы создать своего бота, необходимо: 
  • используя свой аккаунт Telegram написать специальному служебному боту @BotFather команду "/Start" или любое сообщение - в ответ придет список доступных команд.
  • отправить команду /newbot - и ввести уникальное название бота, а затем идентификатор, который обязательно должен заканчиваться символами "bot". 
Допустим наш бот будет называться UserMan.ru и иметь идентификатор UserManRu_bot.
В ответ придет уникальный token для созданного бота, который будет использоваться при отправке сообщений.
Например боту UserManRu_bot был присвоен токен: 819090298:AAGjXP6QLPMkem9t2LflIHOAiE_Q58bA43g

2. Создать в группу в Telegram и получить ее идентификатор
Для получения идентификатора группы необходимо создать новую группу в Telegram (или использовать имеющуюся группу) и добавить туда созданного бота UserManRu_bot. А для получения идентификатор учетной записи следует отправить боту UserManRu_bot сообщение /Start и любое тестовое сообщение.

Затем необходимо проверить историю обращений которые были к боту, используя запрос ниже: 
https://api.telegram.org/bot<токен>/getUpdates
В случае с ботом UserManRu_bot это будет:
https://api.telegram.org/bot819090298:AAGjXP6QLPMkem9t2LflIHOAiE_Q58bA43g/getUpdates

В результате мы увидим уникальный идентификатор пользователя (наш идентификатор), он нам понадобится при отправке сообщений
А также уникальный идентификатор группы
{"ok":true,"result":[{"update_id":146972760, "message":{"message_id":2,"from":{"id":172489755,"is_bot":false,"first_name":"Test","last_name":"Test","username":"mynick","language_code":"en"},"chat":{"id":172489755,"first_name":"Test","last_name":"Test","username":"mynick","type":"private"},"date":1553259454,"text":"Test"}},{"update_id":146975361, "message":{"message_id":3,"from":{"id":172489755,"is_bot":false,"first_name":"Test","last_name":"Test","username":"mynick","language_code":"en"},"chat":{"id":-347310642,"title":"UserMan.ru","type":"group","all_members_are_administrators":true},"date":1553257968,"group_chat_created":true}}]}

Из этого набора символов в формате JSON определяем ID пользователя, который отправил сообщение "Test": 172489755
 и Id группы в которую добавили бота: -347310642

3. Сформировать строку Web запроса
Чтобы написать от имени бота пользователю и в группу telegram, необходимо 3 параметра:
  • token — Уникальный идентификатор, который был получен при создании бота
  • chat_id — уникальный идентификатор пользователя или группы. Он определяется запросом getUpdates
  • text — текст сообщения, которое необходимо направить
В итоге задача сводится к тому, чтобы выполнить следующий Web запрос:
https://api.telegram.org/bot<token>/sendMessage?chat_id=<chat_id>&text=<text>
Например, отправка сообщения Hello в группу с идентификатором -347310642 от имени бота UserManRu_bot будет выглядеть так:
https://api.telegram.org/bot819090298:AAGjXP6QLPMkem9t2LflIHOAiE_Q58bA43g/sendMessage?chat_id=-347310642&text=Hello

Вставляем этот запрос в адресную строку браузера и переходим по ссылке. Сообщение Hello lолжно прийти сообщение в группу.

4. Сформировать скрипт для отправки сообщения
Чтобы сформировать и выполнить Web запрос выше, используя PowerShell, потребуется небольшой скрипт. Пример скрипта показан ниже:
$token = "819090298:AAGjXP6QLPMkem9t2LflIHOAiE_Q58bA43g"
$chat_id = "-347310642"
$text = "Hello World!"
$URI = "https://api.telegram.org/bot" + $token + "/sendMessage?chat_id=" + $chat_id + "&text=" + $text
$Request = Invoke-WebRequest -URI ($URI) 
После выполнения данного скрипта на группу придет сообщение присвоенное переменной $text.

Чтобы прислать сообщение не на группу, а конкретному пользователю в переменной $chat_id необходимо указать идентификатор пользователя.
ID чата всегда начинается со знака минус, а ID пользователя всегда без знака минус

5. Использование Proxy для отправки запроса
Если вы используете в своей сети прокси сервер или ваш провайдер запрещает доступ к telegram, то можно добавить к PowerShell командлету Invoke-WebRequest параметр -Proxy с указанием прокси сервера и порта, с которых разрешен доступ к Telegram. В этом случае скрипт будет иметь вид:
$token = "819090298:AAGjXP6QLPMkem9t2LflIHOAiE_Q58bA43g"
$chat_id = "-347310642"
$text = "Hello World!"
$URI = "https://api.telegram.org/bot" + $token + "/sendMessage?chat_id=" + $chat_id + "&text=" + $text

$Request = Invoke-WebRequest -URI ($URI) -Proxy "http://134.19.218.94:3128"
Где, 134.19.218.94:3128 - это один из примеров открытого прокси сервера.

Комментарии:
Прокомментировать
Кликните на изображение чтобы обновить код, если он неразборчив
При использовании материалов ссылка на сайт UserMan.ru обязательна. UserMan.ru © 2017-2019
Мы в Соцсетях: