Как сделать свой мессенджер: «Хочу как Дуров»: пишем простой мессенджер – Как создать свой собственный корпоративный мессенджер?

Содержание

Как создать свой собственный корпоративный мессенджер?

Кратко про госучрежденияУ всех на слуху сейчас Telegram, Viber, WhatsApp, Skype и Slack. Это удобные мессенджеры, работают на смартфонах и компьютерах, в них есть куча всяких полезных штук, можно даже звонить, экономя деньги на международных переговорах.

Всё круто, кроме одного, очень важного момента.

Серверы этих мессенджеров находятся "где-то там, за океаном". Вы подключаетесь к ним через Интернет и пользуетесь тем, что вам дают, не больше и не меньше. Чем-то там управлять и контролировать вы их никак не можете.

Отсюда вытекает несколько неприятностей.


1. Вы зависимы от чужого сервиса


Блокировка Telegram в России Если мессенджер "упадёт" хотя бы на сутки или его заблокируют по какой-то причине, как Telegram в России, — неудобства обеспечены. Люди привыкли общаться, обмениваться документами и фотками. Все было налажено и в один миг оказалось разрушено. Придётся строить схему работы с самого начала, но уже на базе другого мессенджера.

История сообщений и налаженные контакты будут потеряны, всё придётся выстраивать с нуля.


2. Вы не контролируете свой корпоративный мессенджер


Это само собой разумеется, вы же пользуетесь чужим сервисом. Бесплатно. Значит, вы для него — товар. Ваши личные данные, контакты, телефонная книга, местоположение, музыкальные предпочтения, текст сообщений, содержимое файлов — всё это складывается в рекламный профиль, который потом выгодно продаётся. Это не шутки, почитайте лицензионные соглашения, которые вы принимали, даже не читая, чтобы установить программу.

Публичные мессенджеры очень удобны, не надо разбираться ни в каких технических тонкостях, они работают сразу, привязавшись к вашему номеру мобильного. Но обратная сторона удобства в том, что это мейнстрим. Никаких доступных вам настроек на стороне сервера, никаких ограничений, с кем можно общаться, а с кем — нет. Нелояльный сотрудник может легко "слить" важную оперативную информацию конкуренту, а вы даже об этом не узнаете.

К тому же, в большинстве мессенджеров, кроме Slack, не получится ограничить круг общения сотрудников только рабочими контактами, чтобы они не тратили зря своё рабочее время.


3. Ваша переписка вам не принадлежит


Параноидальный котэ Конечно, можно находиться в розовых облаках с радужными единорогами, дескать "мои сообщения никто читать не будет". Расскажите об этом шефу службы безопасности банка. Или главному бухгалтеру какой-нибудь розничной сети. Вас живо опустят на бренную землю.

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

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

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


4. Что делать?


Окей, страху нагнали. Выходит, использовать публичный мессенджер в коммерческих целях для серьёзной компании — нельзя. Но получить в своё пользование сервер мессенджера уровня WhatsApp или Telegram — это из разряда фантастики. Да и если бы это вдруг стало возможным, вряд ли у вас нашлась бы такая техническая площадка и специалисты, чтобы всю эту махину обслуживать. Из пушки по воробьям палить.


5. А такие мессенджеры есть?


Есть, и не один. В статье будем говорить о корпоративном мессенджере MyChat, который ведёт свою историю ещё с 2004 года, и уже давно работает по всему СНГ.

Параноидальный котэ

В программе русский интерфейс и русская справка. И, что немаловажно, русскоязычная служба поддержки. На официальном форуме больше 28 тысяч сообщений, он "живой" и там активно отвечают.


6. Как его установить?


В общем, на всё про всё вам понадобится минут 20. Без шуток.

Сначала качаете сервер с официального сайта, можно заказать бесплатную версию (максимум 20 онлайн-подключений). Для теста или для небольшой компании этого за глаза хватит. Установщик "весит" около 100 мегабайт.

Затем устанавливаете MyChat Server на любом компьютере внутри своей компании. Специального серверного железа для этого не надо, хватит и обычного офисного компьютера с Windows. В справке описано, как устанавливать сервер, по шагам.

