Перейти к основному содержимому
Версия: 1.15.0

Настройка чата сворминг-сессии

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

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

    python3 -m pip install --upgrade pip

    python3 -m pip install --upgrade telethon

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

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

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


внимание

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

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

    ПолеОбязательноОписание
    НаименованиеДаНазвание инфраструктурного сервера, которое отображается в списке, например, 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 (sys_mid_server).
    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 на шаге 3.

    В папке находятся четыре скрипта:

    • 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) table. Для этого:

    1. На странице таблицы Скрипты MID (sys_mid_script) нажмите Создать, чтобы перейти на форму нового скрипта.
    2. Введите название скрипта createGroup.
    3. В поле Скрипт добавьте путь к скрипту на сервере и параметры, как показано ниже.
    4. Повторите шаги i–iii для создания скриптов closeGroup и deleteGroup.
    createGroup
    Скриптpython C:\User's Path\createGroup.py $botUserName $incidentDispalyName $titleMessage $mainInformation
    closeGroup
    Скриптpython C:\User's Path\closeGroup.py $chatId
    deleteGroup
    Скриптpython C:\User's Path\deleteGroup.py $chatId
    внимание

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

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

    System PropertyValue
    itsm.telegram_bot.swarming_sessiontrue
    itsm.telegram_bot.mid_server_idID записи сервера 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-боты) появляется сообщение "Телеграм-бот не подключен", модальное окно при этом не открывается.

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

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

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

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


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

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