Предусловия:

  1. Для установки агента инфраструктуры (MID-агент) на сервере должен быть установлен Python и библиотека Telethon. Чтобы установить библиотеку, выполните в командной строке команды (предварительно скачав и установив Python, если это не было сделано ранее):

    python3 -m pip install --upgrade pip
    python3 -m pip install --upgrade telethon
  2. Необходимо устройство на Android с физической SIM-картой и с установленным приложением Telegram, аккаунт которого привязан к номеру SIM-карты.

  3. На устройстве с Android также необходимо установить приложение Pydroid 3 для запуска скриптов и библиотеку Telethon.

Для того чтобы настроить возможность создания группы в Telegram для работы над значительным инцидентом, выполните шаги следующих этапов.

На сервере администратора


Для бесперебойной работы чата сворминг-сессии, MID-агент должен быть размещен на устройстве, например, виртуальной машине (ВМ), на котором он будет постоянно запущен.

  1. Создайте запись в таблице Серверы MID (sys_mid_server).

    Поля формы Сервер MID 

    Поле

    Обязательное

    Описание

    НаименованиеДаНазвание инфраструктурного сервера, которое отображается в списке, например, TgBotMIDServer.
    Имя хостаДаИмя хоста внешнего сервера, к которому осуществляется подключение. Например, mid_server.
    ПользовательДаИмя пользователя, который будет иметь доступ к функциональности инфраструктурного агента. Пользователь должен иметь роль admin.
  2. Скачайте архив с файлами MID-агента.
  3. Создайте на диске С папку с именем MID_agent.

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

     

  4. Поместите в созданную папку файлы .exe и .env из архива, скачанного в шаге 2.
  5. В файле .env измените значения:

    ПеременнаяЗначение
    MID_API_USERNAME Логин пользователя, указанного в записи Сервер MID (sys_mid_server), созданной в п.1.
    MID_API_PASSWORDПароль пользователя, указанного в записи Сервер MID (sys_mid_server), созданной в п.1.
    MID_API_SERVERIDID созданной ранее записи таблицы Сервер MID.
    MID_API_ENDPOINT Экземпляр, на котором будет работать сервер MID.
  6. Создайте клиента Telegram

    Чтобы создать клиента Telegram, следуйте инструкции ниже:

    1. Перейдите по ссылке https://my.telegram.org для авторизации.

    2. Заполните форму на сайте https://my.telegram.org/apps, чтобы получить URL и параметры api_id и api_hash, которые понадобятся для авторизации пользователей позже.

    К одному api_id можно привязать только один номер телефона.

  7. Скачайте архив со скриптами и добавьте их в созданную ранее папку MID_agent
    В папке находятся четыре скрипта:
    • createGroup – для создания группы,
    • closeGroup – для отключения возможности отправки новых комментариев, когда инцидент переведен в статус Выполнен,
    • deleteGroup – для удаления группы в Telegram,
    • clientInformation – для хранения api_id и api_hash.
  8. Откройте скрипт clientInformation и добавьте в него значения api_id и api_hash, полученные при создании клиента Telegram.
  9. Создайте файл с расширением .py и добавьте в него стартовый скрипт:

    Стартовый скрипт для Telegram
    from telethon import TelegramClient
    import clientInformation 
    
    client = TelegramClient('swarming', clientInformation.api_id, clientInformation.api_hash)
    
    async def main(): 
        me = await client.get_me()
        print(me)
    
    with client:
        client.loop.run_until_complete(main())
    
    
  10. Настройте экземпляр SimpleOne, как описано ниже.

На экземпляре SimpleOne 


  1. Создайте три скрипта в таблице Скрипты MID (sys_mid_script). Для этого:
    1. На странице таблицы Скрипты MID (sys_mid_script) нажмите Создать, чтобы перейти на форму нового скрипта.
    2. Введите название скрипта createGroup.
    3. В поле Скрипт добавьте путь к скрипту на сервере и параметры, как показано ниже.

    4. Повторите шаги ас для создания скриптов closeGroup и deleteGroup.

      createGroup
      Скриптpython C:\ ... \createGroup.py $botUserName $incidentDispalyName $titleMessage $mainInformation
      closeGroup
      Скриптpython C:\ ... \closeGroup.py $chatId
      deleteGroup
      Скриптpython C:\ ... \deleteGroup.py $chatId

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

  2. В таблице Системные свойства (sys_property), установите следующие значения:

    Системное свойствоЗначение
    itsm.telegram_bot.swarming_session   true
    itsm.telegram_bot.mid_server_id ID записи сервера MID, ID записи сервера MID, который был создан в шаге 1 раздела На сервере администратора.
    itsm.telegram_bot.mid_create_group_script_idID записи скрипта MID для создания группы в Telegram (скрипт createGroup).
    itsm.telegram_bot.mid_close_group_script_idID записи скрипта MID для отключения комментариев (скрипт closeGroup).
    itsm.telegram_bot.mid_delete_group_script_idID записи скрипта MID для удаления группы (скрипт deleteGroup).
  3. Создайте соединение с ботами Для клиента и Маршрутизатор, которые заранее должны быть созданы через @BotFather в Telegram.

