IM
Требования к средству общения
Для общения через интернет необходимо средство, обладающее, в частности, следующими свойствами:
- клиенты для мобильных платформ (Android/iOS) и для десктопа (Windows/Linux/Mac)
- шифрование хранимых сообщений (чтобы доступ к локальной переписке мог быть получен только после авторизации)
- шифрование передачи (сообщение должно шифроваться на отправителе и расшифровываться на получателе)
- контроль подключенных клиентов (должна быть регистрация устройств/программ, используемых для общения через аккаунт)
Требования, снижающие риски:
- свободный исходный код
Дополнительные желаемые возможности:
- голосовое общение
- видеообщение
- передача файлов
Популярные решения
До недавнего времени были популярны способы взаимодействия двух видов:
1. Соцсети/Skype/Jabber
В них регистрация пользователя через логин/пароль, и далее он может с любых устройств подключаться и общаться. При этом на остальные устройства переписка тоже попадёт, причём только ВК позволяет посмотреть, какие устройства подключены. Чтобы написать человеку, нужно знать его логин.
2. WhatsApp/Viber/Telegram
В них идентификация личности производится через привязку к телефонному номеру (предполагается, что он неотделим от личности). После установки приложения на смартфон можно узнать, у кого ещё есть такое же приложение и общаться с ними. Чтобы написать человеку, нужно знать его номер телефона (вроде бы в Telegram появился nickname).
На данный момент у Viber/Telgram есть нормальные десктопные клиенты. У WhatsApp/Viber есть поддержка голосового общения.
Подходящие решения
Подходящих решения есть два:
- TOX (протокол TOX)
- Telegram (протокол MTProto)
Telegram
Есть клиент для мобильного в официальных репозиториях. Бинарные дистрибутивы клиентов выложены, сборка пакетов в процессе.
TOX
Клиент (Anton) для Android доступен через отдельный репозиторий для FDroid. Клиент для Linux собран для Fedora/Ubuntu (популярный — qtox), сборка пакетов в процессе.
Декларируется поддержка голосового общения. Отсутствует привязка к номеру.
Идёт тестирование.
Универсальный протокол
Предыстория
WhatsApp: Отдельная программа. Идентификация через номер телефона — он уникален. Закрытый протокол, всем нужно поставить их программу, и общаться именно через неё. Возможность отправки сообщений, видео, аудио, фото.
Xabber: Отдельная программа. Агрегатор мессенджеров. При отправке нужно выбирать куда отправлять сообщения.
IM+. Недавно из него исключили Skype и он стал мало интересен, разве что как агрегатор социальных сетей.
Универсальный
Универсальный мессенджер: когда ты пишешь _человеку_, а ему приходит через тот мессенджер, которым он в основном пользуется.
Что предлагается: Программа работает с обычными сообщениями (как Hangouts). Отправка производится на сервер, который берёт на себя заботу по доставке сообщения клиенту по одному из доступных протоколов (VK, FB, Jabber, Hangouts, WhatsApp, Skype, Viber, Telegram и пр.) Клиент может выбрать, что ему предпочтительнее (или это само определяется?). В случае невозможности доставки, отправляется по SMS, с приглашением подключиться (поставить программу и себе, или хотя бы где-то зарегистрироваться). На самом деле сообщение должно быть зашифровано при отправке, поэтому вариант с сервером не годится, как позволяющий перехват (требуется доверие к серверу).
Ссылки
- UppTalk — бесплатные звонки и SMS. От клиента выходит через данные, а потом приземляется обычными SMS и вызовами. На самом деле кредитная система, деньги в которой возобновляются через просмотр рекламы.
- Python WhatsApp library, ссылка через http://www.wazapp.im/