Безопасная альтернатива Telegram: что выбрать для рабочих чатов
Создано на базе изображения Алена Делорма (источник)
Казалось бы, что может быть не так с использованием публичного мессенджера для рабочей переписки? В России это Telegram, в других странах чаще всего WhatsApp* и Facebook Messenger*. По статистике за этот год 70% всех работников в России (источник) часть своей рабочей переписки ведёт в публичных мессенджерах, а значит и вы тоже, признайтесь.
Многие к этому привыкли, кто-то даже научился брать этот процесс под контроль и отличать своих от чужих по белым спискам, проверкам на причастность к организации через специальных ботов, выпуск корпоративных SIM-карт только для Телеграм и т.п. Очевидно, что никто не хочет, чтобы служебная информация осталась в руках бывших сотрудников или ещё хуже — регулярно ими читалась. Бесплатно, удобно, да есть риски, но с этим можно жить.
Но в этом году по вполне очевидным причинам, продиктованным вопросами национальной безопасности, такой способ рабочего общения был серьёзно ограничен — перестали работать звонки между пользователями иностранных публичных мессенджеров, которые мы так полюбили за их бесплатность и глобальный абонентский охват. По статистике операторов связи в сентябре и октябре количество GSM вызовов (т.е. через обычную сотовую связь) в России удвоилось. Напомним, что для совершения таких звонков нужно знать сотовые номера коллег и наконец-то начать тратить минуты, включенные в ваш тарифный план. Для небольшой компании из 20-30 сотрудников это терпимо, но для любой серьёзной организации (не забываем про 70% выше, они тоже страдают) это большая головная боль, как в технической плоскости (как сделать так, чтобы все сотрудники знали все сотовые номера коллег), так и в юридической (это же персональные данные получается, а для этого нужно согласие других коллег). Что делать? Обсудим дальше.
А ведь есть и другая проблема — все наши коммуникации сплелись в один большой клубок: рабочие, семейные, развлекательные, общественные. Как можно ответить на запрос коллеги в Телеграм, не прочитав последние новости в соседнем чатике или не ответив любимой или детям? Это не просто, для многих просто невозможно. Что приводит к постоянной смене контекста и заставляет переключаться с рабочих задач на другие, снижая нашу с вами эффективность (замечу, что происходит это в рабочие часы, естественно).
Давайте посмотрим правде в глаза — давно пора начать отделять инструменты для рабочего общения от всех остальных. Сейчас на дворе конец 2025 года и заставить всех коллег, особенно молодых, общаться через электронную почту уже не получится, они выросли со смартфоном в руках и искренне не понимают почему там нельзя отправить файл на 700 МБ или посмотреть личную переписку, не разгребая горы СПАМа и не рискуя кликнуть по фишинговой ссылке.
Поэтому в этой статье мы рассмотрим как добавить на главный экран смартфонов ваших сотрудников ещё одну иконку — иконку приложения, где будет только рабочее общение (со звонками, чатами, аватарками, конференциями и всем необходимым) и никаких отвлекающих или ограничивающих продуктивность факторов. Да, и ИБ и ИТ-специалистам такой подход очень понравится, ведь отдельным инструментом намного легче управлять, как говорится, разделяй и властвуй.
Требования к мессенджеру
Итак, вступление закончено, давайте сформулируем критерии актуальные на сегодняшний день, которые мы должны предъявить к рабочему чату, коммуникатору или мессенджеру (называйте как хотите, суть уже понятна):
- Функции мессенджера: поддержка личных и групповых чатов, каналов и прочих базовых вещей, типа пересылки файлов и сообщений.
- Функции UC (Unified Communications, объединённые коммуникации): адресная книга со списком сотрудников, профили с важными данными, такими как департамент, город, или ДР, статусы присутствия и возможность звонить друг другу. В идеале ещё хорошо бы иметь поддержку ВКС, чтобы собираться более чем вдвоём.
- Интеграция с ИТ-системами: минимально с AD/LDAP и Exchange, ибо вручную заводить и обслуживать сотни (или тысячи) учётных записей для всех пользователей компании (мы же не хотим никого оставить за бортом, в Telegram же все коллеги были доступны) никто в здравом уме не станет.
- Коробочная версия. Облакам нет доверия, причем не зависимо от юрисдикции. Как ни относись к Telegram, хранить критически важные рабочие переписки «где-то у соседей» — идея сомнительная. Пользователи мессенджера создают кучу файлов, гигабайты каждый день, а данные в облаках бесплатными не бывают, облачные мессенджеры потребуют оплаты всё больших тарифов с ростом хранилища. Поэтому решения, которые хорошо ловят на парковке, и прочие облачные сервисы — пролетают мимо, нужен полноценный self-hosted.
- Доступный API. В идеале — бесплатный API для работы с чатами. Telegram эту планку уже задал, и логично искать что-то сопоставимое, где можно без лицензий и доплат строить собственные интеграции.
- Простота развертывания. Не надо превращать установку в квест с Docker-ами, контейнерами, виртуалками и балансировщиками. Хочется просто взять готовый серверный дистрибутив, поставить его на свой хост и работать.
- Отсутствие файловых ограничений. Telegram давно служит заменой файлообменника, и это удобно. Ограничения на общий объём или размер загружаемых файлов только мешают — нужно, чтобы система позволяла передавать материалы свободно, без искусственных потолков.
Почему Труконф?
У мессенджера Труконф есть несколько очевидных плюсов, которые сложно игнорировать:
- установка на своей сервер standalone-приложения без танцев с бубном 🥁. Поставил, запустил, работаешь.
- сервер использует всего один порт — а это резко упрощает настройку файрвола. Никаких десятков правил, маршрутов и исключений. Просто открыть один порт и забыть. А что так можно было?
- передача файлов работает без искусственных потолков: сколько нужно — столько отправляете, хоть используйте как корпоративный файлообменник. Ограничение только ваш SSD на сервере или NAS.
- в бесплатной версии доступен чат-API, до 300 пользователей мессенджера и безлимитные аудио/видеозвонки. Для старта — более чем.
Но так ли хорош ли Труконф на самом деле?
(создано на базе изображения из соцсетей)
Честное сравнение с конкурентами
Вы, дорогие читатели, можете открыть подборку на популярном ресурсе и сделать собственные выводы… А я собрал ключевые моменты, чтобы наглядно показать сильные и слабые стороны разных продуктов, а точнее их бесплатных версий:
| Наличие и ограничения функционала в бесплатной версии | |||||||
|---|---|---|---|---|---|---|---|
| Продукт | Чат-боты (API чатов) | Звонки | Конференции | Сообщения, чаты и каналы | Файлы | Установка на свой сервер | Установка через инсталлятор (не Docker) |
| eXpress | Платно | Только с облачными пользователями | Платно | Есть | до 250 МБ | Платно | Нет, используется Docker |
| МТС Линк Чаты | Платно | Через «Линк Встречи» | Есть | до 2 ГБ | Платно | Нет, используется Docker Compose | |
| Pachka | Бесплатно | до 100 человек и до 50 часов в месяц через open-source Jitsi Meet | 2000 сообщений в месяц | Хранилище на компанию 10 ГБ | Платно | Нет информации | |
| Compass | Да, до 10 участников | Да, до 10 человек через open-source Jitsi Meet | Да, до 10 участников | до 512 МБ | Платно | Нет, используется Docker | |
| Контур.Толк. | Платно | Платно, через open-source Jitsi Meet | Платно | до 50 МБ | Платно | Нет, используется Docker | |
| Яндекс Мессенджер | Платно | Платно | Платно | Платно | Недоступно | Недоступно | |
| VK Workspace | Платно | Платно | Платно | Платно | Платно | Нет, используется Docker | |
| Труконф Мессенджер | Без ограничений | Без ограничений, до 300 человек | 10 человек | Без ограничений | Без ограничений | Бесплатно | Есть |
При этом есть лайфхак: чтобы получить 300 пользователей, укажите корпоративный email и пользуйтесь на здоровье.
Так сказать — решили не жадничать. Тут хотелось бы вспомнить советский постер:
Что умеет API чатов в Труконф
В составе мессенджера Труконф поставляется отдельный сервис (служба) TrueConf Chatbot Connector, которая реализует связность внешних систем с нашим мессенджером. API работает поверх транспортного протокола WebSocket и не является привычным API как в Telegram (в ближайшем обновлении мы исправим это — появится HTTP REST API). API Труконф на базе WebSocket открывает множество интересных возможностей:
- мгновенные нотификации об ответах;
- поддержка постоянного соединения с сервером;
- использование стандартных TCP портов.
При этом, для разработчиков представлена удобная библиотека python-trueconf-bot, которая существенно упрощает создание ботов и взаимодействие с API чатов.
Итого, для переноса чатов из Telegram в Труконф нужно:
- Поддержка личных, групповых чатов и каналов.
- Отправка сообщений, в том числе:
- файлы;
- эмоджи и стикеры;
- аудио- и видеосообщения.
- Ответы (reply).
- Пересылка (forward).
- Упоминания (mention).
- Форматирование сообщений (чтобы успешно перенести в новый мессенджер).
Как спарсить чат в Telegram
С помощью бота
Самое первое, что приходит в голову, создать бота, который спарсит всю историю сообщений чата. К сожалению, в Telegram Bot API нет отдельного метода для получения всей истории переписки. То есть, бот может получить только новые сообщения чата (обновления), а это нам не подходит… Мы тут собрались переносить старое.
Кто старое помянет, тому глаз вон
С помощью MTProto API
Метод загрузки истории существует в MTProto API (messages.getHistory), но это клиентское API, и оно не входит в Bot API и следовательно недоступно ботам. К счастью, на Python существует библиотека Telethon, которая поддерживает авторизацию через токены ботов. Все бы ничего, но не бывает роз без шипов и нужно осознавать все риски работы через MTProto.
Для общения с MTProto API нам понадобятся специальные параметры — api_id и api_hash. Следуя официальной документации Telegram получить их не составит труда. Важно отметить, что получая таким образом доступ к API мы фактически создаем собственное приложение Telegram App, отличное от официального клиента. Это потенциально рискованный шаг потому что:
- Нарушение правил использования (Terms of Service, ToS) Telegram API может привести к блокировке учетной записи;
- Выданные
api_idиapi_hashне подлежат изменению или удалению. Тем не менее, на безопасность аккаунта это напрямую не влияет, поскольку даже при наличии указанных параметров для работы через API необходимо пройти полноценную авторизацию с вводом номера телефона и одноразового кода (OTP).
Таким образом, боясь нарушить правила использования Telegram API, я продолжил поиски нормального решения для выгрузки чата без регистрации и смс.
С помощью Telegram Desktop
Я люблю Telegram за их стремление быть современными. Они действительно стараются быть user-friendly. Официально Telegram поддерживает все существующие платформы. В Telegram Desktop (не путать с Telegram for macOS) из коробки доступен экспорт любого чата.
Это мега-фича, которая «решит все твои проблемы». Потому что нам не надо будет придумывать велосипед, продумывать логику парсинга чата, выгрузки всех мемчиков, аудиосообщений и подобного. Команда Telegram все сделала за нас – для нас.
Экспорт чата Telegram
После установки и авторизации в Telegram Desktop у вас отобразится привычный список чатов. Для экспорта выполните:
- Откройте нужный чат. Неважно какой – личный, групповой или канал.
- В правом верхнем углу нажмите Еще (кнопка с тремя точками) и выберите Экспорт истории чата:

