Notifications service Telegram что это

Давненько ничего не писал про свой умный дом. Не потому что прекратил им заниматься, а потому что в последнее время больше занимался реорганизацией и причёсыванием: в ходе ремонта менял временные решения на постоянные и усовершенствовал разную автоматику.

Но вот, наконец-то, настало время разобраться с уведомлениями о события в телеграм. К этой задаче я уже подступался когда-то давно, ещё в самом начале настройки Home Assistant, но с наскоку тогда не получилось, а потом как-то руки не доходили. Осенью 2021го я вернулся к этой теме и обнаружилось, что тут всё довольно просто и странно, что я не сделал ещё раньше. А прорыв гофры в ванной в январские праздники в очередной раз напомнил мне, что состояние датчиков, которые я рассовал по разным углам, нужно не только красиво выводить на панели, но и своевременно о них узнавать, то есть нужны уведомления на телефон, особенно в тех случаях, когда меня нет дома.

Итак, настала пора не только настроить бота в телеграме, но и наладить туда уведомления. И первое, что мы должны сделать:

Telegram Notification ON & OFF

Создаём чат-бота

В ответ бот выдаст список всех команд, с помощью которых можно создать и управлять своим ботом. Начинаем с создания бота:

BotFather запросит имя для этого бота и его юзернейм в телеграм:

Создание бота

Там же в тексте BotFather сообщит токен для взаимодейстия с новым ботом. Этот токен надо сохранить.

Узнаём свой чат ид

Получаем краткую информацию о себе, но нас интересует только числовой ID.

Подключаем бота

Сначала сохраняем наши приватные данные — токен и ID в наши секреты secrets.yaml:

telegram_key: ‘Наш токен от BotFather’
chat_id: ‘Наш ID от userinfobot’

И прописываем настройки интеграции в configuration.yaml:

telegram_bot:
— platform: polling
api_key: !secret telegram_key
allowed_chat_ids:
— !secret chat_id

А так же прописываем настройки уведомлений там же, в configuration.yaml:

notify:
— platform: telegram
name: HassStas
chat_id: !secret chat_id

Всё, после перезапуска HomeAssistant мы получили новую службу notify.hasstas (или ваше название), в которую можно передать заголовок и текст сообщения. Проверить работу можно в панели разработчика, вызвав нашу службу:

Источник: dzen.ru

Как настроить уведомления в Telegram от Icinga2

Добавляем бота под названием BotFather и отправляем ему команду /newbot , выбираем имя, которое будет отображаться в списке контактов и адрес. Например, «My Alert Checker» с адресом «MyPrivateBot».

Еще по теме:  Что такое cpm Телеграмма в авиации

Если адрес не занят, а имя введено правильно, BotFather пришлет в ответ сообщение с токеном — «ключом» для доступа к созданному боту. Его нужно сохранить и никому не показывать.

✅ How To Turn Off Notifications From Groups In Telegram 🔴

Шаг 2. Создание канала

Создаём канал с любым названием и адресом, и переходим в его настройки.

Необходимо добавить в список администраторов созданного нами бота — именно он будет публиковать уведомления в канал.

Шаг 3. Идентификация чата

Отправим в чат любое сообщение, чтобы отследить ID-канала для отправки уведомлений.

После того, как отправили сообщение, выполним curl-запрос, подставив ранее полученный токен для бота.

curl —silent «https://api.telegram.org/bot${TOKEN}/getUpdates»
# curl —silent «https://api.telegram.org/bot521924663:AAH7t61mNpKLOToyIsPm3vFOJ3GNaD9-LSI/getUpdates»
{«ok»:true,»result»:[{«update_id»:731268716,
«channel_post»:{«message_id»:4,»chat»:{«id»:-1001348922431,»title»:»My Alert Checker»,»type»:»channel»},»date»:1516122930,»text»:»ferfe»}}]}

Получаем ID канала — -1001348922431 .

Шаг 4. Настройка Icinga2 для отправки уведомлений в Telegram

