Как управлять TrueConf Server с помощью его API и бота Telegram
Администратор TrueConf Server может получать быстрый доступ к важной информации сервера, используя для этого популярные мессенджеры, например, Telegram. Для этого можно создать бота, который с помощью TrueConf Server API будет получать необходимые данные. Разместить бота можно как на своём сервере локально, так и на специализированном сервисе для онлайн-разработки.
В данном примере мы покажем, как создать Telegram бота, и запустить его на локальной машине, при этом мы предоставляем готовый пример кода реализации задачи на Python:
Предлагаемый бот обладает следующими возможностями:
- Проверка статуса сервера (работает/остановлен).
- Получение списка запущенных конференций.
- Проверка количества онлайн пользователей.
- Поиск ошибочно активных длительное время конференций и остановка любой из них.
Далее по тексту ошибочно запущенные конференции для краткости названы «забытыми», то есть их забыли остановить владелец и ведущие. Например, проводился вебинар, гости покинули его, а ведущий свернул клиентское приложение, не остановив мероприятие. Оно продолжает идти, а если была включена запись – то и зря занимать место на SSD или HDD разрастающимся файлом записи.
Для примера “забытой” мы считаем такую конференцию:
- она длится дольше одного часа;
- в ней остался один только владелец или ведущий;
- в ней есть участники, но среди них нет ни одного ведущего.
Необходимые условия для запуска
Для успешного запуска бота требуется выполнение двух условий:
- каждый контролируемый сервер должен быть доступен по своему IP-адресу или DNS-имени на ПК, где запускается бот;
- ПК с ботом должен иметь выход в интернет.
Представленный код является примером на основе которого вы можете сами реализовать своего бота. Заметим, что безопасность бота обеспечивается на уровне протокола OAuth 2.0 и HTTPS, а также на стороне настроек сети (правила доступа, брандмауэр и т.п.). Бот работает в режиме long_polling, и самостоятельно опрашивает сервер Telegram о новых обновлениях. В отличии от webhook такая схема подключения является совершенно безопасной в корпоративной среде.
Регистрация своего бота и его настройка
Для использования Telegram-бота вам понадобится официальный бот BotFather.
BotFather – это единственный бот, который управляет ботами в Telegram. Подробнее читайте в официальной документации.
Чтобы создать бота:
- Откройте BotFather и нажмите Запустить или Старт.
- У вас откроется список возможностей бота. Вам понадобится команда
/newbot. Нажмите на неё в списке, или отправьте боту новое сообщение/newbot.В дальнейшем список доступных команд можно открыть с помощью кнопки
или просто набрав /в поле ввода сообщения в чате с BotFather. - Далее BotFather предложит назвать нового бота. Придумайте название, например
TCS [name_org, где[name_org]— название вашей организации. - Теперь придумайте имя пользователя (username) для вашего бота. В имени обязательно должно присутствовать слово
bot, это требование Telegram, например,tcs_[name_org]_bot.Обратите внимание, что название бота и его имя пользователя – это публичные имена, по которым его можно найти через глобальный поиск.
- В ответ вы получите сообщение со сведениями о созданном боте и токеном доступа к нему с помощью HTTP API в виде:
15032177032:AAGahjzZ6zbWSEsVFj13Ki-YMPhPEPzQjxE
Нажмите на токен в тексте сообщения, чтобы скопировать его в буфер обмена. После чего сохраните его в надёжном месте – он понадобится вам в дальнейшем для использования бота.
Для того чтобы перейти в настройки вашего бота, выполните команду
/mybots и выберите соответствующее имя пользователя. У вас откроется меню, в котором можно:
- аннулировать текущий токен, при этом новый токен создаётся
автоматически; - редактировать имя, приветственное сообщение, описание, изображение;
- добавить команды.
Теперь, когда бот настроен, можно перейти к его запуску.
Подготовка конфигурационного файла
Предварительно вам понадобится подготовить файл настроек с данными для доступа
к своему боту и параметрами серверов. Скопируйте файл settings.example.toml в новый файл settings.toml:
|
1 |
cp settings.example.toml settings.toml |
Теперь вам нужно правильно заполнить эту структуру данных.
tg-api-token — токен доступа HTTP API Telegram.
tg-users-id — ваш числовой Telegram ID. Telegram обеспечивает безопасность доступа к боту с помощью уникальных ID пользователей, поэтому чтобы вы могли получить ответ от бота, вам понадобится узнать свой Telegram ID. Чтобы получить его, пришлите боту @userinfobot любое сообщение.
Если вы хотите, чтобы несколько человек получили доступ к боту, вы можете написать их ID через запятую.
locale — код языка, на котором бот будет отвечать. Вы можете исправить фразы или добавить свой перевод в папку app/locales.
В [servers.<server_name>] замените <server_name> на предпочтительное имя сервера. Оно будет отображено в названии кнопок:
ip — FQDN или IP-адрес сервера.
client_id, client_secret будут доступны вам после создания OAuth2 приложения. О том, как его создать, читайте в нашей документации.
Для нашего примера вам понадобится отметить такие разрешения в OAuth приложении:
- conferences;
- users:read;
- logs.calls:read;
- logs.calls.participants:read.
server_status — включение или отключение автоматической проверки доступности сервера. Значения: true или false.
server_status.timeout — время в секундах, через которое бот будет проверять доступность сервера (Работает, Отключен). По умолчанию указано 15
секунд, но вы можете ввести своё значение.
ssl_certificate — настройка проверки TLS-сертификата. Если true, то каждый запрос сервера будет проходить проверку. Если ваш сервер использует самоподписанный сертификат, то в этом параметре укажите путь к нему (используйте прямой слеш /). Если бот используется в доверенной зоне (например, сервер находящийся в вашей корпоративной сети и доступ к ней только у вас), то укажите false – это отключит проверку сертификата. Если ничего не указано «», то это равносильно false.
После заполнения файла у вас должна получится структура как на примере ниже:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
tg-api-token = "12345:example_key" tg-users-id = [12345, 123456] locale = "ru" [servers] [servers."video.example.com"] ip = "video.example.com" client_id = "86add683ebc98123968a549f8976db0024abe288" client_secret = "b7f3f5cb51b02634b1bb546eb7f1f905c93960ba" access_token = "a5bace995fd9d65315f36518fd7b3b4f68a69557" ssl_certificate = "" [servers."video.example.com".server_status] state = true timeout = 15 [servers."video.example.net"] ip = "video.example.net" client_id = "1ebb5498ddd6668d7885c1597f9a1330fc0caddd" client_secret = "067171487c59f063287a44c40671d6247d647e42" access_token = "" ssl_certificate = true [servers."video.example.net".server_status] state = 0 timeout = 15 |
Запуск бота
- Установите Python.
- Скачайте проект. На главной странице репозитория нажмите кнопку Code → Download ZIP, и распакуйте загруженный архив.
- Установите
pipenv:
1pip install pipenv - Установите зависимости. Для этого в папке с проектом выполните в терминале команду:
1pipenv install --python 3.x
где--python 3.xваша версия Python. Рекомендуем использовать 3.7 и выше. - Запустите бота:
1pipenv run python3 main.py
При успешном запуске бота в терминале отобразится надпись Bot is running…
Запуск бота на облачных сервисах
Вы можете запускать вашего бота не только на локальной машине, но и в облаке, что удобно для непрерывной работы и доступности из любого места. Для этого можно использовать различные облачные платформы, которые предлагают удобные инструменты для разработки, тестирования и запуска приложений. Ниже мы перечислим несколько популярных сервисов, на которых можно запустить вашего бота:
- Replit — сервис для запуска и разработки приложений прямо в браузере.
- Heroku — платформа для развертывания и хостинга приложений с простотой интеграции с GitHub.
- Google Cloud Platform (GCP) — мощная платформа с широкими возможностями для хостинга и управления приложениями.
- AWS (Amazon Web Services) — облачная платформа от Amazon для масштабируемых приложений с множеством инструментов и
сервисов. - Microsoft Azure — платформа для разработки и управления приложениями в облаке с интеграцией в экосистему Microsoft.
- Glitch — сервис для быстрого хостинга и разработки приложений с простым интерфейсом и интеграцией с GitHub.
Эти сервисы позволяют не только запустить бота, но и легко масштабировать его, а также обеспечивать его доступность для пользователей в любой точке мира.