После этого нужно подключиться к вашему серверу по IP адресу или доменному имени клиентским приложением, тут уже широкий выбор: Windows, Linux, macOS, Android и даже WEB. Качаем на сайте разработчика.

Можно скачать уже настроенный клиент прямо с вашего сервера, тут описано, как это сделать.


7. А как подключаться через Интернет к моему мессенджеру?


Тут всё просто, нужен внешний IP адрес, в статье про настройку работы MyChat через Интернет это подробно рассказывается.

Все ваши люди "снаружи" со смартфонами и из других офисов будут подключаться на внешний "белый" IP адрес (обычно это ваш роутер). А роутер уже перебросит их в вашу локальную сеть, подключив к серверу.

Те сотрудники, которые физически находятся с сервером мессенджера MyChat в одной сети, подключаются к нему напрямую, по локальной сети или Wi-Fi.


8. Насколько это безопасно?


Чужой и бабка Это серьёзный вопрос, потому что, раз уж вы хотите свой мессенджер, то вопросы безопасности уже не выйдет переложить на чужие плечи.

Трафик шифруется сеансовыми динамическими ключами по TLS1.2, используется OpenSSL. Помимо этого, все аудио и видео звонки также зашифрованы.

Web-сервисы MyChat, такие как: обычный чат, админка, встроенный форум, управление проектами Канбан и чат поддержки на сайт, защищаются с помощью HTTPS. Сертификаты вы используете свои собственные.

Сообщения и документы хранятся только на вашем сервере и больше нигде. MyChat может функционировать вообще автономно, даже без Интернета, в локальной сети или в корпоративной изолированной среде.

Кроме этого, в сервере MyChat есть фильтры по IP/MAC адресам и типам приложений, чтобы ограничить клиентские подключения из внешних сетей:

Фильтры по IP/MAC адресам и типам приложений в сервере MyChat

▷ Cоздание мессенджера на iOS и Android ➔ разработка с нуля

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

Исследование компании SimilarWeb: в 168 странах мессенджеры лидируют по количеству скачиваний.

В 2016 году в мире было 1,58 млрд пользователей мессенджеров. По данным Портала статистики Statista к 2021 году эта цифра вырастет до 2,48 млрд. А это уже треть населения Земли. Так что, возможно, уже сейчас имеет смысл создать свой мессенджер на Андроид или iOS.
 

Стоит ли создавать еще одно приложение messenger?


У каждого пользователя на телефоне установлены два-пять мессенджеров. Все они используются в той или иной степени.

Со временем некоторые приложения-мессенджеры теряют лидерские позиции, уступая место новым. Так, за один год Skype с первого места, которое он занимал несколько лет,  переместился на четвертое. На пятом месте Telegram. Но, похоже, это тоже временный расклад, так как тот же Telegram быстро завоевывает рынок. В 2017 году наметился новый тренд - публичные каналы и чаты. Их наличие привлекает новых пользователей, по сути, превращая мессенджеры в социальные медиа. Возможно, это и стало причиной роста популярности Telegram.

Рейтинг популярности мессенджеров

Источник vc.ru

Статистика роста количества пользователей мессенджеров показывает: потенциал у приложений для обмена сообщениями есть. Но при запуске стартапа нужно быть готовым к конкуренции. Разработка мессенджера для iOs или на Andriod начинается с правильной постановки задачи и подбора инструментов. Так мы получим приложение, которое удовлетворит потребности пользователей.

 


Как создать мессенджер, востребованный пользователями


Изначально мессенджеры создавались или как чаты, например WhatsApp, или как приложение для звонков - Skype, Viber. Позже в мессенджеры стали добавлять функции, которых изначально не было. Так, в WhatsApp добавились функции аудиозвонков, потом видео. Дальше появились открытые API, боты, маски, статусы, приемы платежей, публичные каналы. Однако внедрить новый функционал или изменить структуру, когда у мессенджера миллионы пользователей, сложно. В том же WhatsApp до сих пор нет API и ботов.