Внесем правки в конфигурационные файлы Icinga2.

Добавим нового пользователя

В конфигурационный файл users.conf добавим нового пользователя и впишем полученный ID канала:

object User «mytestuser» {
import «generic-user»

display_name = «Test User»

// The telegram chat ID
vars.telegram_chat_id = «-1001348922431»
}

Создадим правила уведомления в Telegram

Создаем новые правила уведомления в конфигурационном файле notifications.conf и указываем пользователя, который будет получать уведомления:

apply Notification «telegram-icingaadmin» to Host {
import «mail-host-notification»
command = «telegram-host-notification»

users = [ «mytestuser» ]

assign where host.name
}

apply Notification «telegram-icingaadmin» to Service {
import «mail-service-notification»
command = «telegram-service-notification»

users = [ «mytestuser» ]

assign where host.name
}

Добавим скрипт для отправки уведомлений

Создаем скрипт telegram-host-notification.sh в директории scripts для отправки уведомлений по хостам.

#!/bin/sh
if [ -n «$ICINGAWEB2_URL» ]; then
HOSTDISPLAYNAME=»$ICINGAWEB2_URL/host/show?host=$HOSTNAME»>$HOSTDISPLAYNAME»
fi
template=$(cat
$NOTIFICATIONTYPE — $HOSTDISPLAYNAME is $HOSTSTATE

Host: $HOSTALIAS
Address: $HOSTADDRESS
Date/Time: $LONGDATETIME

$HOSTOUTPUT
TEMPLATE
)
if [ -n «$NOTIFICATIONCOMMENT» ]; then
template=»$template
Comment: ($NOTIFICATIONAUTHORNAME) $NOTIFICATIONCOMMENT
«
fi

/usr/bin/curl —silent —output /dev/null
—data-urlencode «chat_id=${TELEGRAM_CHAT_ID}»
—data-urlencode «text=${template}»
—data-urlencode «parse_mode=HTML»
—data-urlencode «disable_web_page_preview=true»
«https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage»

Создаем скрипт telegram-service-notification.sh в директории scripts для отправки уведомлений по сервисам.

#!/bin/sh
if [ -n «$ICINGAWEB2_URL» ]; then
HOSTDISPLAYNAME=»$ICINGAWEB2_URL/host/show?host=$HOSTNAME»>$HOSTDISPLAYNAME»
SERVICEDISPLAYNAME=»$ICINGAWEB2_URL/service/show?host=$HOSTNAME>$SERVICEDISPLAYNAME»
fi
template=$(cat
$NOTIFICATIONTYPE $HOSTDISPLAYNAME — $SERVICEDISPLAYNAME is $SERVICESTATE

Address: $HOSTADDRESS
Date/Time: $LONGDATETIME

$SERVICEOUTPUT
TEMPLATE
)

if [ -n «$NOTIFICATIONCOMMENT» ]; then
template=»$template

Comment: ($NOTIFICATIONAUTHORNAME) $NOTIFICATIONCOMMENT
«
fi

/usr/bin/curl —silent —output /dev/null
—data-urlencode «chat_id=${TELEGRAM_CHAT_ID}»
—data-urlencode «text=${template}»
—data-urlencode «parse_mode=HTML»
—data-urlencode «disable_web_page_preview=true»
«https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage»

Создаем команды для отправки уведомлений

Команды будут выполнять соответствующий скрипт, который вытягивает информацию о проблеме с хостом или сервисом, и curl-запросом отправляет это в Telegram. Определяем собственную конфигурацию команд в файле commands.conf :

