Вложений: 1
Telegram-XMPP бот: теперь еще больше опций для чата с мобильных устройств!
Цитата:
Возвращайся, сделав круг!
Больше 10 лет назад я сделал бота для Джаббера и выложил на этот форум. Бот просто пересылал сообщения с Джаббер-клиентов в миры и обратно, в то время это было как магия - можно было "сидеть в мирах" с телефона! Затем, пару лет назад, я обновил этого бота под новые реалии - теперь он пересылал сообщения из Telegram и обратно, и обзавелся базовым коммандным интерфейсом - для управления пересылкой сообщений и (для админов) управления пользователями. Конечно, он тоже доступен на форуме. И вот недавно я обнаружил что сейчас, в 2026 году, Джаббер (который теперь официально называется XMPP) - снова актуален. Вместо того чтобы устареть и уйти в небытие вместе с ICQ, Skype и остальными, все эти годы XMPP активно развивался, при этом оставаясь тем чем он был с самого начала - открытым протоколом (см XMPP).
Что же это такой за зверь, открытый протокол? Популярные мессенджеры обычно работают только если вы используете их приложение и подключаетесь к их серверам. Это называется закрытый протокол. В принципе, это позволяет избежать головной боли с совместимостью разных серверов и клиентов, и в какой-то степени даже сделать общение более безопасным - владельцы мессенджера обычно обновляют приложения как только узнают о новых уязвимостях, и не разрешают подключаться старым приложением. Но у этого есть обратная сторона - полный контроль с их стороны над вашими данными. Хотите общаться с друзьями в WhatsApp? Будьте добры, дайте доступ ко всей вашей адресной книжке. Является ли это технической необходимостью для работы приложения? Абсолютно нет, но иначе никак. Никаких альтернатив нет. В последние годы большие корпорации таким образом заставляют юзеров делиться всё больше и больше своими данными, и так как они владеют всё большей частью приложений, эти данные собираются в единый профиль (который намного точнее и подробнее чем многие осознают!) и продаются любому кто больше заплатит (в основном рекламодателям, но так же и - государственным органам, мошенникам и т.д.). По сути вашими данными вы платите за "бесплатный" сервис общения. Здесь многие обычно говорят: ну и что такого? Мне скрывать нечего, я и так всё о себе публикую. Я считаю такой подход очень наивным, но конечно это ваше право. Другой аргумент, который также близок мне лично - это просто непривычно и неприятно. Я начал пользоваться интернетом когда у всех был только ник, как до сих пор у нас в мирах, и мне это очень нравилось. Когда везде вдруг понадобились реальное имя, номер телефона, номер кредитной карты... Думаешь: зачем!? не хочу!
XMPP Ликбез
Возвращаясь к XMPP. Там до сих пор для регистрации нужно только придумать ник и пароль - всё! Регистрироваться нужно на каком-либо сервере и аккаунт выглядит так: user@server.com. Похоже на имейл но сходство только внешнее. Протокол поддерживает сообщения от сервера к серверу, поэтому имея аккаунт alice@server1.com юзер может без проблем общаться с другом на bob@server2.com. Это всё было и 12 лет назад. Но вот что нового, теперь XMPP поддерживает все современные функции: отправка фото и видео, любых других файлов, аудио- и видеозвонки (!). При этом приложения для XMPP обычно с открытым исходным кодом и существуют для всех платформ. Тут нужно оговориться: XMPP это "расширяемый" протокол, и не все серверы и приложения поддерживают его "полную" версию. Например ваш сервер или приложение могут не поддерживать видеозвонки. Или, если ваши поддерживают, поддержки может не быть у вашего собеседника на другом сервере/приложении. Но есть достаточно серверов которые поддерживают всё. Для лучших результатов лучше чтобы у собеседника был аккаунт на том же сервере и то же приложение что у вас.
Есть еще одна плюшка в современном XMPP, которая выгодно отличает его от закрытых протоколов и которую поддерживают все серверы и клиенты, кроме допотопных. Это сквозное шифрование с помощью OMEMO (если нет поддержки - не используйте этот сервер/приложение!). Некоторые популярные закрытые мессенджеры тоже поддерживают шифрование - так в чем же разница? Есть одна существенная особенность. В любом приложении чтобы вы могли прочитать зашифрованные сообщения вашего собеседника, они должны быть расшифрованы и показаны на дисплее. То есть приложение имеет доступ к расшифрованным сообщениям. В закрытых протоколах обычно и приложение с закрытым исходным кодом. Это значит что вы не можете знать не происходит ли что-нибудь с вашими сообщениями между расшифровкой и показом. Например, не передаются ли они куда-то еще?? В XMPP, приложения обычно с открытым кодом и поэтому можно даже самому убедиться что это не так (или довериться многочисленным энтузиастам которые этот код проверили за вас). Кто-то скажет что всё это паранойя если вы не агент спецслужб (а тогда у вас есть свои "чаты"), и может будет прав. Но для кого-то это аргумент в пользу XMPP. Важная оговорка - даже с наличием сквозного шифрования и надежным приложением с открытым исходным кодом, надо всё-таки в какой-то степени доверять серверу где у вас аккаунт. Например, убедиться что он в стране с хорошей защитой персональных данных и компания которая предоставляет сервис и хостинг заслуживают доверия. Ну и напоследок на всякий случай добавлю: я лично не поощряю никакой коммуникации целью которой является нарушение законов ;) Для меня приватное общение важно само по себе, по тем же причинам что не всё что мы говорим родным и близким мы бы готовы были прокричать на площади.
Хочу себе XMPP, как??
Для тех кого убедили предыдущие параграфы, краткая инструкция как скачать приложение и завести себе аккаунт на XMPP имея телефон на Андроиде:
- Качаем и устанавливаем магазин приложений F-DROID: https://f-droid.org/. Что это и зачем? На F-Droid размещаются приложения с открытым исходным кодом которые прошли проверку. Поэтому в целом ему можно доверять. Но в частности - не любому приложению! Много ли пользователей, оценок? Имя какое-то странное или похоже на популярный продукт? Есть красный флаг - не качаем. Так же нужно руководствоваться здравым смыслом, как и в Google Play. Для разработчиков там чаще проще размещать приложения. У Гугла драконовские условия, включая финансовые затраты для разработчиков. Для энтузиастов которые делают открытые приложения это просто не окупается.
- В F-droid ищем приложение Conversations. Иконка - зеленый чат с точками. Устанавливаем
- При открытии можно зарегистрировать аккаунт. Введите желаемое имя пользователя - и - внимание! - скорее всего другой сервер. По умолчанию там user@conversations.im. Если сработает, то отлично. А если висит и ничего не происходит, можно попробовать @jabber.fr - так по крайней мере у одного человека получилось. А вообще вот длинный (и все равно не полный!) список серверов https://providers.xmpp.net/. Смотрите что каждый из себя представляет, сходите на их сайт. Я не рекомендую любому оттуда безоговорочно доверять.
- Всё! Никаких номеров телефона, даже имейла не надо. Не забудьте пароль, потому что его никак не восстановить если потерялся! (у некоторых провайдеров можно оставить свой имейл при регистрации через сайт).
Telegram-XMPP бот в мирах
Возвращаясь к теме этого поста. Теперь, зарегистрировав XMPP аккаунт, как же общаться в мирах? Надо написать боту
и следовать инструкциям. Рекомендую почитать описание здесь - все команды бота те же что и через Телеграм. И так же, бота кто-то должен запускать. На момент написания он работает только иногда в тестовом режиме в мире Старт, поэтому если на ваше сообщение нет ответа - значит бот оффлайн...
Примечание: бот миров не поддерживает (пока) шифрование, поэтому если ему отправлять зашифрованные сообщения он не будет "понимать". В приложении Conversations надо нажать на символ замка в заголовке чата чтобы отключить шифрование. Для параноиков которые спрашивают "как же так?!" - в мирах шифрования вообще-то тоже нет, так что для этой конкретной задачи нет смысла шифровать от вас до бота, и затем открытым текстом отправлять в миры. (Для наивных параноиков: да, это значит что рассказывать ваши большие секреты в мирах - плохая идея!)
Хочу своего Telegram-XMPP бота! Программа и исходники
Качаем отсюда: http://teatr.activeworlds.ru/bots/mo..._chat_v1.0.zip. Опять же, см. инструкции "Установка и настройка бота" здесь. Очевидным образом, при установке добавились вопросы про XMPP аккаунт (для бота и ваш). Если всё успешно, бот будет пересылать сообщения в Телеграм и XMPP и обратно. Со всего мира (с привами хранителя) или из локального чата. Конечно, можно запускать только Телеграм или только XMPP - это как нравится.
Исходники в том же архиве. "Краткое руководство программиста" здесь по-прежнему актуально. Добавилась только библиотека qxmpp (её исходники там же), и еще одна зависимость - Qt5, который должен быть установлен в системе. Для начинающих программистов это последнее может быть головной болью потому что нужен 32-битный Qt (конкретно использовался Qt 5.18) - к сожалению библиотека миров только 32-битная. Как всё это делать - за рамками короткого поста на форуме, если вдруг кто-то зайдет так далеко и будут вопросы - спрашивайте телеграмой в мирах.
И напоследок...
С новым Годом всех! ;)
Вложение 202