Основная сложность при создании приложения для отправки сообщений на Android или iOS - разработка архитектуры. Структуру приложения нужно разработать таким образом, чтобы в нее можно было безболезненно добавлять новые возможности.

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


Наш подход к разработке архитектуры мессенджера


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

В WOXAPP мы проектируем и разрабатываем архитектуру по принципам Clean architecture.

Чистая архитектура, описанная Робертом Мартином, позволяет спроектировать гибкую и масштабируемую систему.

В современном программном обеспечении это распространенная практика, но достичь Clean architecture получается не у всех. В своей работе мы придерживаемся ряда определенных принципов и получаем ожидаемый результат. На рисунке новая архитектура, которую презентовал Google. C помощью этого подхода и наших собственных доработок мы реализовываем чистую архитектуру на Android.


 

Гибкость, масштабируемость

Пишем мессенджер с открытым исходным кодом / Habr


Давным-давно в одной далекой стране была компания America Online. И был у нее удивительный частный Интернет за заборчиком, где вместо URL-ов были "keywords": что-то среднее между адресом веб страницы и купленным ключевым словом в рекламе. Компании боролись за интересные ключевые слова, как сейчас борются за домены, а реклама выглядела так: "посетите нас во всемирной сети по адресу www.example.com, или наберите AOL Keyword: 'banking'".

История имеет свойство повторяться. Сейчас роль Америки Онлайн играют основные мессенджеры: все они за заборчиками, несовместимы друг с другом, все изобретают свои keywords, желают схватить пользователя и уже никогда не отпускать. Компании не заинтересованы в открытости: более крупные игроки не желают делиться пользователями с более мелкими и уж тем более становиться открытыми. В результате невозможно послать сообщение даже из WhatsApp в Facebook Messenger, несмотря на то, что оба принадлежат одной компании. Да и пользователи ценят надежность и удобство выше абстрактной открытости, хотя многих раздражает, что часть друзей, например, в Telegram, часть в WhatsApp, а родители в Skype.

А вот роль открытого интернета, к сожалению, сегодня не играет никто. Ситуацию хочется изменить. Если XMPP не справился, может быть кто-то другой сможет? И тут рассказ про Tinode.


Что такое Tinode

Tinode — мессенджер с полностью открытым исходным кодом на Github. Все клиентские приложения (ReactJS и Андроид) лицензированы под Apache 2.0, для того, чтобы упростить создание коммерческих приложений на основе Tinode, сервер под GPL 3.0. Цель проекта — создать федерированный мессенджер, который прост и удобен как для пользователей, так и для операторов. Поставил — и все работает, как MySQL или Nginx. В долгосрочной перспективе цель проекта – создать открытую альтернативу существующим проприетарным мессенджерам, повторить в отношении мессенджеров то, что сделал Android в отношении операционных систем для мобильных телефонов.


Что он умеет


Поддержка множественных устройств.

У всех есть смартфон, иногда не один, плюс часто удобно использовать web-приложение с основного компьютера. Поэтому поддержка множественных устройств была одним из главных требований к проекту, что определило основные архитектурные решения. Если пользователь авторизуется с нового устройства, то не хочется, чтобы он начинал с чистого листа как в WeChat. А это означает, что нужно и адресную книгу, и сообщения хранить на сервере, что и было реализовано.

Очевидно, что хранение информации пользователя на сервере подходит не всем, так как создает риски нежелательного доступа: чем больше копий данных хранится в разных местах, тем выше вероятность, что что-то пойдет не так. Для этого предусмотрена возможность эфемерных сообщений и сообщений, которые удаляются с сервера после доставки клиенту. Технически, существует и возможность не хранить контакты на сервере постоянно — клиент отправляет их на сервер в момент подключения (login), затем они удаляются после logout. Однако, авторы посчитали это непрактично сложным и не стали делать.


Онлайн статус

