Что такое телеграм нотификейшен
Перейти к содержимому

Что такое телеграм нотификейшен

  • автор:

Отправка уведомлений в Telegram-бот с помощью FunctionGraph

В этой инструкции описан процесс настройки быстрых уведомлений о состоянии сервисов облака Advanced и отправки их в Telegram-bot. Например, можно организовать работу так, чтобы бот присылал вам уведомления, если потребление vCPU, памяти или диска виртуальной машины превысит заданное пороговое значение.

  • Введение
  • Архитектура решения
  • Создайте топик в сервисе SMN
  • Создайте правило в Cloud Eye
  • Создайте Telegram-бот
  • Создайте функцию в FunctionGraph

Введение

Для настройки и работы быстрых уведомлений потребуются следующие сервисы:

  • Cloud Eye
  • Simple Message Notification
  • FunctionGraph

Архитектура решения

  1. Cloud Eye — сервис мониторинга, отслеживает состояние облачных ресурсов и оповещает о достижении пороговых значений.
  2. При достижении пороговых значений аварийный сигнал приходит в Simple Message Notification — сервис для отправки уведомлений о событиях.
  3. Уведомление из Simple Message Notification становится триггером для запуска функции в FunctionGraph — сервисе для выполнения кода в бессерверной среде.
  4. FunctionGraph отрабатывает функцию и отправляет запрос в Telegram-бот.

Telegram-бот получает данные, записанные в коде функции, и присылает пользователю уведомление.

Создайте топик в сервисе SMN

В этом примере мы создадим оповещение о превышении пороговых значений CPU в сервисе ECS.

  1. Войдите в консоль управления Advanced:
    • через личный кабинет Cloud.ru ;
    • как IAM-пользователь .
  2. Чтобы открыть список сервисов, нажмите Service List .
  3. Выберите Application → Simple Message Notification .
  4. В разделе Topic Management → Topics перейдите к созданию топика — нажмите Create Topic .
  5. Задайте параметры топика:
    • Topic Name — введите название топика, например, «CPU-topic».
    • Enterprise Project — выберите нужный проект или оставьте по умолчанию «default».

Создайте правило в Cloud Eye

