Разработка: Мессенджер Нового Поколения (Часть 2)
Продолжение (Часть 1 здесь)
Функционал мессенджера для Андроид и iOS
Для регистрации не используется номер телефона
При разработке регистрационного процесса мессенджера со всей очевидностью стало понятно, что телефонный номер в качестве идентификатора вообще не нужен и даже мешает.
Это примерно тоже самое чтобы делать так, чтобы какое-то устройство поддерживало код Морзе, т. е. анахронизм в чистом виде.
Удивительно, но многие мессенджеры упорно продолжают регистрировать по номеру телефона — видимо получить информацию о владельце настолько важно, что они мирятся со следующими проблемами:
— Нет гарантированной доставки СМС по всем операторам.
Процент успешного приема СМС в среднем — 60–70% и это неудивительно, т. к. имеется сотни стран, а в каждой стране несколько операторов и обеспечить работоспособность каждого роута довольно трудно.
Все крупные агрегаторы СМС (например Nexmo) вообще не гарантируют доставку, а в такие страны как Афганистан например на некоторых операторах вообще невозможно отправить СМС. На каждого оператора у Nexmo несколько роутов и иногда целые направления у этого агрегатора не работают неделями.
— Отправка СМС — это дорогое удовольствие
Все помнят случай, который произошел не так давно — блокировка WhatsApp в Бразилии.
Что тогда произошло — миллионы бразильцев стали региться в других мессенджерах — например ТГ заявил что он получил миллионы новых пользователей в этой стране.
Но не все знают что отправка СМС с кодом подтверждения в Бразилию в среднем стоит 10–12 центов.
Давайте посчитаем, допустим что зарегилось 2 млн.— 10 центов*2 млн=200 000 USD.
Т.е. 200 000 USD было выкинуто за один день безвозвратно.
Почему безвозвратно? Потому что через день WhatsApp разблокировали и пользователи ушли с ТГ.
К чему я это все рассказываю?
Мне кажется, что это повод задуматься — почему же некоторые мессенджеры, несмотря на то что это неудобно и дорого для них, настойчиво продолжают требовать у пользователей номера телефонов?
Итак, мессенджер не требует номера телефона владельца, все что нужно — придумать логин, который проверяется на уникальность и пароль.
Емайл при регистрации спрашивается только для того чтобы вы смогли восстановить свой пароль. Т.е. если вы укажете неправильный емайл или его не подтвердите, то регистрация все равно произойдет, только вы не сможете восстановить пароль если вы его забыли.
Мессенджер не требует доступа к вашей записной книжке
К сожалению, практически все популярные мессенджеры требуют доступ к вашей телефонной книге, одного вашего номера телефона им недостаточно.
И люди не догадываются, насколько это может быть опасно.
Конечно, с одной стороны это очень удобно — в один прекрасный день получить уведомление о том что Сантехник Петрович тоже присоединился к WhatsApp, Viber и т. д., несмотря на то что вы с ним общались пару раз больше года назад.
Но недавний хайп вокруг приложения GetContact показывает что не все так просто — уже слито более 2 млрд. номеров, причем слиты номера тех, кто даже не устанавливал это приложение.
Представьте, что все популярные мессенджеры знают номера ваших друзей, знакомых, родных и эта информация постоянно обновляется. Можно строить пересечения, делать аналитику, таргетировать и т.д.
Стандартное шифрование
Мессенджер использует стандартный протокол шифрования TLS/SRTP.
Шифруется все, в том числе аудио и видеозвонки.
В качестве простого независимого аудита можно сделать следующее — подключить параллельно аккаунту шлюз или IP телефон, который умеет шифровать по TLS/SRTP и включить эту функцию — сервер поймет и подхватит шифрование.
Безопасность и приватность
На наш взляд, мессенджер получился более безопасный чем другие разрекламированные мессенджеры, в основном благодаря той простой причине, что мы не требуем номер и не требуем доступа к записной книжке.
Даже если представить гипотетический случай что удалась атака MITM и удалось расшифровать сообщения, то будет совершенно непонятно кому принадлежит переписка ибо нет самого главного — номера телефона и нельзя идентифицировать стороны общения.
Общение только после одобрения запроса.
В мессенджере нельзя коммуницировать с пользователем, не отправив запрос на начало общения и не получив разрешения у другой стороны.
Защита от спама.
Стандартные функции
В мессенджеры реализованы все стандартные функции:
— текстовые чаты
— отправка аудио сообщений
— отправка файлов
— шеринг местоположения
— аудио/видео звонки
— групповые чаты без ограничения количества участников
Автоудаление сообщений
В чатах можно включить аувтоудаление сообщения после истечения заданного промежутка времени.
Удаленный запрос местонахождения
Пользователь в определенном чате может включить разрешение на запрос геопозиции от другого участника чата.
В результате другая сторона может получать информацию о местоположении собеседника самостоятельно в любое время когда эта функция активирована.
Может быть полезна для контроля местоположения детей, пожилых родственников и т. д.
Пользователи рядом
Функция Пользователи рядом показывает расстояние до тех пользователей, которые также включили этот режим.
Расстояние ограничено 100 км.
При выключение этого режима вы становитесь не видны, но и вам не видно других пользователей.
Режим Push-To-Talk (PTT, Walkie-Talkie, рация)
В мессенджере реализован реалтаймовый PTT — режим рации.
Режим работает если включен у каждого участника чата.
Также работает в групповых чатах. Если в групповом чате у кого-то не включен такой режим, то он просто не слышит такие сообщения.
Количество участников в группе с рацией не лимитировано.
Можно задать ночной режим — т. е. установить период времени, в котором сообщения Walkie-Talkie не будут слышны (например в ночное время).
Режим Live TV
Функция Live TV позволяет превратить смартфон пользователя в видеокамеру.
Можно включить этот режим как для любого пользователя мессенджера, так и для определенной группы.
Позволяет быстро организовать видеонаблюдение за офисом, квартирой, дачей, автомобилей и т. д.
SIP интеграция
SIP в мессенджере поддерживается в двух режимах — SIP Trunk и SIP клиент.
Режим SIP Trunk
Позволяет подключить паралелльно зарегистрированному аккаунту любой IP телефон, VOIP шлюз или транк от любой IP АТС (виртуальной, на Астериске и т. д.)
В соотвествующем разделе SIP equpment любого аккаунта находятся данные для подключения.
Если подключить IP телефон, то при звонке от пользователя мессенджера будет идти звонок и на приложение и на IP телефон.
С приложения можно сделать интерком вызов, который будет устанавливать связь между IP телефоном и приложением.
В случае подключения транком от VOIP АТС звонок будет приходить соответственно на транк АТС, т. е. из экосистемы мессенджера можно делать звонки на любую АТС и обрабатывать их также, как будто бы сделано подключение по DID.
Количество одновременных звонков не ограничивается.
SIP клиент с пуш уведомлением
Режим SIP клиент предназначен соответственно для регистрации мессенджера в качестве клиента, аналогично таким приложениям как Csimple, Linphone и т. д.
Но в отличие от таких клиентов мессенджер может работать в спящем режиме и соответственно имеет очень малое потребление при ожидании.
Как известно, проблема всех SIP клиентов в том что они должны периодически поддерживать регистрацию с сервером SIP регистрации, что означает периодическую отправку пакетов регистрации. В результате такие клиенты не могут переходить в режим ожидания и находятся всегда онлайн, чем разряжают батарею смартфона. В результате большинство пользователей использует такие клиенты только для исходящих звонков.
Наш SIP клиент лишен этого недостатка — при входящем звонке приходит пуш уведомление, которое «будит» приложение и только тогда происходит запуск.
Т.е. теперь, если кто-то использует DID номера с SIP регистрацией, может получать и входящие звонки по этим номерам в спящем режиме смартфона.
Поддерживается до 8 одновременных SIP регистраций.
Может быть полезно как для частных лиц, которые используют VOIP провайдеров для осуществления недорогих звонков, так и для бизнеса — можно вывести внутренний номер офисной АТС в мессенджер и не опасаться что такой режим разрядит батарею.
Также обнаружилась интересная возможность работы в таком режиме — работа одного SIP аккаунта, одной учетной записи одновременно на разных устройствах.
При этом, если приходит входящий звонок на SIP номер, то звонят сразу все телефоны.
Может быть полезно тем, кто хочет сэконмить, взять, например платный аккаунт у одного провайдера и раскидать на нескольких человек.
Или например, взять один номер для входящих звонков и раскидать его сразу нескольким людям (сотрудникам, родным и т.д.).
Делается так — регистрируемся один раз, т.е. получаем только один логин.
Далее регимся у SIP провайдера, получаем учетную запись, прописываем ее в мессенджере.
Далее остальные пользователи скачивают мессенджер и входят под одним и тем же логином, т. к. мессенджер поддерживает одновременную работу с одним логином с нескольких устройств.
Теперь можно делать звонки под одной SIP учеткой и принимать звонки на одному SIP номеру одновременно.
Количество пользователей — практически неограниченно.
Интеграция с Alexa Echo от Amazon
Также мы интегрировали бота Алекса от Амазон в мессенджер.
В результате практически все скиллы Алексы теперь доступны пользователям мессенджера.
При начальном входе в этот режим потребуется или ввести существующий логин для Амазон или создать новый.
С помощью Алексы вы можете узнавать погоду, время, заказывать голосом такси (Uber), пиццу, делать покупки на Амазон и многое другое — доступно около 20 000 скиллов.
Но самое главное — вы можете голосом управлять умными розетками, лампами, выключателями, термостатами, умными замками и даже автомобилями.
С каждым днем появляется все большее количество устройств, поддерживающих Алексу, начиная от дешевых выключателей от Sonoff за 5$ и заканчивая браслетами Fitbit.
Интеграцию с Alexa Echo мы реализовали в трех режимах:
— Голосовое управление
Здесь все понятно — нажимаем кнопку, говорим, включаются устройства или идут ответы на вопросы и т.д.
— Выполнение текстовых команд
Аналог мессенджера — пишем в строке вопросы или команды Алексе, они выполняются.
Удобно когда нужно соблюдать тишину.
— Выполнение заранее заданных паттернов команд по тапу на кнопки
В этом случае создаются кнопки с заранее запрограммированными командами (которые часто выполняются) и потом нажатием осуществляется их выполнение — наподобие пульта дистанционного управления.
Такой пульт естественно работает без лимита по расстоянию, можно управлять домом за тысячи километров.
Полезно тогда когда надо соблюдать тишину и одновременно лень или неудобно писать текст.
API для Alexa
Мы пошли дальше и реализовали простое API для того, чтобы можно было через включенный мессенджер управлять всеми устройствами и вообще Алексой из других устройств — с сайта, из Ардуино, из другого мессенджера.
В этом случае нужно просто выполнить определенные команды json.
Боты
В экосистеме мессенджера можно создавать ботов.
Боты бывают двух видов:
Стандартные боты
Их может может создавать любой пользователь, используя API.
В строке поиска такие боты ничем не отличаются от обычных пользователей.
Бизнес боты
Отличаются тем что название такого бота начинается с амперсанта @ и при добавлении они попадают в определенный раздел и не смешиваются в общем списке с обычными пользователями.
Таких ботов можем создать только мы и они являются официальными ботами.
Этим достигается также защита от киберсквоттинга имен официальных ботов.
Бизнес аккаунты
Бизнес аккаунты — это совокупность трех сущностей:
1. Официальной страницы бизнеса
2. Официального бота компании (начиная от бота-визитки до простого интернет-магазина)
3. Интеграция с IP АТС компании — возможность для обычного пользователя делать прямые аудио/видео звонки в суппорт, техподдержку и т. д.
Бизнес аккаунты в названии имеют знак амперсанта @ и также попадают в отдельный раздел в мессенджере и создаются только администрацией.