Трансляция онлайн/оффлайн статуса пользователя в мессенджерах воспринимается как что-то само собой разумеющееся, однако, это весьма тяжелая в реализации фича. Нужно, чтобы она "просто работала", предсказуемо и надежно. Надежность работы исключила генерацию статуса на клиенте, как это реализовано в некоторых XMPP приложениях. В случае Tinode, сервер генерирует онлайн статус и рассылает по адресной книге, что, опять же, требует хранения контактов на сервере и их синхронизацию с клиентскими приложениями.


Простота протокола

Протокол хотелось сделать таким, чтобы кривая обучаемости была пологой – не нужно знать всего, чтобы начать. Спецификация получилась очень компактной: 10 запросов клиента, 5 ответов сервера. Например, по сравнению с 200+ страницами только core XMPP, не считая extensions, это почти записка на салфетке.

Представление данных отделено от сетевого протокола. Протокол лишь требует определенную структуру данных, но не требует, чтобы они передавались по сети каким-то определенным образом. Сейчас сервер поддерживает JSON по websocket и long polling, c TLS и без, плюс gRPC по TCP. Поддержка gRPC была реализована одним разработчиком за две недели, включая написание текстового клиента на Питоне. Добавление поддержки иных форматов данных и протоколов, например, MessagePack или Noise, вряд ли займет намного больше.


Расширяемость

С одной стороны, хочется, чтобы все работало сразу, например, чтобы основной функционал был сравним с WhatsApp и Telegram прямо из коробки. С другой, потребности у людей разные и нужно иметь возможность расширять функционал. Поиск баланса похож на выбор между монолитной архитектурой и микросервисами: нежелательно иметь неизменяемый монолит, и, аналогично, плохо получить получить зоопарк микросервисов, управление которыми превращается в отдельную задачу.

Было принято решение разделить функционал на три части — основной, сетевой и вспомогательный. Основной — это то, что позволяет Tinode выполнять основную функцию — пересылать сообщения. Сетевой — функционал взаимодействия в серверами, как формат передаваемых данных и сетевой протокол. Вспомогательный — то, что решает чью-то локальную задачу, например, поддержка конкретной базы данных в качестве бэкенда или какой-то метод авторизации, но никак не влияет на другие сервера или пользовательские приложения. Основной функционал реализован в основном коде. Сетевой функционал выделен, но также хранится в основном репозитории для того, чтобы по возможности избежать создания несовместимых серверов. Вспомогательный реализован в виде плагинов — компилируемых Go интерфейсов (поддержка разных баз данных, разных авторизаторов, пуш нотификации, валидаторы по емейл или телефону, поддержка каптчи и т.п.) и gRPC endpoints (чатбот и поисковый интерфейс).


Прочее


  • Возможность, но не требование привязки счета к телефону или емейлу или ещё чему угодно.
  • ID пользователей, которые трудно угадать, и, соответственно, трудно разослать спам.
  • Tags, позволяющие реализовывать поиск людей как в WeChat (и, подобно WeChat, встроить в мессенджер службу знакомств) или разделить организацию на отделы как в Slack.
  • Возможность подключения пользователей без регистрации, необходимая, например, для организации службы поддержки через чат.
  • Интерфейс и пример подключения чатботов.
  • Планы создания каналов как в Telegram.

Почему Go?

Сервер для мессенджера по сути роутер: получает сообщение из одного канала, как-то его обрабатывает, затем передает в другой канал или каналы. Go (как и Erlang, но это уже другая история) идеально подходит для создания такого функционала т.к. содержит примитивы goroutine и chan, делающие организацию потоков и обмен данными между ними эффективным и простым.

Безусловно, роутер можно написать и на C/C++, и на Java. Однако, при прочих равных, код скорее всего получится более сложным и потребует больших усилий для избежания дедлоков.


А что потом?


Федерация

Одна из основных задач для Tinode на ближайший год — создание платформы для федерации. Так, чтобы любой желающий мог запустить свой Tinode сервер, который бы мог обмениваться сообщениями с любым другим сервером, точно так, как это возможно с емейлом. Уже сейчас возможна кластеризация серверов. Сетевой обмен между сервером и клиентами идет по TLS websocket, что для внешного наблюдателя мало отличимо от простого HTTPS трафика.