На устройстве Android 


  1. Перенесите стартовый скрипт и файл clientinformation.py с заполненной информацией на устройство Android.
  2. Используя предустановленное приложение Pydroid 3, запустите вручную стартовый скрипт Python с использованием библиотеки Telethon.

  3. После успешного запуска стартового скрипта, введите в командной строке номер телефона, к которому привязан активный Telegram-аккаунт.
  4. Если вход в аккаунт дополнительно защищен паролем, введите его после того, как указали номер.
  5. Система попросит ввести код подтверждения – также введите его в командной строке. 
  6. Далее система возвращает информацию о текущем пользователе. Это означает, что все подключено верно.
  7. В результате будет создан новый файл swarming.session и папка py_cache. Время жизни файла ограничено и составляет 7–10 дней, если им не воспользоваться. Если файл устарел, его необходимо будет создать заново. 
  8. Созданный файл и папку необходимо перенести на сервер в папку агента. Если на сервере есть более старая версия swarming.session и папка py_cache, их необходимо удалить перед запуском скрипта.

Конец настройки и тестирование работы


  1. Воспроизведите стартовый скрипт и введите номер аккаунта Telegram.
  2. Используя командную строку, запустите MID-агент из файла в созданной ранее папке агента. 
  3. Зайдите на форму значительного инцидента. Нажмите на кнопку Начать сворминг наверху страницы.

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

    В таблице Очередь MID (sys_mid_queue) появится запись createGroup. Если ее открыть, то в поле Описание будет указан номер связанного инцидента.

    ПолеОписание
    Запрос BotUserId, название инцидента и содержание первого сообщения для отправки участникам сворминг-сессии. 
    Сервер TgBotMIDServer
    Скрипт Название выполняемого скрипта
    Ответ ID созданного чата и ссылка на группу. ID чата хранится в таблице Telegram Chat Bindings with Incident (sys_telegram_chat_bindings_with_incidents).
    Статус Завершена после выполнения скрипта 
    Обработано в Дата и время выполнения скрипта
    Описание Номер инцидента

    В случае ошибки или отсутствия соединения с Telegram-ботом (больше информации в статье ITSM Telegram Bot) появляется сообщение "Телеграм-бот не подключен", модальное окно при этом не открывается. 

  5. После перевода инцидента в статус "Завершен" в таблице Очередь MID (sys_mid_queue) создается запись closeGroup. При этом в группе отключается возможность добавления новых комментариев, но старые сообщения доступны для просмотра. 

    ПолеОписание
    Запрос Параметр chatId 
    Сервер TgBotMIDServer
    Скрипт Название выполняемого скрипта
    Ответ Нет ответа
    Статус Завершена после выполнения скрипта 
    Обработано в Дата и время выполнения скрипта
    Описание Пустое поле
  6. Когда инцидент переведен в статус Закрыто, в таблице Очередь MID (sys_mid_queue) появляется запись deleteGroup, а связанная с ней группа в Telegram удаляется.

    ПолеОписание
    Запрос

    Параметр chatId 

    Сервер TgBotMIDServer
    Скрипт Название выполняемого скрипта
    Ответ Нет ответа
    Статус Завершена после выполнения скрипта 
    Обработано в Дата и время выполнения скрипта
    Описание Пустое поле

Устранение неполадок


В случаях, когда не создается группа сворминг-сессии или не настраивается коммуникация между Telegram-группой и экземпляром SimpleOne, выполните одно из следующих действий:

  • Переподключите бот Маршрутизатор на экземпляре с новым токеном. Для этого запросите токен в @BotFather в Telegram.
  • На сервере в папке MID агента закройте и заново запустите стартовый скрипт или пересоздайте файл swarming.session по шагам выше и загрузите его в папку еще раз.

  • No labels