TL; DR
Facebook-подобная система обмена сообщениями с Laravel / MySQL, где также гости могут отправлять сообщения агентам компании.Агенты компании могут начинать разговоры с зарегистрированными клиентами.
Полная информация
Я пытаюсь создать систему, которая позволяет зарегистрированному клиенту / гостю отправлять сообщения наагенты компании и наоборот, но я застрял в отношениях между отправителем / получателем сообщения и самим сообщением.
Это список требований к этой системе (я уже рассмотрел почти все пункты):
- Разрешить отправлять сообщения как зарегистрированным клиентам, так и гостям.Клиенты и гости могут отправлять сообщения только в отделы компании.Это означает, что клиенты не могут отправлять сообщения другим клиентам.
- При создании сообщения создатель должен указать, какой тип сообщения создается, выбрав параметр из списка категорий.
- Каждая категория должна быть получена «ролью» (таким образом, сообщения, связанные с выставлением счетов, будут получены финансовым отделом, сообщения поддержки будут получены службой поддержки клиентов и т. Д.).
- Сообщения могут поступать от 1) контактную форму, доступную на странице контактов веб-сайта, где спрашивают имя, фамилию, адрес электронной почты, номер телефона, тему и сообщение;и 2) электронные письма, отправленные пользователями (тогда система будет получать электронные письма через webhook и правильно их хранить).
- Все отделы могут в любое время связаться с любым пользователем (зарегистрированным или нет).Это означает, что они могут отвечать на сообщения, но также могут «начать» разговор (пример: сообщение с просьбой подтвердить / обновить данные).
Вот что у меня сейчас есть:
Это охватывает практически все, кроме отношений между пользователями и гостевыми сообщениями.
Каждое сообщение создается кем-то (зарегистрированным клиентом, зарегистрированным агентом компании илигость) и направляется кому-то (зарегистрированному клиенту в отдел, гостю в отдел, зарегистрированному агенту компании для зарегистрированного клиента или зарегистрированному агенту компании, отвечающему гостю).
Мой текущий подход заключается в использовании двухтаблицы: Guest
и User
.Таблица User
будет содержать как клиентов, так и агентов (это легко, мне просто нужно назначить соответствующую роль).Это означает, что мне нужно сохранить в таблице Message
тип sender_type (guest или user), sender_id (id), receive_type (guest или user) и receive_id.Но, например, когда Customer1 должен отправить сообщение в отдел выставления счетов, я не знаю, какой агент ответит на это сообщение.Означает ли это, что я должен хранить «ноль» в полях получателя?Это может привести к множеству строк с нулевыми столбцами.
Заранее спасибо