- У вас откроется окно Настройки экспорта. Выставьте формат JSON и при необходимости:
- отметьте типы медиа подлежащие выгрузки;
- ограничьте размер файлов, чтобы не скачивалось все в подряд;
- настройте диапазон времени сообщений.

Важно отметить, что экспорт чата будет производиться в режиме реального времени. Все файлы будут скачиваться в указанную папку (по умолчанию в Downloads/Telegram Desktop). После начала экспорта вы можете продолжить пользоваться приложением, экспорт будет производиться в фоновом режиме. Если вы выбрали диапазон дат, то приложение будет «идти» к выбранной дате
обрабатывая все сообщения от начала. Выглядит как недоработка со стороны Telegram, но как есть…
Анализ бэкапа
По завершению экспорта вам будет доступна папка с названием ChatExport_Date, например, ChatExport_2025-09-11. Содержимое папки может отличаться в зависимости от настроек экспорта. Приведу типовый пример содержимого папки:
|
1 2 3 4 5 6 7 8 |
ChatExport_2025-09-11/ files photos result.json round_video_messages stickers video_files voice_messages |
Основным файлом, который нас интересует, является result.json. В нем аккумулирована вся информация о чате. Рассмотрим его содержимое подробнее.
result.json
Файл содержит всего 4 объекта:
- name. Имя чата.
- type. Тип чата.
- id. Внутренний (цифровой) идентификатор чата.
- messages. Сообщения.
Нас более всего интересует содержимое объекта messages. Он содержит массив объектов сообщений:
Команда Telegram очень хорошо продумала структуру бэкапа. Я создал групповой чат, наполнил его разными типами сообщений: текст, сжатая картинка, файл, аудиосообщение, видеосообщение и т.д., и начал исследовать, как Telegram будет сохранять информацию о таких сообщениях в result.json. Можно ли вообще будет спарсить этот файл? Насколько это будет легко или сложно? Вот что получилось:
- Каждый объект сообщения в
result.jsonсодержит обязательные поля:id,type,date,date_unixtime. - В зависимости от типа сообщения
serviceилиmessageTelegram определяет автора сообщения:- для служебных сообщений:
actor,actor_id. - для обычных сообщений чата:
from,from_id.
- для служебных сообщений:
- Любое сообщение чата имеет поля:
text,text_entities.
А дальше? А дальше в зависимости от типа сообщения количество полей будет разным. Приведу «схематичный» пример отличий:
Текстовое сообщение
|
1 2 3 4 5 6 7 |
"text": "Сжатая картинка с текстом", "text_entities": [ { "type": "plain", "text": "Сжатая картинка с текстом" } ] |
Сжатая картинка
|
1 2 3 4 |
"photo": "photos/photo_1@16-07-2025_15-10-14.jpg", "photo_file_size": 102376, "width": 1280, "height": 731, |
Файл
|
1 2 3 4 5 6 7 8 |
"file": "files/file.jpg", "file_name": "file.jpg", "file_size": 1018446, "thumbnail": "files/file.jpg_thumb.jpg", "thumbnail_file_size": 16335, "mime_type": "image/jpeg", "width": 2304, "height": 1792, |
Видеосообщение
|
1 2 3 4 5 6 7 8 9 10 |
"file": "round_video_messages/video.mp4", "file_name": "video.mp4", "file_size": 750883, "thumbnail": "round_video_messages/video.mp4_thumb.jpg", "thumbnail_file_size": 15454, "media_type": "video_message", "mime_type": "video/mp4", "duration_seconds": 5, "width": 400, "height": 400, |
Другие типы сообщений приводить не буду, чтобы не перегружать статью. Вы можете сделать это сами. Главное, что стало понятно – Telegram сделал все, чтобы их бэкап можно было использовать для дальнейшей обработки в других системах.
Перенос чата в Труконф
Перед написанием кода, я провел аналитическую работу и составил для себя план действий, который и описывается в данном разделе.
Как уже упоминал выше, API Труконф поддерживает практически все, что есть в Telegram. Нет только видео- аудиосообщений, но это не беда. Как показывает опыт, не все пользователи Telegram этим пользуются. Не зря Пашка Дуров придумал монетизировать отключение голосовых и видеосообщений.
(источник: Соцсети)
Я же в своей жизни пользуюсь голосовухами, поэтому ниже покажу как я решил данную проблему с Труконф.
Адаптация форматирования сообщений
По моему скромному мнению Telegram самый богатый мессенджер в плане разновидности форматирования. Тут тебе и цитаты, и сворачивающиеся цитаты, моноширинный текст и автоматическое распознавание кода, спойлеры. К сожалению не все это поддерживают (привет, WhatsApp и VK Messenger), в том числе и Труконф.
Ниже мой план по адаптации телеграмовского форматирования:
| Telegram | TrueConf | ||
|---|---|---|---|
| Жирный | Жирный | ||
| Курсив | Курсив | ||
| Подчеркнутый | Подчеркнутый | ||
| https://trueconf.ru | https://trueconf.ru | ||
| Текстовая ссылка | Текстовая ссылка | ||
| Упоминание @mention | Упоминание @mention с ссылкой на Telegram-аккаунт | ||
| Кастомные эмоджи | Используем обычный эмоджи | ||
Моноширинный блок ![]() |
![]() |
||
Моноширинный блок с указанием языка ![]() |
![]() |
||
Спойлер![]() |
Спойлер можно перенести как [спойлер] ![]() |
Голосовые сообщения
Труконф поддерживает открытие некоторых файлов во встроенном просмотрщике. Telegram пишет голосовые сообщения в формате .ogg, но этот формат не поддержан в Труконф. Поэтому пришла идея подружить две системы и отправлять голосовые из
Telegram в Труконф как видео .mp4 со статической картинкой. Сделать это очень просто используя ffmpeg:
|
1 |
ffmpeg -loop 1 -i image.png -i audio_1@16-07-2025_15-20-31.ogg -c:v libx264 -tune stillimage -pix_fmt yuv420p -c:a aac -b:a 192k -shortest audio_1@16-07-2025_15-20-31.mp4 |
Видеосообщения (кружочки)
Кружочки Telegram сохраняются как video.mp4 с добавлением индекса: video.mp4, video (2).mp4. Это неудобно при просмотре чата в Труконф – нет контекста. Будем переименовывать его в что-то осмысленное, как у аудиосообщений – audio_1@16-07-2025_15-20-31.ogg, только для видео – video_message@16-07-2025_15-20-31.mp4
Написание кода
Писать код я буду на Python. Да, многие «трушные» программисты не в восторге от этой змеи из-за её скорости, но в нашей задаче это совершенно не критично.
Выбор языка во многом определило наличие готовой библиотеки python-trueconf-bot. С ней не нужно возиться с настройкой WebSocket-соединения: достаточно создать экземпляр
|
1 |
bot = Bot.from_credentials() |
и можно сразу отправлять сообщения через
|
1 |
bot.send_message() |
Те, кто хоть раз работал с «сырым» WebSocket и ручной обработкой JSON, поймут, насколько это удобно.
Ну что ж, приступим! Подробно на самой библиотеке я останавливаться не буду — у неё есть отличная документация с примерами. Если вы знакомы с aiogram, то разберётесь моментально: логика очень похожа.
Забегая вперёд, я не стану приводить полный разбор кода — лишь выделю ключевые моменты. Полный листинг, как обычно, можно найти на GitHub.
Текстовые сообщений с форматированием
Первое, что я сделал, это написал функцию build_content_from_text_entities, которая собирает текст с поддерживаемым форматированием в API Труконф (HTML, Markdown).
Здесь Telegram тоже порадовал, т.к. он в result.json длинные сообщения с форматированием разбивает на группы. Я предпочел использовать поле text_entities вместо text, потому что в объектами словарей становится весь текст, даже \n, что существенно упростило парсинг:
|
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
"text_entities": [ { "type": "bold", "text": "Полужирный текст" }, { "type": "plain", "text": "\n" }, { "type": "italic", "text": "Курсив" }, { "type": "plain", "text": "\n" }, { "type": "strikethrough", "text": "Подчёркнутый" }, { "type": "plain", "text": "\n" }, { "type": "underline", "text": "Зачёркнутый" }, { "type": "plain", "text": "\n" }, { "type": "code", "text": "Моноширинный (inline code)" }, { "type": "plain", "text": " \n" }, { "type": "pre", "text": "Моноширинный ", "language": "" }, { "type": "plain", "text": "\n\n" }, { "type": "text_link", "text": "Ссылка", "href": "https://trueconf.ru/" }, { "type": "plain", "text": "\n\n" }, { "type": "link", "text": "https://trueconf.ru" }, { "type": "plain", "text": "\n\n" }, { "type": "spoiler", "text": "Скрытый текст" }, { "type": "plain", "text": "\n\n" }, { "type": "blockquote", "text": "Цитата", "collapsed": false }, { "type": "plain", "text": "\n\n" }, { "type": "blockquote", "text": "Длинная цитата \n\nLorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.", "collapsed": true }, { "type": "plain", "text": "\n\n" }, { "type": "pre", "text": "# Моноширинный python", "language": "python" }, { "type": "plain", "text": "" } ] |
Чтобы собрать из данного массива новое сообщение, нужно пройтись по нему циклом, проверив type задать правильный стиль для text:
|
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 28 |
for entiti in text_entities: match entiti["type"]: case "plain": result_in_html += entiti["text"] case "bold": result_in_html += f"<b>{entiti["text"]}</b>" case "italic": result_in_html += f"<i>{entiti["text"]}</i>" case "strikethrough": result_in_html += f"<s>{entiti["text"]}</s>" case "underline": result_in_html += f"<u>{entiti["text"]}</u>" case "code": if len(entiti["text"].strip()) > 0: result_in_html += f"<b>Моноширинный текст:</b>\n\n<i>{entiti["text"]}</i>" case "pre": result_in_html += f"<b>Код {entiti['language'].capitalize()}:</b>\n\n<i>{entiti["text"]}</i>" case "text_link": result_in_html += f"<a href="{entiti["href"]}">{entiti["text"]}</a>" case "link": result_in_html += f"{entiti["text"]}" case "spoiler": result_in_html += f"[{entiti["text"]}]" case "blockquote": result_in_html += f"<b>Цитата:</b>\n\n<i>{entiti["text"]}</i>" case _: result_in_html += entiti["text"] |
Ответ на сообщение (reply)
При ответе на сообщение в result.json добавляется ключ reply_to_message_id, который содержит ID сообщения, на которое отвечали. В Труконф API при отправке сообщения мы получаем message_id, поэтому нетрудно сопоставить айдишники:
|
1 2 3 |
{ telegram_message_id: trueconf_message_id } |
и при наличии ключа reply_to_message_id вытягивать айдишник перенесенного сообщения.
Отправка сообщений в чат
Здесь все просто. У нас есть массив сообщений в result.json и мы пройдемся обычным циклом for. Поскольку в каждом объекте сообщения может быть разное кол-во полей, я начал анализировать какой тип сообщения нужно обработать вначале. Все типы файлов, за исключением изображений отправленный с сжатием, имеют поле file и отличить их можно только по media_type. Также каждое сообщение содержит поля text и text_entities, а в связи с тем что API чатов Труконф пока не имеет возможности отправить подпись к файлу, то я решил отправлять подписи отдельным текстовым сообщением следующим сразу после отправки файла. Таким образом выстроилась правильная очередность обработки сообщений:
- Проверяем, содержит ли объект сообщения параметр
photo? Если да, то отправляем сообщение:1234567if message.get("photo", False):r: SendFileResponse = await users_object[message["from_id"]].send_photo(chat_id=chat_id,file_path=telegram_export_dir / message["photo"],preview_path=telegram_export_dir / message["photo"],)map_message_ids[message["id"]].append(r.message_id) - Если
.get(photo) == False, то двигаемся дальше и обрабатываем сообщения поmedia_type:В match-case порядок не важен, т.к. сработает только ветка соответствующая1234567891011121314151617match message["media_type"]:case "voice_message":if convert_voice_message:file = await convert_voice_message_to_video(telegram_export_dir / check_file(file))r: SendFileResponse = await users_object[message["from_id"]].send_document(chat_id=chat_id, file_path=file)map_message_ids[message["id"]].append(r.message_id)case "animation":r: SendFileResponse = await users_object[message["from_id"]].send_document(chat_id=chat_id, file_path=telegram_export_dir / check_file(file))map_message_ids[message["id"]].append(r.message_id)case "video_message":r: SendFileResponse = await users_object[message["from_id"]].send_document(chat_id=chat_id, file_path=telegram_export_dir / check_file(file))map_message_ids[message["id"]].append(r.message_id)media_type. - В конце проверяем, если ли подпись
if message["text_entities"], если да, то генерируем сообщение с адаптированным форматированием в HTML и отправляем сообщение (либо ответ на сообщение).
Выводы
Ограничения на звонки, сложности с использованием GSM в корпоративной среде и общая тенденция к ужесточению требований к коммуникациям показывают, что привычные инструменты уже не всегда удовлетворяют потребности бизнеса. Поэтому вопрос перехода на собственный мессенджер — это скорее вопрос зрелости инфраструктуры, чем радикальное решение.
На деле переехать с Telegram не так сложно, как может казаться. Главное — понимать базовые потребности компании. Корпоративный инструмент должен обеспечивать привычный набор функций мессенджера: личные и групповые чаты, каналы, пересылку файлов и сообщений. Но этим всё не ограничивается — для полноценной работы необходимы возможности уровня UC: единая адресная книга, профили сотрудников, статусы присутствия и корпоративные звонки. Желательно также иметь встроенную ВКС, чтобы проводить встречи с несколькими участниками.
Не менее важна интеграция с ИТ-системами. Подключение к AD/LDAP и Exchange позволяет автоматически создавать и обслуживать учётные записи, избавляя администраторов от работы «вручную» и сохраняя привычный уровень доступности сотрудников, который раньше обеспечивал Telegram.
Если проект понравился, то поставьте звездочку на GitHub. Также в репозитории вы найдете подробнейший мануал, по полному переезду из Telegram в TrueConf Messenger. Чтобы вы не парились с формированием конфиг файла (а он там есть) и регистрацией пользователей, то были подготовлены дополнительные скрипты, упрощающие взаимодействие с проектом. О том, как с ними работать описано в инструкции.
Спасибо, что дочитали статью до конца. Надеюсь, материал окажется полезным на практике!
Компания Meta* Platforms Inc. (владелец Facebook* и WhatsApp*) признана экстремистской организацией и запрещена на территории Российской Федерации.









