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

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

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

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

python3 -m pip install --upgrade pip

python3 -m pip install --upgrade telethon

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

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


внимание

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

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

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

  1. Поместите в созданную папку файлы .exe и .env из архива, скачанного в шаге 2.
  2. В файле .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.
  1. Создайте клиента Telegram.
примечание

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

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

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

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

  1. Скачайте архив со скриптами и добавьте их в созданную ранее папку MID_agent на шаге 3. В папке находятся четыре скрипта:
    • createGroup – для создания группы.
    • closeGroup – для отключения возможности отправки новых комментариев, когда инцидент переведен в статус Выполнен.
    • deleteGroup – для удаления группы в Telegram.
    • clientInformation – для хранения api_id и api_hash.
  2. Откройте скрипт clientInformation и добавьте в него значения api_id и api_hash , полученные при создании клиента Telegram.
  3. Создайте файл с расширением .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())
  1. Настройте экземпляр SimpleOne, как описано ниже.

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


  1. Создайте три скрипта в таблице Скрипты MID (sys_mid_script) table. Для этого:
    a. На странице таблицы Скрипты MID (sys_mid_script) нажмите Создать, чтобы перейти на форму нового скрипта.
    b. Введите название скрипта createGroup.
    c. В поле Скрипт добавьте путь к скрипту на сервере и параметры, как показано ниже.
    d. Повторите шаги а–с для создания скриптов 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-групп на разных экземплярах, в скрипте укажите путь к необходимой папке агента.

    1. В таблице Системные свойства (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)
    1. Создайте соединение с ботами Для клиента и Маршрутизатор, которые заранее должны быть созданы через @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-боты) появляется сообщение "Телеграм-бот не подключен", модальное окно при этом не открывается.

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

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


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

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