В этом примере мы создадим политику оповещения, при которой каждые пять минут опрашивается состояние виртуальной машины ECS, и бот присылает уведомление при достижении ВМ пороговых значений.

  1. В панели управления выберите раздел Management & Deployment → Cloud Eye .
  2. В меню слева выберите Alarm Management → Alarm Rules .
  3. Отметьте нужный облачный сервис и нажмите Create Alarm Rule . Задайте название, настройте политику и уведомления аварийных сигналов:
  4. Name — укажите название сигнала. Например, «CPU-alarm».
  5. Enterprise Project — выберите нужный проект или оставьте по умолчанию «default».
  6. Resource Type — выберите нужный тип ресурса. В нашем примере это Elastic Cloud Server.
  7. Dimension — по умолчанию ECSs .
  8. Monitoring Scope — выберите Specific Resources . В появившемся окне отметьте и переместите нужные ресурсы во второе окно. В этом примере — это виртуальная машина ECS.
  9. Мethod — выберите Configure Manually .
  10. Alarm Policy — установите в поле политику отправки сигналов.
    1. В колонке Metric Name выберите CPU Usage .
    2. Alarm Policy — выберите Raw Data , 3 consecutive periods >= 60 % (укажите нужное процентное значение), Every 5 minutes .
    3. Alarm Severity — оставьте по умолчанию Major .

    Прочие настройки оставьте по умолчанию.

    Cloud Eye будет опрашивать состояние виртуальной машины каждые пять минут и при достижении порогового значения пользовательских метрик отправит уведомление с помощью сервиса Simple Message Notification.

    Создайте Telegram-бот

    Создадим бота, в который будут приходить сообщения.

    1. Установитe BotFather в Telagram.
    2. Введите команду /newbot.
    3. Дайте название боту и укажите сокращенное название.
    4. BotFather пришлет сообщение об успешном создании бота и токен самого бота.

    Создайте функцию в FunctionGraph

    Для работы с функцией в FunctionGraph потребуется готовый архив c функцией.

    1. Перейдите в консоль сервиса Computing → FunctionGraph .
    2. В боковом меню выберите: Functions → Function List .
    3. Нажмите Import Function .
    4. Загрузите ранее скачанный zip-архив с готовой функцией, нажав Select File .
    5. Откроется окно с настройкой функции. Загруженный из архива код отобразится на вкладке Code .
    6. Перейдите на вкладку Configuration , чтобы добавить токен бота. Заполните поля:
    7. Enterprise Project — укажите проект. Выберите тот же проект, к которому принадлежат экземпляры SMN и Cloud Eye.
    8. Environment Variables :
      1. Нажмите Edit .
      2. Из BotFather скопируйте токен бота. Токен находится в сообщении об успешном создании бота и написан после слов «Use this token to access the HTTP API:».
      3. Вставьте токен в поле Value .
      4. Нажмите Save .

      ../_images/s__functiongraph-configuration.png

      Внимание Бот должен быть добавлен в чат непосредственно перед подстановкой токена в адресную строку браузера. В этом случае отобразится необходимая информация о chat_id.

        Вставьте следующий запрос:
      https://api.telegram.org/botYourBOTToken>/getUpdates 

      Пример отображения запроса с подставленным токеном:

      https://api.telegram.org/bot5555555:AAGspBtbjz4FXTRA1O8sg11hfgfjgT6NWA/getUpdates 

      Появится текст с данными бота.

      1. Нажмите Ctrl + F / Cmd + F (для Mac OS) для поиска по слову «сhat». ID групп всегда начинается с минуса — . Например, «-99999999».
      2. Скопируйте ID вместе со знаком минуса.
      1. Пролистайте код до конца страницы.
      2. Найдите строку с текстом «chat_id».
      3. Вставьте скопированный chat_id в код функции в соответствующей строке. Нажмите Save над окном редактирования.

      Пример кода после подстановки chat_id

      data =  "chat_id": -99999999, #"text": os.environ["TEXT"], "text": text, "parse_mode": "HTML" > 
      • Выберите Trigger Type — «Simple Message Notification».
      • Выберите Topic Name — название ранее созданного топика SMN.
      • Нажмите OK .

      Функция настроена для отправки оповещений.

      Запустите нагрузочное тестирование для нужного параметра, чтобы проверить работу оповещений. Для этого можно использовать инструмент Cloud Performance Test Service.

      Работа с Telegram нотификатором

      Подключив Telegram нотификатор, вы будете получать уведомления о всех входящих сообщениях от клиентов и исходящих сообщениях операторов в Телеграм. Кроме того, вы можете добавить нотификатор в рабочую группу, чтобы сообщения были видны всем ее участникам.

      Подключение “Уведомления в Telegram”

      1. Перейти в настройки проекта.

      меню панели Teletype App

      2. Выбрать “Уведомления в Telegram” в разделе “Интеграции”.

      настройки: уведомления в Telegram

      3. Нажать “Добавить уведомления в Telegram в тариф”.

      добавление уведомления в Telegram в тариф

      4. Скопировать имя бота и поиске Telegram ввести его

      имя бота для Уведомления вTelegram

      5. Перейти в Telegram и в левом меню выбрать Создать группу

      Создать группу в Telegram

      6. Ввести Название группы и нажать кнопку Далее

      ввести название группы в Telegram

      7. Добавить участников группы

      8. Вставить скопированное имя бота в строку поиска, нажать на предложенного бота, нажать кнопку Создать

      создать бота, добавить участников

      9. После этого в списке ваших диалогов в Telegram появится данная группа

      группа в списке диалогов

      10. Перейти в панель и скопировать специальный код в формате /auth_me [цифра]

      скопировать код для подключения

      11. Открыть Telegram, вставить скопированный код в поле ввода сообщения и отправить его в беседу.

      код для подключения в Telegram

      12. Ваш нотификатор подключен

      нотификатор подключен

      Примеры нотификаций

      примеры Уведомления в Telegram

      Важная информация

      Telegram нотификатор возможно подключить только владельцу проекта.

      Узнайте больше для чего нужен Telegram нотификатор, чем он может помочь руководителю и операторам из нашей статьи (Внутренний чат для операторов и менеджеров от Teletype).

      Настройка уведомлений Telegram

      bg-picture

      Телеграм информирует пользователей о входящих звонках и сообщениях с помощью звуков, вибросигналов и всплывающих окон. Эта функция позволяет быть в курсе активности в чатах и оперативно реагировать на события. Давайте рассмотрим, как работать с уведомлениями в мессенджере.

      Первый шаг – заходим в раздел «Настройки»

      Большинство людей сидят в мессенджере Telegram через телефон, однако, помимо мобильной есть ещё компьютерная версия Телеграм. На каждом устройстве папка «Настройки» находится в разных местах, поэтому давайте разберемся, как найти этот раздел на телефоне и компьютере.

      Если у вас Android, то нажмите на иконку с тремя горизонтальными линиями, которая расположена в верхнем левом углу мессенджера, а затем кликните по кнопке «Настройки». Для ПК или ноутбука все действия аналогичны. Владельцам смартфоном iPhone достаточно просто нажать на иконку в нижней части экрана.

      Чтобы изменить параметры отображения оповещений и их содержимое, а также включить или выключить звук, нужно открыть раздел «Уведомления и звук». Так он называется в мобильной версии. Если вы заходите через ПК, то папка будет называться «Уведомления».

      Второй шаг – выбираем нужные параметры и изменяем их под себя

      Телеграм позволяет настраивать множество параметров. Для удобства они разделены по категориям. Давайте рассмотрим каждый из них.

      Уведомления в Телеграмм о сообщениях. Здесь настраиваются личные чаты, группы и каналы. Доступны несколько параметров для сообщений: показ оповещений, показ текста и настройка звука. Для каждого чата можно выбрать свою мелодию. Если вы хотите выделить какого-то конкретного пользователя, на которого не будут распространяться глобальные настройки, то воспользуйтесь разделом «Исключения».

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

      Счетчик на иконке. В этом разделе осуществляется настройка уведомлений на иконке приложения, которая находится на рабочем столе. Отображаться могут каналы или число сообщений. В этом же разделе есть возможность настроить оповещения о новых контактах. Они появляются, если кто-то из контактов пользователя зарегистрировался в мессенджере. В нижней части окна находится кнопка «Сбросить настройки». Используйте ее, чтобы вернуть первоначальные настройки.

      ЛАЙФХАК. В Telegram немало надоедливых бесед, поэтому любому пользователю будет полезно узнать, как, подписываясь на каналы, отключить оповещения. Решить эту проблему можно в один клик. Для этого нужно удерживать чат, а когда появится меню выбрать пункт «Выключить».

      Теперь вы знаете, как работать с уведомлениями в Телеграм и можете использовать мессенджер с максимальным контролем и комфортом. Удачи!

      Привязываем

      Нужно всего лишь открыть ссылку — telegram.me/PushAllBot и написать боту все что угодно.
      В ответ он даст ссылку, по которой нужно перейти для установки связи.

      После перехода вам предложат авторизироваться, если вы еще не вошли в систему, либо будет выведено сообщение, что устройство привязано.

      • Невозможность последующей модификации уведомлений
      • Невозможность отслеживания доставки (возможно временно)
      • Невозможность присылать иконку к сообщению (передавать каждый раз файл с картинкой так себе вариант)

      Технические детали

      Работает все достаточно просто.
      Тут есть документация по API.
      Я создал бота командой /newbot и следовал инструкциям, дальше задал пикчу, командой /setuserpic
      Используя полученный токен, я привязал Webhook для получения сообщений.
      Тут нужно понять одну небольшую вещь: если вы работаете с PHP вы не получите данные в переменной $_POST.
      Данные JSON можно получить при помощи команды:

      file_get_contents('php://input') 

      А дальше уже можно парсить JSON ответ.
      Отправка идет по ID чата. Оно же равно ID пользователя.
      Я не нашел каких-либо ограничений на использование API или кол-во отправки сообщений. Поэтому данная функция будет еще долго тестироваться. Как минимум, мне не нравится, что для каждого сообщения нужно делать отдельный запрос. Это значит, что мне либо придется делать их в несколько потоков по несколько сотен в секунду, либо делать их по очереди. А обработка каждого занимает около 50-100 мс, что достаточно долго. Если же еще там есть какие-либо ограничения, я могу столкнуться с проблемой, когда я смогу разослать 1000 уведомлений лишь за несколько минут.

      Примерно так работает Webhook у меня:

      $gram=json_decode(file_get_contents('php://input'),true); $message='Привет, ' .$gram['message']['chat']['last_name'].' ' .$gram['message']['chat']['first_name'].'. Твой ID в Telegram: ' .$gram['message']['chat']['id']; file_get_contents('https://api.telegram.org/botTOKEN/sendMessage?chat_id=' .$gram['message']['chat']['id'].'&text=' .urlencode($message)); 

      Как мне кажется, можно делать неплохих ботов для «слепого» чата. Когда собеседники ничего не знают друг о друге. Через Redis сделать взаимодействие. При приеме сообщения через Webhook отправлять сообщение другому ожидающему сообщение. После создания связи — пересылать сообщения используя разные chat_id пользователей.

      API у Telegram оказалось очень простым. Никаких аккаунтов разработчика и тому подобное — не нужно. Создаешь бота сразу получаешь токен, сразу работаешь с API.

      • Блог компании PushAll
      • Веб-разработка
      • API

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *