Перейти к основному содержимому
Версия: 7.0

Чат

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

Чаты, диалоги и участники

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

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

Сообщения

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

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

Статусы и непрочитанные сообщения

Для каждой пары (сообщение, получатель) хранится статус доставки одного из трёх уровней:

СтатусЧто означает
ОтправленоСообщение зафиксировано на сервере
ДоставленоСообщение получено клиентом получателя
ПрочитаноПолучатель отметил сообщение прочитанным — как правило, открыв соответствующую форму чата

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

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

Системные сообщения

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

Push-уведомления

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

Формы

Платформа предоставляет две формы для работы с чатом:

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

Чат доступен как в web-, так и в desktop-клиенте и работает поверх одних и тех же данных. В ленте сообщений форматирование текста и ссылки отображаются автоматически.