Вопросы и ответы

Ответы на вопросы, с которыми к нам действительно приходят. Где ответа нет, так и написано: FAQ, в котором всё прекрасно, бесполезен ровно так же, как отсутствующий.

Техническая сторона — в документации API; что сделано, а что нет — на странице технических наработок.


Общее

Основы

Группы и каналы

Имена пользователя и ссылки

Безопасность

Секретные чаты

Аккаунт

Боты и API

Если что-то не работает


Общее

Что такое Ansible?

Мессенджер: переписка, группы и каналы, файлы, звонки, боты. Работает на собственном протоколе MVSy 1.0 — сервер, транспорт и хранилище написаны нами, а не собраны из чужого.

Аккаунт один на все устройства: переписка синхронизируется между телефоном, компьютером и браузером.

Чем он отличается от других мессенджеров?

Тремя вещами, каждую из которых можно проверить, а не только прочитать:

На каких устройствах работает?

Насколько проект готов?

Основное работает: переписка, группы и каналы, форумы, файлы, стикеры, истории, реакции, платежи и подарки, секретные чаты, звонки один на один.

Чего нет: групповых звонков (методы в схеме есть, но медиа-часть требует SFU, и он не поднят), нативного клиента для macOS, публичных сборок под Linux и iOS. Часть выложенных сборок отладочные. Полный перечень — на странице технических наработок.

Кто за этим стоит, где вы зарегистрированы и как зарабатываете?

Пока не решено — и это честный ответ, а не уход от вопроса.

Как проект будет зарабатывать, будет ли реклама, кому он принадлежит, по какому праву отвечает на запросы государственных органов и как выполняет требования вроде GDPR — решения владельцев, а не разработчиков. Пока они не приняты и не подписаны, писать их на странице сайта нечестно: обещание, которое назавтра поменяется, хуже прямого «не решено».

Что уже можно сказать точно — в манифесте. Про модерацию — отдельная страница.

Есть ли политика конфиденциальности?

Отдельного юридического документа пока нет — он появится вместе с ответами на вопрос выше. Технически же всё, что сервер видит и чего не видит, описано без прикрас: в манифесте и в разделе «Безопасность» ниже.


Основы

Кому я могу написать?

Любому, у кого есть аккаунт: по номеру телефона, если он есть в ваших контактах, или по имени пользователя. Номер собеседника для этого знать не обязательно.

Кто может написать мне?

По умолчанию — любой, кто знает ваш номер или имя пользователя. В настройках приватности это сужается: можно разрешить писать только контактам, а отдельных людей заблокировать.

Что значат галочки?

Одна — сообщение доставлено на сервер и ушло получателю. Две — получатель его прочитал.

Можно ли скрыть «был в сети»?

Да, в настройках приватности. Скрыв своё время последнего посещения, вы перестанете видеть чужое — это симметрично намеренно, иначе настройка была бы односторонним преимуществом.

Можно ли удалить сообщение?

Да — у себя или сразу у обоих, без ограничения по времени. Удалённое у обоих исчезает и из переписки собеседника.

Сообщения секретного чата удаляются на обоих устройствах, а на сервере их и не было в читаемом виде.

Есть ли звонки?

Один на один — да, со сквозным шифрованием: ключ вырабатывают сами устройства, сервер только передаёт пакеты.

Групповые — пока нет. Методы в схеме есть и обработчики написаны, но медиа-часть требует отдельного сервера потоков (SFU), и он не поднят. Обещать дату не будем.

Как позвать друга?

Ссылкой вида ansible.su/имя, если у вас есть имя пользователя. Она открывается в браузере и предлагает перейти в приложение — устанавливать его, чтобы просто посмотреть, кто вам пишет, не требуется.


Группы и каналы

Чем канал отличается от группы?

В группе пишут все участники, в канале — только администраторы, а остальные читают. У канала может быть привязанная группа обсуждений: тогда под каждым постом появляются комментарии.

Как создать группу или канал?

В меню нового чата. Обычная группа превращается в супергруппу автоматически, когда участников становится много; супергруппу можно перевести в режим форума — с отдельными темами вместо одной ленты.

Как работают пригласительные ссылки?

Ссылку создаёт администратор. Её можно ограничить сроком и числом переходов, включить заявки на вступление — тогда каждого нового участника придётся одобрить, — и отозвать в любой момент.

Отозванная ссылка перестаёт открываться, и страница отвечает на неё так же, как на несуществующую. Это сделано намеренно: иначе разница в ответах позволила бы перебирать чужие ссылки.


Имена пользователя и ссылки

Что такое имя пользователя и как его получить?

Это короткое имя вместо номера: по нему вас находят в поиске и по нему работает ссылка ansible.su/имя. Задаётся в настройках профиля, если не занято.

Узнают ли мой номер, если написать по имени?

Нет. По умолчанию номер видят только те, у кого он уже записан в контактах; в настройках приватности это можно сузить ещё.

Имя занято или кто-то выдаёт себя за меня — что делать?

Занятое имя мы не отбираем и не перепродаём. Если под вашим именем кто-то намеренно выдаёт себя за вас, это повод для жалобы — как её разбирают, описано на странице модерации.


Безопасность

Насколько это защищено?

Соединение с сервером зашифровано всегда — не «включается в настройках», а с первого пакета. Клиент и сервер договариваются о ключе по Диффи — Хеллману, дальше идёт AES IGE, целостность каждого сообщения проверяется по msg_key.

Мы пробовали читать собственный трафик со стороны: полезная нагрузка не читается. Что при этом видно постороннему — длины пакетов и идентификатор ключа. Это метаданные, и мы про них знаем.

