Skip to content

Smiley-k/wait_assignat_specialist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

wait_assignat_specialist

script that tracks the of specialist assignation time, specialist has not been appointed, sends notification in a telegram.

Документация скрипта мониторинга заявок GLPI

Назначение

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

Основные функции

  1. Мониторинг заявок в указанных категориях
  2. Проверка времени бездействия заявок
  3. Отправка уведомлений в Telegram-чат
  4. Сохранение истории отправленных уведомлений
  5. Рекомендации по ответственным специалистам

Логика работы

1. Инициализация

  • Загрузка конфигурации из переменных в начале скрипта
  • Установка соединения с GLPI API (initSession)
  • Настройка логирования

2. Получение списка заявок

sequenceDiagram
    Скрипт->>GLPI API: Запрос заявок по критериям
    GLPI API-->>Скрипт: Список заявок
Loading

Критерии выборки:

  • Категории из ITIL_CATEGORY_IDS
  • Статус "Новая" (значение 1)
  • Обязательные поля: ID, дата создания, назначенные пользователи/группы и др.

3. Обработка каждой заявки

Для каждой заявки выполняется:

3.1. Проверка категории

  • Заявки фильтруются по ITIL_CATEGORY_IDS
  • Для несоответствующих категорий заявка пропускается

3.2. Проверка времени

  • Вычисляется время с момента создания заявки
  • Если время превышает WAIT_MINUTES минут → обработка дальше
  • Иначе → заявка пропускается

3.3. Проверка назначения

  • Если нет назначенного пользователя (users_id_assign = 0)
  • И группа не в исключениях (EXCLUDED_GROUP_IDS)
  • И уведомление еще не отправлялось → готовим уведомление

4. Формирование уведомления

Для каждой подходящей заявки:

  1. Получение дополнительной информации:

    • Название категории
    • Местоположение
    • Данные инициатора
    • Возможные ответственные (из CATEGORY_RESPONSIBLES)
  2. Формирование сообщения в формате:

⚠️ <Название заявки> (#<ID заявки>)

Категория: <Название категории>
Приоритет: <Уровень приоритета>
Инициатор: <ФИО/логин>
Местоположение: <Локация>
Создана: <Дата создания>
Прошло времени: <Время с создания>

Статус: Без назначенного специалиста более X мин.

Возможные ответственные: <Список ответственных>

5. Отправка в Telegram

  • Используется Telegram Bot API
  • Реализована обработка ограничения запросов (ошибка 429)
  • 3 попытки отправки с задержкой

6. Сохранение состояния

  • Отправленные уведомления сохраняются в SENT_TICKETS_FILE
  • Предотвращение дублирования уведомлений

Конфигурация

Обязательные параметры

GLPI_API_URL = "https://help.domain.com/apirest.php"
GLPI_USER_TOKEN = "ваш_токен"
GLPI_APP_TOKEN = "ваш_токен"
TELEGRAM_BOT_TOKEN = "токен_бота"
TELEGRAM_CHAT_ID = "ID_чата"

Настройки мониторинга

ITIL_CATEGORY_IDS = [1, 2, 3]  # ID категорий для мониторинга
WAIT_MINUTES = 9  # Максимальное время без назначения

Настройки логирования

LOG_FILE = "glpi_ticket_checker.log"  # Основной файл лога
maxBytes=5*1024*1024                 # Макс. размер 5 MB
backupCount=5                        # 5 резервных файлов

Ответственные по категориям

CATEGORY_RESPONSIBLES = {
    1: [101, 102],  # ID категории: [ID пользователей]
    2: [201, 202]
}

Особенности реализации

  1. Работа с пользователями:

    • Поддержка как локальных пользователей GLPI, так и AD
    • Автоматическое определение формата идентификатора
    • Получение ФИО для локальных пользователей
  2. Обработка ошибок:

    • Подробное логирование всех операций
    • Повторные попытки при сбоях
    • Корректное завершение сессии GLPI
  3. Производительность:

    • Задержки между запросами (REQUEST_DELAY)
    • Пакетная обработка заявок
    • Кэширование данных категорий

Требования

  • Python 3.6+
  • Установленные пакеты: requests
  • Доступ к API GLPI
  • Права бота Telegram

Логирование

Все действия записываются в файл glpi_ticket_checker.log с указанием:

  • Временной метки
  • Уровня важности (INFO, ERROR, DEBUG)
  • Выполняемого действия
  • Результата операции

Параметры

  • Максимальный размер файла: 5 МБ
  • Количество резервных копий: 5
  • Формат записей: Дата Время - Уровень - Сообщение
  • Уровни логирования: DEBUG, INFO, WARNING, ERROR

Файлы

  • glpi_ticket_checker.log - текущий лог
  • glpi_ticket_checker.log.1 - последний архив
  • glpi_ticket_checker.log.2 - предпоследний архив
  • ... и т.д. (до 5 файлов)

При достижении лимита:

  • Самый старый файл (glpi_ticket_checker.log.5) удаляется
  • Файлы переименовываются (.1 → .2, .2 → .3 и т.д.)
  • Текущий лог сохраняется в .1
  • Создается новый чистый лог-файл

About

GLPI script that tracks the of specialist assignation time, specialist has not been appointed, sends notification in a telegram.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors