Настройка чата сворминг-сессии
Предусловия:
-
Для установки агента инфраструктуры (MID-агент) на сервере должен быть установлен Python and и библиотека Telethon. Чтобы установить библиотеку, выполните в командной строке команды (предварительно скачав и установив Python, если это не было сделано ранее):
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade telethon
-
Необходимо устройство на Android с физической SIM-картой и с установленным приложением Telegram, аккаунт которого привязан к номеру SIM-карты.
-
На устройстве с Android также необходимо установить приложение Pydroid 3 для запуска скриптов и библиотеку Telethon.
На сервере администратора
Для бесперебойной работы чата сворминг-сессии, MID-агент должен быть размещен на устройстве, например, виртуальной машине (ВМ), на котором он будет постоянно запущен.
-
Создайте запись в таблице Серверы MID (sys_mid_server).
Поле Обязательно Описание Наименование Да Название инфраструктурного сервера, которое отображается в списке, например, 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 (sys_mid_server). MID_API_ENDPOINT Экземпляр, на котором будет работать сервер MID. -
Создайте клиента Telegram.
примечаниеЧтобы создать клиента Telegram, следуйте инструкции ниже:
-
Перейдите по ссылке https://my.telegram.org для авторизации.
-
Заполните форму на сайте https://my.telegram.org/apps, чтобы получить URL и параметры api_id и api_hash, которые понадобятся для авторизации пользователей позже.
К одному api_id можно привязать только один номер телефона.
-
-
Скачайте архив со скриптами и добавьте их в созданную ранее папку MID_agent на шаге 3.
В папке находятся четыре скрипта:
- 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) table. Для этого:
- На странице таблицы Скрипты MID (sys_mid_script) нажмите Создать, чтобы перейти на форму нового скрипта.
- Введите название скрипта createGroup.
- В поле Скрипт добавьте путь к скрипту на сервере и параметры, как показано ниже.
- Повторите шаги 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-групп на разных экземплярах, в скрипте укажите путь к необходимой папке агента.
-
В таблице Системные свойства (sys_property) установите следующие значения:
System Property Value 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-боты) появляется сообщение "Телеграм-бот не подключен", модальное окно при этом не открывается.
-
После перевода инцидента в статус Завершен в таблице Очередь MID (sys_mid_queue) создается запись closeGroup. При этом в группе отключается возможность добавления новых комментариев, но старые сообщения доступны для просмотра.
Поле Описание Запрос Параметр chatId Обработано в Дата и время выполнения скрипта Описание Пустое поле Ответ Нет ответа Сервер TgBotMIDServer Скрипт Название выполняемого скрипта Статус Завершена после выполнения скрипта -
Когда инцидент переведен в статус Закрыто, в таблице Очередь MID (sys_mid_queue) появляется запись deleteGroup, а связанная с ней группа в Telegram удаляется.
Поле Описание Запрос Параметр chatId Сервер TgBotMIDServer Скрипт Название выполняемого скрипта Ответ Нет ответа Статус Завершена после выполнения скрипта Обработано в Дата и время выполнения скрипта Описание Пустое поле
Устранение неполадок
В случаях, когда не создается группа сворминг-сессии или не настраивается коммуникация между Telegram-группой и экземпляром SimpleOne, выполните одно из следующих действий:
- Переподключите бот Маршрутизатор на экземпляре с новым токеном. Для этого запросите токен в @BotFather в Telegram.
- На сервере в папке MID агента закройте и заново запустите стартовый скрипт или пересоздайте файл swarming.session по шагам выше и загрузите его в папку еще раз.