object NotificationCommand «telegram-host-notification» {
import «plugin-notification-command»

command = [ SysconfDir + «/icinga2/scripts/telegram-host-notification.sh» ]

env = {
NOTIFICATIONTYPE = «$notification.type$»
HOSTNAME = «$host.name$»
HOSTALIAS = «$host.display_name$»
HOSTADDRESS = «$address$»
HOSTSTATE = «$host.state$»
LONGDATETIME = «$icinga.long_date_time$»
HOSTOUTPUT = «$host.output$»
NOTIFICATIONAUTHORNAME = «$notification.author$»
NOTIFICATIONCOMMENT = «$notification.comment$»
HOSTDISPLAYNAME = «$host.display_name$»
TELEGRAM_BOT_TOKEN = BOT_TOKEN_MUST_BE_HERE
TELEGRAM_CHAT_ID = «$user.vars.telegram_chat_id$»

Еще по теме:  Edited в Телеграмм что значит

// optional
ICINGAWEB2_URL = «https://icinga.example.com/icingaweb2»
}
}

object NotificationCommand «telegram-service-notification» {
import «plugin-notification-command»

command = [ SysconfDir + «/icinga2/scripts/telegram-service-notification.sh» ]

env = {
NOTIFICATIONTYPE = «$notification.type$»
SERVICEDESC = «$service.name$»
HOSTNAME = «$host.name$»
HOSTALIAS = «$host.display_name$»
HOSTADDRESS = «$address$»
SERVICESTATE = «$service.state$»
LONGDATETIME = «$icinga.long_date_time$»
SERVICEOUTPUT = «$service.output$»
NOTIFICATIONAUTHORNAME = «$notification.author$»
NOTIFICATIONCOMMENT = «$notification.comment$»
HOSTDISPLAYNAME = «$host.display_name$»
SERVICEDISPLAYNAME = «$service.display_name$»
TELEGRAM_BOT_TOKEN = BOT_TOKEN_MUST_BE_HERE
TELEGRAM_CHAT_ID = «$user.vars.telegram_chat_id$»

// optional
ICINGAWEB2_URL = «https://icinga.example.com/icingaweb2»
}
}

Перезагружаем сервис и проверяем работу бота. Для примера отключу веб-сервер.

Troubleshooting

Если уведомления не приходят — сперва проверьте правильность всех настроек.
Попробуйте выполнить команду из консоли:

# curl —silent —data-urlencode «chat_id=-1001348922431» —data-urlencode «text=Hello world» «https://api.telegram.org/bot521924663:AAH7t61mNpKLOToyIsPm3vFOJ3GNaD9-LSI/sendMessage»
{«ok»:true,»result»:{«message_id»:5,»chat»:{«id»:-1001348922431,»title»:»My Alert Checker»,»type»:»channel»},»date»:1516124394,»text»:»Hello world»}}

Источник: bogachev.biz

Как работают пуш-уведомления

Пуш-уведомление — это когда у вас на экране телефона появляется информация о чём-то, что произошло только что, например о новом сообщении в мессенджере, о готовности заказа или о том, что курьер вот-вот приедет.

Объясняем, как они работают с технической точки зрения, как прорываются на главный экран и в чём секрет их моментальной доставки. Это для технического и компьютерного кругозора.

Как работают пуш-уведомления

Что особенного в пушах

Когда только появились смартфоны и компьютеры-наладонники, вся работа приложений была изолирована внутри этих приложений. Если у вас был, например, наладонник и на нём было приложение для почты, то узнать о новых письмах можно было, только зайдя в приложение. Как только вы закрывали приложение, оно переставало проверять почту.

Сами приложения могли рисовать какие угодно уведомления — но только пока они работали. И дизайн уведомлений мог быть любым. Никакого централизованного управления не было.

Потом в Blackberry, а позднее во взломанной пиратской iOS появился единый сервис доставки сообщений на экран. Это была единая «труба», по которой любое приложение могло отправить вам сообщение. Это и есть Push-уведомления: ещё один канал, по которому приложение может с вами поговорить, но не внутри себя, а отдельно от себя на уровне операционной системы.

Как работают пуш-уведомления

Что для этого нужно

Чтобы пуш-уведомления заработали, нам понадобится много всякого разного.

Приложение, в котором разработчик сделал поддержку пуш-уведомлений. Не все приложения поддерживают пуши — программист должен сам об этом позаботиться.

