По договоренности
По своей сути данный чат представляет из себя аналог «комнаты» стандартного чата: общение происходит не среди всех пользователей, а только среди определенных пользователей.
Что нужно сделать:
хранилище сообщений на базе HL блока
Компонент, который уведомляет пользователя о наличии новых сообщений. Компонент использует USER_ID
Компонент, который размещается на странице и отображает чат. Компонент использует CHAT_ROOM_ID
Также есть группа пользователей (например, «Сотрудники техподдержки») которые могут смотреть и писать в любой чат
Обмен данными через модуль push&pull
Сценарии работы:
Пользователь находится на странице с чатом, пишет сообщение. Система создает новый элемент в HL + отправляет сообщение во все открытые экземпляры с текущим CHAT_ROOM_ID + отправляет уведомления всем пользователям по USER_ID, кроме текущего. Каким пользователям отправлять за рамками данной задачи, условно говоря должна быть функция типа
get_users_chat_room(CHAT_ROOM_ID) которая возвращает массив ID пользователей и определяется в конкретном проекте (по умолчанию пусто).
Также в HL блоке может быть заполнено поле VERIFY_USER_ID
для этого get_verify_user_chat_room(CHAT_ROOM_ID, AUTOR_USER_ID) возвращает USER_ID и эта функция определяется для конкретного проекта (по умолчанию пусто)
2. пользователь заходит на страницу с чатом, на которой уже было общение. Система загружает последние 10 сообщений. если прокручивать сообщения вверх то они подгружаюся по 10 штук. Сообщения разбиты по датам.
Как я понимаю нужна функция типа get_past_messages(CHAT_ROOM_ID, ID, N)
где ID Id последнего отображенного сообщения, N количество предыдущих сообщений
3. Может быть добавлено системное сообщение, оно в чате выделяется цветом фона и шрифта
4. все сообщения имеют одинаковый формат:
Автор, время/дата создания, текст
Жду Ваших предложений по цене и срокам