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