Публичный DNS, вероятно, будет использоваться, по крайней мере первоначально. Однако, в будущем поиск чат-серверов будет осуществляться также, как это сделано в Bittorrent — при помощи DHT, распределенной хеш таблицы.

Хочется также избежать и проблем, за которые часто критикуют XMPP. Например, XMPP сервера очень разговорчивы. До половины сообщений является дублирующими, когда XMPP-клиент рассылает онлайн уведомления индивидуально каждому контакту из адресной книги.


Репутация и распределенное принятие решений

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


  • Криптографическая идентификация сервера-отправителя.
    Изначально, SMTP вообще не предполагал какой-либо идентификации отправителя. Не стоит снова наступать на эти грабли. Каждый сервер, желающий установить контакт, будет представлен криптографическим сертификатом. "Ну да", скажете вы, "я сейчас нагенерю 100500 сертификатов и каждый раз буду представляться новым чистым сервером". И будете правы. Поэтому следующий пункт.
  • Распределенный учет репутации.
    Когда к нам стучится новый, неизвестный сервер-отправитель, мы сделаем запрос к известным серверам с просьбой сообщить рейтинг нового сервера. И в зависимости от ответа установим, например, скорость, с которой новый сервер может посылать нам сообщения.

Если посмотреть на распределенную систему принятия решения и учета репутации с высоты птичьего полета, то станет заметно сходство с blockchain. Возможно, blockchain (но не криптовалюта) может быть использован в качестве основы для построения распределенной системы репутации, хотя пока и не очевидно каким образом.


Шифрование

Ну а как же в наши дни без шифрования сообщений? Чаты между двумя людьми, вероятно, будут шифроваться OTR. С групповыми чатами пока непонятно. Все известные схемы шифрования групповых чатов либо имеют значительный недостатки, либо тяжеловесны и сложны в реализации. Также, не очевидно, насколько важно шифрование групповых чатов: "Если тайну знают двое – это уже не тайна, а если трое – это уже базар."

Что вы по этому поводу думаете?

Мессенджер для бизнеса: как создать?

Идея создания собственного или корпоративного мессенджера возникает, когда у вас уже есть сотни, а то и тысячи клиентов, с которыми вы постоянно общаетесь. Порой в это время у вас возникает необходимость дать клиентам общаться между собой. Да и не просто писать текстовые сообщения, а создавать группы, отправлять фото, видео и файлы, в общем, все те вещи, которые мы делаем ежедневно в Skype, Viber, Telegram, Whatsapp. 

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

Если вам нужно дать клиентам возможность общаться между собой в рамках одной закрытой площадки или создать пространство для безопасной передачи конфиденциальной информации, использовать публичные мессенджеры не получится. Довольно затруднительно одновременно администрировать неограниченное количество групп в публичных мессенджерах и контролировать состав участников и информации, передаваемой в группах.

В таком случае на помощь придут мессенджеры для бизнеса (MS Teams, Slack, Skype For Business и т.п.) и проекты с открытым исходным кодом, такие как RocketChat. Если вы их уже изучили и поняли, что они вам не подходят, задачу можно решить другим путем: создать собственный или корпоративный мессенджер. И это не так сложно, как может показаться.

Создание собственного мессенджера

Изначально мессенджер представляет собой как минимум два приложения: серверное и клиентское. Ваше приложение Whatsapp, Telegram, Skype, etc. — клиент, а еще есть серверное ПО, которое обеспечивает работу клиента. Чтобы сделать собственный или корпоративный мессенджер, нужно разработать также клиентскую и серверную части ПО.

Клиент может быть в виде веб-приложения, ПК-приложения или мобильного приложения. Современные технологии, такие как Portable Web Application (PWA) стирают грани между веб- и мобильными приложениями, поэтому мы рекомендовали бы начинать с веб-приложения. Более того, многие клиенты захотят использовать свой мессенджер с ПК, потому веб-версия  может решить задачи всех групп клиентов на старте, не ввязываясь в долгосрочную разработку всех типов приложений под все операционные системы (iOS, Android, Windows, разные версии Linux, MacOS, и т.п.).

