Предусловия:
Для установки агента инфраструктуры (MID-агент) на сервере должен быть установлен Python и библиотека Telethon. Чтобы установить библиотеку, выполните в командной строке команды (предварительно скачав и установив Python, если это не было сделано ранее):
python3 -m pip install --upgrade pip python3 -m pip install --upgrade telethon
Необходимо устройство на Android с физической SIM-картой и с установленным приложением Telegram, аккаунт которого привязан к номеру SIM-карты.
- На устройстве с Android также необходимо установить приложение Pydroid 3 для запуска скриптов и библиотеку Telethon.
Для того чтобы настроить возможность создания группы в Telegram для работы над значительным инцидентом, выполните шаги следующих этапов.
На сервере администратора
Для бесперебойной работы чата сворминг-сессии, MID-агент должен быть размещен на устройстве, например, виртуальной машине (ВМ), на котором он будет постоянно запущен.
- Создайте запись в таблице Серверы MID (sys_mid_server).
Поля формы Сервер MID
Поле
Обязательное
Описание
Наименование Да Название инфраструктурного сервера, которое отображается в списке, например, TgBotMIDServer. Имя хоста Да Имя хоста внешнего сервера, к которому осуществляется подключение. Например, mid_server. Пользователь Да Имя пользователя, который будет иметь доступ к функциональности инфраструктурного агента. Пользователь должен иметь роль admin. - Скачайте архив с файлами MID-агента.
Создайте на диске С папку с именем MID_agent.
Для создания Telegram-групп на разных экземплярах, создайте отдельные папки для агента каждого экземпляра с разными названиями.
- Поместите в созданную папку файлы .exe и .env из архива, скачанного в шаге 2.
В файле .env измените значения:
Переменная Значение MID_API_USERNAME Логин пользователя, указанного в записи Сервер MID (sys_mid_server), созданной в п.1. MID_API_PASSWORD Пароль пользователя, указанного в записи Сервер MID (sys_mid_server), созданной в п.1. MID_API_SERVERID ID созданной ранее записи таблицы Сервер MID. MID_API_ENDPOINT Экземпляр, на котором будет работать сервер MID. Создайте клиента Telegram.
Чтобы создать клиента Telegram, следуйте инструкции ниже:
1. Перейдите по ссылке https://my.telegram.org для авторизации.
2. Заполните форму на сайте https://my.telegram.org/apps, чтобы получить URL и параметры api_id и api_hash, которые понадобятся для авторизации пользователей позже.
К одному api_id можно привязать только один номер телефона.
- Скачайте архив со скриптами и добавьте их в созданную ранее папку MID_agent.
В папке находятся четыре скрипта:- createGroup – для создания группы,
- closeGroup – для отключения возможности отправки новых комментариев, когда инцидент переведен в статус Выполнен,
- deleteGroup – для удаления группы в Telegram,
- clientInformation – для хранения api_id и api_hash.
- Откройте скрипт clientInformation и добавьте в него значения api_id и api_hash, полученные при создании клиента Telegram.
Создайте файл с расширением .py и добавьте в него стартовый скрипт:
Стартовый скрипт для Telegramfrom 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())
- Настройте экземпляр SimpleOne, как описано ниже.
На экземпляре SimpleOne
- Создайте три скрипта в таблице Скрипты MID (sys_mid_script). Для этого:
- На странице таблицы Скрипты MID (sys_mid_script) нажмите Создать, чтобы перейти на форму нового скрипта.
- Введите название скрипта createGroup.
В поле Скрипт добавьте путь к скрипту на сервере и параметры, как показано ниже.
Повторите шаги а–с для создания скриптов closeGroup и deleteGroup.
createGroup Скрипт python C:\ ... \createGroup.py $botUserName $incidentDispalyName $titleMessage $mainInformation closeGroup Скрипт python C:\ ... \closeGroup.py $chatId deleteGroup Скрипт python C:\ ... \deleteGroup.py $chatId При использовании нескольких агентов для работы Telegram-групп на разных экземплярах, в скрипте укажите путь к необходимой папке агента.
В таблице Системные свойства (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_id ID записи скрипта MID для создания группы в Telegram (скрипт createGroup). itsm.telegram_bot.mid_close_group_script_id ID записи скрипта MID для отключения комментариев (скрипт closeGroup). itsm.telegram_bot.mid_delete_group_script_id ID записи скрипта MID для удаления группы (скрипт deleteGroup). - Создайте соединение с ботами Для клиента и Маршрутизатор, которые заранее должны быть созданы через @BotFather в Telegram.
На устройстве Android
- Перенесите стартовый скрипт и файл clientinformation.py с заполненной информацией на устройство Android.
Используя предустановленное приложение Pydroid 3, запустите вручную стартовый скрипт Python с использованием библиотеки Telethon.
- После успешного запуска стартового скрипта, введите в командной строке номер телефона, к которому привязан активный Telegram-аккаунт.
- Если вход в аккаунт дополнительно защищен паролем, введите его после того, как указали номер.
- Система попросит ввести код подтверждения – также введите его в командной строке.
- Далее система возвращает информацию о текущем пользователе. Это означает, что все подключено верно.
- В результате будет создан новый файл swarming.session и папка py_cache. Время жизни файла ограничено и составляет 7–10 дней, если им не воспользоваться. Если файл устарел, его необходимо будет создать заново.
- Созданный файл и папку необходимо перенести на сервер в папку агента. Если на сервере есть более старая версия swarming.session и папка py_cache, их необходимо удалить перед запуском скрипта.
Конец настройки и тестирование работы
- Воспроизведите стартовый скрипт и введите номер аккаунта Telegram.
- Используя командную строку, запустите MID-агент из файла в созданной ранее папке агента.
Зайдите на форму значительного инцидента. Нажмите на кнопку Начать сворминг наверху страницы.
В открывшемся модальном окне указан список получателей приглашения в группу в 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) появляется сообщение "Телеграм-бот не подключен", модальное окно при этом не открывается.
После перевода инцидента в статус "Завершен" в таблице Очередь MID (sys_mid_queue) создается запись closeGroup. При этом в группе отключается возможность добавления новых комментариев, но старые сообщения доступны для просмотра.
Поле Описание Запрос Параметр chatId Сервер TgBotMIDServer Скрипт Название выполняемого скрипта Ответ Нет ответа Статус Завершена после выполнения скрипта Обработано в Дата и время выполнения скрипта Описание Пустое поле Когда инцидент переведен в статус Закрыто, в таблице Очередь MID (sys_mid_queue) появляется запись deleteGroup, а связанная с ней группа в Telegram удаляется.
Поле Описание Запрос Параметр chatId
Сервер TgBotMIDServer Скрипт Название выполняемого скрипта Ответ Нет ответа Статус Завершена после выполнения скрипта Обработано в Дата и время выполнения скрипта Описание Пустое поле
Устранение неполадок
В случаях, когда не создается группа сворминг-сессии или не настраивается коммуникация между Telegram-группой и экземпляром SimpleOne, выполните одно из следующих действий:
- Переподключите бот Маршрутизатор на экземпляре с новым токеном. Для этого запросите токен в @BotFather в Telegram.
- На сервере в папке MID агента закройте и заново запустите стартовый скрипт или пересоздайте файл swarming.session по шагам выше и загрузите его в папку еще раз.
- No labels