Сервер разработчика — именно с него изначально отправляются все пуш-сообщения. Он нужен для того, чтобы все уведомления в приложение приходили из одного источника, которому можно доверять.

Сервер устройства — у Apple и у Google свои серверы, которые управляют уведомлениями на устройствах с iOS и Android. Они отвечают за все уведомления, которые вы получаете на телефоне, следят за настройками безопасности и взаимодействуют с серверами разработчиков.

Идентификатор устройства (токен) — служебный набор букв и цифр, по которому сервер устройства отличает один телефон от другого.

Служба пуш-уведомлений. Эта служба — часть операционной системы и она работает всё время, пока включён телефон. Служба постоянно готова к приёму новых сообщений от сервера устройства, и как только приходит что-то новое, она отправляет пуш в приложение. А приложение дальше само уже смотрит свои настройки и решает, показывать это уведомление на экране или нет.

Еще по теме:  На iPhone 14 про в Телеграмме плохая камера

Приложение и уведомления

Если в приложении запрещены пуш-уведомления, то даже если оно придёт на устройство, то на экране мы ничего не увидим. При этом приложение всё равно продолжит их получать.

Когда мы ставим приложение с поддержкой таких уведомлений, происходит следующее:

  1. Приложение сообщает системе, что оно может получать пуши.
  2. Система отправляет токен на сервер устройства (в Эпл или в Гугл).
  3. Теперь сервер знает, что можно отправлять пуш-уведомления в приложение на это конкретное устройство.

Как работают пуш-уведомления

Регистрация приложения и сервера разработчика

Изначально пуши генерирует не само приложение, а сервер разработчика. Например, если вы пользуетесь «Телеграмом», где-то в интернете есть специальный сервер «Телеграма», который отвечает за пуши.

Сервер разработчика нужно заранее зарегистрировать на сервере устройства — как бы подружить посредников. Сервер разработчиков знает «что отправить», а сервер устройства — «кому». Эти два сервера должны друг друга признать и наладить канал связи.

Интересно, что сервер разработчика не имеет прямого доступа к телефонам получателей. Вместо этого ему выдают специальные анонимные внутренние токены, которые не совпадают с токенами устройства. Грубо говоря:

Как работают пуш-уведомления

  1. Сервер устройства знает, что у Васи Иванова телефон с токеном 12345.
  2. Но сервер устройства не скажет этот токен серверу разработчика.
  3. Вместо этого сервер устройства запомнит, что токену 12345 соответствует внутренний токен abcde .
  4. Именно этот токен abcde сервер устройства сообщит разработчику. Мол, «У меня есть пользователь с токеном abcde , если надо — могу ему отправить пуш. Но кто это — я тебе не скажу».
  5. И уже этот код abcde использует разработчик.

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

Если разработчик хочет отправить вам новое рекламное сообщение о скидках или акциях, он это делает через свой сервер.

Сервер разработчика берёт сообщение, прикрепляет к нему ваш токен и отправляет всё это на сервер устройства. Сервер устройства действует так:

  1. Смотрит, есть ли сервер разработчика в доверенном списке.
  2. Если есть — проверяет, есть ли у него вообще такой токен и можно ли на него отправить пуш.
  3. Если всё в порядке — отправляет пуш-уведомление на телефон.
  4. Служба уведомлений на телефоне получает пуш, смотрит, какому приложению оно предназначено, и сразу же отправляет его туда.
  5. Приложение смотрит в свои настройки и решает — показывать пуш или нет.
  6. Если уведомления включены — в этот же момент мы увидим его на экране телефона.

Вот так всё и работает.

Как работают пуш-уведомления

К чему это

Недавно в «Телеграме» посыпались какие-то настройки пушей, и если у вас стояли на мьюте какие-то каналы, вам могли перестать приходить вообще какие-либо сообщения об их.

Рейтинг
( Пока оценок нет )
Загрузка ...