Серверная часть мессенджера призвана обрабатывать весь поток сообщений от всех клиентов и работать в условиях большой нагрузки. Чтобы развернуть серверную часть, обычно требуются не просто мощные сервера, а облачные сервисы типа AWS или частные облака (private clouds). 

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

Создание мессенджера для Android и iOS

Системы Android и iOS дают возможность создавать приложения мессенджера независимо под каждую платформу (так называемые нативные приложения), а также импортировать, например, PWA или гибридное приложение. 

Если говорить о безопасности, вариант с разработкой нативых приложений предпочтителен. Сложные шаблоны аутентификации и подтверждения, что сообщение читает действительно тот, кому оно предназначено, не реализовать на PWA или гибридных приложениях. 

Однако, создавать приложения для мессенджера под каждую операционную систему накладно. Поэтому, если вы планируете запускать MVP или базовую версию своего продукта, лучше всё же использовать гибридные технологии или вообще запустить только веб-версию.

Хотите понять, стоит ли нужно ли вкладывать в разработку нативных приложений мессенджера или можно запустить веб-версию? Свяжитесь с нами, дадим точный ответ, который либо сэкономит вам деньги, либо поможет заработать в разы больше. 

Наш кейс: создание мессенджера. Чат платформы “Джерело” 

Мы в Evergreen разработали мессенджинговую платформу для школ. Платформа “Джерело” успешно внедрена в учебный процесс, сейчас ею пользуются ученики нескольких школ разного направления, общеобразовательной школы дистанционного обучения, а также автошколы. 

В платформе “Джерело” разработан внутренний чат для коммуникации между учителем и учениками. Функционал чата отличается для четырех типов пользователей. 

  1. Суперадмин может добавлять новую школу, создавать для нее каналы, пользователей и назначать их роли.
  2. Администратор вносит изменения в списки пользователей, добавляет новых юзеров, настраивает доступные к загрузке форматы файлов, создает/редактирует группы пользователей, чаты, курсы.
  3. Учитель общается с учениками в курсах, групповых и личных чатах, а также проводит занятия, в том числе интерактивные, при помощи интеграции с whiteboard.
  4. Ученик может общаться в групповых и личных чатах. 

В платформе также предусмотрен весь необходимый функционал мессенджинговой платформы, а именно: изменение пароля и данных профилей, восстановление доступов с помощью телефона или электронной почты, редактирование сообщений, поиск в переписке, отправка различных типов сообщений (смайлы, файлы, изображения, форматирование, ютуб).

Внутренний мессенджер платформы “Джерело” позволяет пользователям проходить процесс онлайн обучения с полноценной коммуникацией и фидбеком от учителей. 

Хотите разработать мессенджер для своего бизнеса? Напишите нам, и мы ответим на все ваши вопросы.

12.12.2019

Как создать свой собственный мессенджер - Вокруг-Дом

Мессенджеры - это программы, которые вы позволяете общаться в режиме реального времени с другими пользователями сети. Примерами мессенджеров являются MSN, AOL и Yahoo. Создание собственной программы обмена сообщениями включает применение сетевых и других функций компьютерного языка высокого уровня, такого как Java. Преимущества создания собственного приложения для обмена сообщениями включают возможность добавлять функции, которых нет в готовых мессенджерах. Например, вы можете предоставить функцию для извлечения веб-содержимого помимо текста чата, например сообщений из вашей учетной записи электронной почты.

Моделирование существующих программ обмена сообщениями экономит время и учит навыкам программирования.

Шаг 1

Запустите несколько программ мессенджера, исходный код которых доступен бесплатно (Это так называемые программы с открытым исходным кодом.) Примеры мессенджеров с открытым исходным кодом: Pandion, Valhalla Chat и PlanetAMessenger.

Шаг 2

Напишите - для мессенджера, который вы считаете идеальным - подробные заметки, описывающие, какие функции программы вы бы хотели настроить. Например, вы можете написать «Кнопки смайликов - это круто, но они должны быть на главном экране, а не в меню».