Что видит сервер?

Облачные чаты — видит. Так устроена любая система, где переписка открывается на новом устройстве без переноса ключей: чтобы отдать вам историю на только что установленном клиенте, сервер должен уметь её прочитать. Это осознанный размен удобства на приватность, и мы предпочитаем назвать его вслух, а не прятать за словом «шифрование».

Секретные чаты — не видит. Там ключ вырабатывают устройства, а сервер работает слепым релеем: передаёт байты, не имея возможности их прочитать. Это не обещание не смотреть, а отсутствие технической возможности.

Как работает двухфакторная защита?

Включается в настройках: помимо кода из сообщения при входе спрашивается пароль. К нему можно привязать почту — тогда пароль восстанавливается по коду с неё.

Если почта не привязана и пароль забыт, восстановить его нельзя: сброс возможен только вместе со сносом аккаунта.

Есть ли вход по passkey?

Да. Passkey создаётся на устройстве, и вход происходит по PIN-коду или биометрии вместо кода из сообщения. Поддержка есть не у каждого клиента — если метод недоступен, сервер отвечает PASSKEY_NOT_SUPPORTED.

Почему не сделать все чаты секретными?

Потому что тогда переписка перестанет открываться на новом устройстве. Ключ секретного чата живёт только на двух устройствах, и восстанавливать историю серверу будет не из чего — он её не хранит в читаемом виде.

Это не отговорка, а прямое следствие: либо синхронизация между устройствами, либо сервер, который ничего не может прочитать. Выбор оставлен вам — по чату.

Почему вам можно верить?

Правильный ответ — «не верьте, проверьте». Код клиентов открыт, протокол описан, схема опубликована целиком, а ошибки, которые возвращает сервер, собраны на страницах методов из его же исходников.

Утверждение «данные защищены» стоит ровно столько, сколько стоит возможность его перепроверить.


Секретные чаты

Что такое секретный чат?

Переписка между двумя конкретными устройствами со сквозным шифрованием. Ключ вырабатывают сами устройства, сервер в обмене не участвует и прочитать сообщения не может.

Отсюда и свойства: такой чат не появится на других ваших устройствах, историю нельзя восстановить после переустановки, а пересылка из него ограничена.

Как работает таймер самоуничтожения?

Задаётся на чат: после прочтения сообщение исчезает у обоих через выбранное время. Отсчёт начинается с момента, когда получатель его открыл.

Что за картинка с ключом?

Отпечаток общего ключа. Если у вас и у собеседника картинки совпадают, значит вы договорились об одном и том же ключе и между вами никто не встал. Сверять её стоит по другому каналу — голосом, при встрече.


Аккаунт

Как выйти из аккаунта на чужом устройстве?

В настройках есть список активных сессий: там видно устройство, приложение и адрес, и любую сессию можно завершить. Если устройство недоступно — завершайте сессию с любого другого.

Как сменить номер телефона?

В настройках аккаунта. Переписка, группы и контакты остаются: аккаунт привязан не к номеру, а к внутреннему идентификатору.

Как удалить аккаунт?

Из приложения — в настройках аккаунта.

Кнопка на my.ansible.su пока отвечает ошибкой, и это сделано осознанно. Снос затрагивает сообщения, диалоги, владение каналами и хранилище в двух базах; кнопка, привязанная к недостроенному сносу, потеряла бы часть данных необратимо и оставила бы остальные. Лучше честная ошибка, чем половина удаления.

Отдельно работает самоуничтожение по бездействию: срок задаётся в настройках, и по его истечении аккаунт удаляется сам.

Телефон украли. Что делать?

С другого устройства завершите его сессию в списке активных — этого достаточно, чтобы отрезать доступ. Если двухфакторная защита не была включена, включите её сразу: без пароля владение номером даёт вход.

Секретные чаты на том устройстве расшифровать без него нельзя, но и вам их не вернуть: ключ был только там.


Боты и API

Как создать бота?

Через бота-менеджера в самом мессенджере: он выдаёт токен, которым бот подключается к серверу. Отдельный номер телефона для бота не нужен.

Можно ли написать свой клиент?

Да, для этого всё и опубликовано. api_id и api_hash выдаются автоматически на my.ansible.su — без заявки и без объяснения, зачем вам клиент.

Дальше — обзор API, схема и список методов.

Можно ли поднять свой сервер?

Нет: серверный код закрыт. Открыты клиенты и протокол — этого достаточно, чтобы проверить, что именно уходит с вашего устройства, но не чтобы поднять свою сеть.

Хочу помочь. Чем?

Полезнее всего — найденные ошибки и дыры: и в клиентах, чей код открыт, и в протоколе, который описан. Отдельной программы вознаграждений у нас пока нет, и обещать её мы не будем, пока она не заведена.


Если что-то не работает

Не приходит код для входа

Если вы уже входили с другого устройства, код приходит внутрь мессенджера, а не по SMS — проверьте чат со служебным аккаунтом там.

Если это первый вход, код идёт сообщением на номер. Он живёт ограниченное время: просроченный код нужно запрашивать заново, сервер ответит PHONE_CODE_EXPIRED.

Не приходят уведомления

Проверьте, не отключены ли они для этого чата и не ограничивает ли система фоновую работу приложения.

Честно: доставка через сторонние службы уведомлений у нас пока не подключена, и на некоторых сборках Android уведомления приходят, только пока приложение живо в фоне. Это в списке несделанного.

Куда сообщить о проблеме?

Про клиенты — в их репозитории, они перечислены на странице приложений. Про нарушения и жалобы на содержимое — страница модерации.