Отправка сообщения в Telegram из Powershell

Уведомления давно стали неотъемлемой частью жизни и общения современных людей и уж точно айтишников. Всем нам хочется знать побольше, а особенно когда, что и где случилось, кто виноват и вообще…
Для мира IT часто бывает что в систему или малую её часть никто давно не заглядывал, по причине того что всё работает корректно и не приходит ни одного уведомления о сбоях. И как гласит золотое правило системного администратора — «не трогай пока работает».
И вот что бы вот так можно было «не трогать», необходимо точно знать что система выполняет возложенные на неё требования. Для этого можно просто настроить уведомления при каждом выполнении алгоритма. Один из удобных вариантов канала уведомлений является легендарный Telegram. Я использую его и в личных целях и как рабочий инструмент.
Несмотря на попытки обходить стороной системы и решения на базе Windows, задачи всё равно попадаются. А уж если делать, то делать качественно. Как и обычно когда была реализована логика скрипта решил разбавить функционал такой штукой как уведомление.
Так как у меня есть свой бот, то логично использовать именно его.
Сразу приведу код части скрипта, который отвечает за отправку сообщений

$token = "256070243:AAHSHonjepm7mzR6TOKENHERE"
$chat_id = "-223344556"
$text = "Notice from <b>$hostname</b>!
Release version <b>$version</b> was deployed.
Script execution time is <b>$Duration</b>.
Additional information is available in <i>C:\debug.log</i> file."

$payload = @{
    "chat_id" = $chat_id;
    "text" = $text;
    "parse_mode" = 'html';
}

Invoke-WebRequest `
    -Uri ("https://api.telegram.org/bot{0}/sendMessage" -f $token) `
    -Method Post `
    -ContentType "application/json;charset=utf-8" `
    -Body (ConvertTo-Json -Compress -InputObject $payload)

Немного пояснений
$token — специальный токен, присваиваемый боту при создании
$chat_id — айдишник контакта, канала или группы
$text — тут понятно, текст сообщения

Переменные $hostname, $version и $Duration у меня были определены в скрипте. Тут решил их оставить, что бы показать что из можно оформлять жирным шрифтом и курсивом.
parse_mode = ‘html’ как раз позволяет это делать. Есть ещё мод markdown. В нем принципы форматирования немного отличаются.

Как мне кажется этого вполне достаточно. Всякие красивости и стикеры это однозначно весело, но для системных уведомлений жирного и курсива вполне достаточно.

Добавить комментарий