Шаг 3

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

Шаг 4

Внимательно прочитайте загруженную документацию, особо отметив язык, на котором была разработана программа (например, Java или C).

Шаг 5

Установите платформу для компиляции и отладки программ на языке, который вы отметили на предыдущем шаге. Oracle предоставляет платформу разработки Java на своем поддомене Java. Open Watcom, среди прочего, делает бесплатную платформу для разработки приложений на C.

Шаг 6

Загрузите исходные файлы программы обмена сообщениями, один за другим, в текстовый редактор, такой как Блокнот. Распечатайте каждый файл из текстового редактора.

Шаг 7

Введите в новый набор исходных файлов, созданных с помощью текстового редактора, исходный код программы обмена сообщениями. Эта задача заставляет вас прочитать печатный источник шага 6 с интенсивной концентрацией, которая начнет раскрывать, как работает программа.

Шаг 8

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

Шаг 9

Выберите в проводнике Windows исходные файлы мессенджера и нажмите «Удалить».

Шаг 10

Повторите ввод каждого исходного файла, как вы делали на шаге 7. В этом сеансе печати используйте вашу память в качестве основного ресурса, а не печатный исходный код. Используйте распечатки только тогда, когда вы забыли заявление. Повторяйте этот шаг, пока вы не сможете набрать программу мессенджера из памяти. Набор текста из памяти, а не из распечатки завершит ваше понимание программы мессенджера, которую вы начали создавать на шаге 7. Это понимание дает достаточно навыков для изменения и персонализации мессенджера.

Шаг 11

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

Мессенджер Нового Поколения (Часть 2) / Habr

Продолжение (Часть 1 ), Часть 3.

Функционал мессенджера для Андроид и 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 АТС компании — возможность для обычного пользователя делать прямые аудио/видео звонки в суппорт, техподдержку и т. д.

Бизнес аккаунты в названии имеют знак амперсанта @ и также попадают в отдельный раздел в мессенджере и создаются только администрацией.

TalkApp - Создание мессенджера

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

Сбор и использование персональной информации

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

От вас может быть запрошено предоставление вашей персональной информации в любой момент, когда вы связываетесь с нами.

Ниже приведены некоторые примеры типов персональной информации, которую мы можем собирать, и как мы можем использовать такую информацию.

Какую персональную информацию мы собираем:

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

Как мы используем вашу персональную информацию:

  • Собираемая нами персональная информация позволяет нам связываться с вами и сообщать об уникальных предложениях, акциях и других мероприятиях и ближайших событиях.
  • Время от времени, мы можем использовать вашу персональную информацию для отправки важных уведомлений и сообщений.
  • Мы также можем использовать персональную информацию для внутренних целей, таких как проведения аудита, анализа данных и различных исследований в целях улучшения услуг предоставляемых нами и предоставления Вам рекомендаций относительно наших услуг.
  • Если вы принимаете участие в розыгрыше призов, конкурсе или сходном стимулирующем мероприятии, мы можем использовать предоставляемую вами информацию для управления такими программами.

Раскрытие информации третьим лицам

Мы не раскрываем полученную от Вас информацию третьим лицам.

Исключения:

  • В случае если необходимо — в соответствии с законом, судебным порядком, в судебном разбирательстве, и/или на основании публичных запросов или запросов от государственных органов на территории РФ — раскрыть вашу персональную информацию. Мы также можем раскрывать информацию о вас если мы определим, что такое раскрытие необходимо или уместно в целях безопасности, поддержания правопорядка, или иных общественно важных случаях.
  • В случае реорганизации, слияния или продажи мы можем передать собираемую нами персональную информацию соответствующему третьему лицу – правопреемнику.

Защита персональной информации

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

Соблюдение вашей конфиденциальности на уровне компании

Для того чтобы убедиться, что ваша персональная информация находится в безопасности, мы доводим нормы соблюдения конфиденциальности и безопасности до наших сотрудников, и строго следим за исполнением мер соблюдения конфиденциальности.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *