Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Разработка внутреннего мессенджераОбщий функционал похож на скайп. Слева контакты: пользователи, групповые чаты, "прикрепленные" чаты (обсуждения объектов, задач, событий, формируемых в других модулях), а также - в дальнейшем - контакты, подтянутые из сторонних мессенджеров по API. Сортировка - по важности и хронологии. Т.е. сообщения, помеченные как "экстренные" и "срочные" выталкивают контакт наверх, независимо от того, сколько "обычных" сообщений пришло позже.Все однажды начатые чаты хранятся в отдельной таблице и не удаляются (но могут быть помечены как "удаленные" юзером с соответствующими правами и не показываться в списке контактов).Каждый чат хранит следующую инфу:- ID- Тип чата (ниже)- id автора (создателя чата)- Тип объекта, к которому "привязан" чат (типы - отдельная таблица), 0 - ни к чему не привязан. Чат, привязанный к объекту 1, привязанный к объекту 2 и не привязанный ни к чему - это три разных чата, даже если участники одни и те же.- ID объекта (может быть пустым)- Время создания- Время последнего сообщения- список участников (отд. таблица).Типы чатов:- Диалог (юзер-юзер) - создается, как только один юзер написал другому.- Групповой - создается юзером по соответствующей кнопке "создать групповой чат" с последующим выбором участников. В чат можно добавлять участников в процессе, при этом он становится групповым. Если чат до этого был диалогом, диалог сохраняется неизменным, и формируется новый (пустой) групповой чат.- Привязанный - то же, что и групповой, но создается "извне".  Каждый юзер в системе имеет реквизиты своих мессенджеров, доступных по API, и может добавлять в чат контакты оттуда. Т.е. если в чате юзер1 и юзер2, затем юзер2 добавил своего абонента из ватсапа, то в чате участвуют трое, все сообщения попадают в чат и отсылаются в мессенджер добавленному абоненту.  Поскольку интеграция с мессенджерами будет выполняться позже, сейчас нужно предусмотреть следующий функционал: - таблица с типами мессенджеров: ID, название. - таблица с их реквизитами для юзеров: id юзера. id мессенджера. логин, пароль, дополнительные дланные (пока просто текстовое поле, что и как там будем хранить - будет зависеть от мессенджера). - Таблица с внешними контактами: юзер, мессенджер, имя контакта, доп инфа (свободное текстовое поле). - функция получения контактов юзера из выбранного мессенджера и функция отправки сообщения через выбранный мессенджер с аккаунта юзера определенному контакту - пока просто заготовки, пусть возвращают false.Функция создания чата должна принимать параметры: тип чата, тип объекта, id объекта, id юзера, список юзеров-участников, список "сторонних" контактов. Обязательный параметр - только тип. Возвращает ID созданного чата.Переписка: обычный текст, тэги сообщения (отдельная строка с функцией автозаполнения. можно последовательно выбрать несколько тэгов) плюс отправка файлов. Файлы складируются в папке attachments/files_messenger. В базе фиксируется каждое сообщение: id чата, юзера-отправителя, стороннего контакта-отправителя, дата-время (все даты в timestamp), id файла, приоритет. Для файлов отдельная таблица: id, источник (пока пусть будет 1 - чат, дальше будут и другие), оригинальное название, "внутреннее" название (формируется при сохранении, можно использовать uniquid или что-то другое, обеспечивающее уникальность) - под этим именем файл сохраняется на диске.Приоритет - обычное, срочное, экстренное.Настройки доступа: Есть специальный модуль plugins/p1001_options, страница nastrojki.html, где можно создать свой набор настроек, задаваемых отдельно для каждой группы пользователей. Эти настройки попадают в таблицы qx2_plugin_options (собственно описание настроек) и qx2_plugin_optval (их значения для групп). Дальше их можно использовать внутри плагина. При помощи этих настроек нужно организовать права доступа:- управление списком чатов: видны все чаты, фильтрация и сортировка по пользователю, типу/id объекта, дате создания, дате последнего сообщения. Возможность удалять чаты (не удалять физически. а помечать в базе как "удаленные", после чего юзеры перестают их видеть, но управляющий может восстановить)- отправка срочных и экстренных сообщенийФункции, используемые извне: создание чата (уже описывал), отправка сообщения в чат - указывается id чата, юзера-отправителя (0 - системное), собственно сообщение (текст, тэги, файл, статус). Возвращает true|falseпроверка новых сообщений для пользователя. Как лучше организовать (признак "прочитано", по времени захода юзера в чат/последнего сообщения в чате, или как-то еще) - без разницы, главное, чтобы функция возвращала ID сообщений, которых юзер еще не видел.

7 лет назад
Helions
35 лет
7 лет в сервисе
Был
4 года назад

Заявки фрилансеров

Нет заявок фрилансеров