VMmanager
Документация — ваш лучший друг?
Поделитесь мнением и пройдите небольшой опрос
Пройти опрос

Отправка уведомлений в Telegram

Вы можете использовать мессенджер Telegram для получения уведомлений о состоянии инфраструктуры. Для отправки уведомлений платформа использует Telegram-бота.

Бот — это приложение, которое может отправлять сообщения в общий чат или лично пользователю Telegram. Платформа взаимодействует с ботами через API Telegram. Для авторизации используется уникальный токен бота. При настройке уведомлений вы сможете выбрать чаты, в которые бот будет отправлять сообщения.

Чтобы настроить отправку уведомлений в Telegram:

  1. Создайте бота в Telegram.
  2. Подключите бота к платформе.
  3. Добавьте Telegram в качестве канала уведомлений.

Настройка на стороне Telegram

  1. Откройте диалог с ботом @BotFather.
  2. Отправьте команду /newbot.
  3. Введите название бота. Например, Notify Me.
  4. Введите уникальное имя пользователя для бота. Оно должно оканчиваться сочетанием "bot". Например, notifyme876bot.
  5. Сохраните значение токена из ответа.
  6. Чтобы бот мог отправлять сообщения в группу Telegram:

    1. Добавьте бота в группу. 
    2. Введите любую команду в чате группы. Например, /start.
  7. Чтобы бот мог отправлять сообщения пользователю Telegram, пользователь должен открыть диалог с ботом и нажать Запустить.

Пример создания бота

Настройка на стороне платформы

Подключение бота

  1. В правом меню нажмите значок → вкладка Мессенджеры → кнопка Подключить мессенджер.
  2. Вставьте Токен Бота.
  3. Нажмите кнопку Активировать.
  4. Выберите нужные чаты для отправки уведомлений.
  5. Выберите Язык сообщений.
  6. Нажмите кнопку Сохранить.

Чтобы изменить настройки подключения к боту, нажмите значок рядом с надписью Чаты мессенджеров → введите Токен Бота → кнопка Сохранить.

Чтобы удалить настройки подключения к боту, нажмите значок рядом с надписью Чаты мессенджеров → кнопка Удалить бота.

Управление чатами

Чтобы управлять чатами, в которые бот отправляет сообщения, в правом меню нажмите значок  → раздел Мессенджеры. Чатами могут быть группы и отдельные пользователи Telegram.

Перед добавлением чата добавьте в него бота и отправьте ему любую команду. Например, /start.

Чтобы добавить чат:

  1. Нажмите кнопку Добавить чат.
  2. Выберите Язык сообщений.
  3. Укажите произвольное Имя чата.
  4. Выберите чат из списка или Введите ID чата.
  5. Укажите произвольное Примечание для чата.
  6. Нажмите кнопку Добавить. Если чат добавлен успешно, в него должно поступить тестовое сообщение от бота.

Чтобы изменить настройки чата, нажмите значок в строке с чатом.

Чтобы включить или отключить отправку сообщений в чат, нажмите переключатель в строке с чатом.

Чтобы удалить чат, нажмите значок в строке с чатом.

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

Чтобы использовать Telegram в качестве канала уведомления:

  1. Перейдите в раздел Центр уведомлений. Для этого в правом меню нажмите значок  → Настройка уведомлений.
  2. Нажмите на название уведомления.
  3. Выберите чаты Теlegram в поле В каналы мессенджеров.

  4. Нажмите кнопку Сохранить.

Особенности работы с супергруппами Telegram

В некоторых случаях Telegram может изменить статус вашей группы на супергруппу. Например, если группа стала публичной или в ней более 200 участников. При изменении статуса группы её id изменится, и уведомления не будут отправляться. Чтобы возобновить отправку уведомлений,  укажите новый id в настройках чата. 

Вы можете узнать id супергруппы с помощью бота @getmyid_bot.

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

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

По умолчанию платформа одновременно отправляет не более пяти уведомлений в Telegram. Чтобы изменить этот параметр:

  1. Подключитесь к серверу с платформой по SSH.
  2. Перейдите в контейнер с сервисом отправки сообщений: 

    Команда для VMmanager 6
    docker exec -it msgsender bash
    Команда для DCImanager 6
    docker exec -it dci_msgsender_1 bash
  3. Добавьте в секцию [program:msgs_writer] конфигурационного файла /etc/supervisord.conf.d/msgsender.conf параметр:

    environment=TELEGRAM_TASK_LIMIT=<number>
    Пояснения
    Не рекомендуем устанавливать значение параметра <number> выше 10. Это может привести к блокировке бота со стороны Telegram.
  4. Выполните команду: 

    supervisorctl update
  5. Выйдите из контейнера: 

    exit

Чтобы проверить работу одновременной отправки сообщений:

  1. Подключитесь к серверу с платформой по SSH.
  2. Подключитесь к базе данных платформы: 

    В связи с поэтапным переходом платформы на использование СУБД PostgreSQL, разные экземпляры VMmanager могут использовать разные СУБД:

    • VMmanager Hosting — MySQL;
    • VMmanager Infrastructure:
      • для новых установок на ОС Astra Linux, начиная с версии VMmanager 2023.06.1 — PostgreSQL;
      • в остальных случаях — MySQL.

    Чтобы определить тип СУБД, выполните на сервере с платформой команду: 

    docker ps --filter name=pgsql
    Пример ответа
    CONTAINER ID   IMAGE         COMMAND                  CREATED      STATUS      PORTS      NAMES
    3213c5dc94d0   postgres:12   "docker-entrypoint.s…"   5 days ago   Up 4 days   5432/tcp   pgsql

    Если вывод команды содержит информацию о контейнере, платформа использует PostgreSQL, если ответ пустой — MySQL.

    Команда для VMmanager 6 c СУБД MySQL
    docker exec -it mysql bash -c "mysql isp -p\$MYSQL_ROOT_PASSWORD"
    Команда для VMmanager 6 c СУБД PostgreSQL
     docker exec -it pgsql bash -c "psql -d isp"
    Команда для DCImanager 6
    docker exec -it mysql bash -c "mysql auth -p\$MYSQL_ROOT_PASSWORD"
  3. Выполните запрос: 

    SELECT id, name, lock_tag from taskmgr_task WHERE name = 'msgsender_telegram_send' ORDER BY id desc LIMIT 10;

    Число в столбце lock_tag показывает номер сообщения в очереди.

    Пример ответа
    +-------+-------------------------+--------------------------------+
    | id    | name                    | lock_tag                       |
    +-------+-------------------------+--------------------------------+
    | 11493 | msgsender_telegram_send | ["msgsender_telegram_send.6"]  |
    | 11492 | msgsender_telegram_send | ["msgsender_telegram_send.5"]  |
    | 11485 | msgsender_telegram_send | ["msgsender_telegram_send.4"]  |
    | 11484 | msgsender_telegram_send | ["msgsender_telegram_send.3"]  |
    | 11483 | msgsender_telegram_send | ["msgsender_telegram_send.2"]  |
    | 11482 | msgsender_telegram_send | ["msgsender_telegram_send.1"]  |
    | 11481 | msgsender_telegram_send | ["msgsender_telegram_send.7"]  |
    | 11480 | msgsender_telegram_send | ["msgsender_telegram_send.10"] |
    | 11479 | msgsender_telegram_send | ["msgsender_telegram_send.9"]  |
    | 11478 | msgsender_telegram_send | ["msgsender_telegram_send.8"]  |
    +-------+-------------------------+--------------------------------+
  4. Выйдите из консоли БД: 

    \q

Может быть полезно
Связанные статьи: